Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // DHT Temperature & Humidity Sensor
- // Unified Sensor Library Example
- // Originally Written by Tony DiCola for Adafruit Industries
- // Released under an MIT license.
- // Modified by G.D. Walters for Full Circle Magazine
- // April, 2017
- // Depends on the following Arduino libraries:
- // - Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor
- // - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
- #include <Adafruit_Sensor.h>
- #include <DHT.h>
- #include <DHT_U.h>
- #include <SoftwareSerial.h>
- #define bluetoothTx 2 // TX-O pin of bluetooth module, Arduino D2
- #define bluetoothRx 3 // RX-I pin of bluetooth module, Arduino D3
- #define DHTPIN 4 // Pin which is connected to the DHT sensor
- int led = 13;
- int buttonPin1 = 7;
- int buttonPin2 = 8;
- int button1State = 0;
- int button2State = 0;
- int dataFromBt;
- boolean lightBlink = false;
- SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
- // Uncomment the type of sensor in use:
- //#define DHTTYPE DHT11 // DHT 11
- #define DHTTYPE DHT22 // DHT 22 (AM2302)
- //#define DHTTYPE DHT21 // DHT 21 (AM2301)
- DHT_Unified dht(DHTPIN, DHTTYPE);
- uint32_t delayMS;
- void setup() {
- Serial.begin(9600);
- // Initialize device.
- dht.begin();
- Serial.println("DHTxx Unified Sensor Example");
- // Print temperature sensor details.
- sensor_t sensor;
- dht.temperature().getSensor(&sensor);
- // Print humidity sensor details.
- dht.humidity().getSensor(&sensor);
- delayMS = sensor.min_delay / 1000;
- // Bluetooth Setup
- bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
- bluetooth.print("$"); // Print three times individually
- bluetooth.print("$");
- bluetooth.print("$"); // Enter command mode
- delay(100); // Short delay, wait for the Mate to send back CMD
- bluetooth.println("U,9600,N"); // Temporarily Change the baudrate to 9600, no parity
- // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
- bluetooth.begin(9600); // Start bluetooth serial at 9600
- pinMode(led, OUTPUT);
- pinMode(buttonPin1, INPUT);
- pinMode(buttonPin2, INPUT);
- }
- void loop() {
- handleBluetooth();
- }
- void handleBluetooth() {
- if(bluetooth.available()) // If the bluetooth sent any characters
- {
- sensors_event_t event;
- dataFromBt = bluetooth.read();
- switch (dataFromBt) {
- case 'T':
- case 't':
- dht.temperature().getEvent(&event);
- if (isnan(event.temperature)) {
- bluetooth.println(" Error reading temperature!");
- } else {
- bluetooth.print("Temperature: ");
- bluetooth.print(event.temperature);
- bluetooth.print(" *C - ");
- bluetooth.print((event.temperature * 1.8) + 32);
- bluetooth.println(" *F");
- }
- delay(delayMS);
- break;
- case 'H':
- case 'h':
- // get humidity
- dht.humidity().getEvent(&event);
- if (isnan(event.relative_humidity)) {
- bluetooth.println("Error reading temperature!");
- } else {
- bluetooth.print("Humidity: ");
- bluetooth.print(event.relative_humidity);
- bluetooth.println("%");
- }
- delay(delayMS);
- break;
- case 'B':
- case 'b':
- // Barometric
- bluetooth.println("Barometric Pressure not yet supported");
- delay(delayMS);
- break;
- case 'A':
- case 'a':
- // All data
- dht.temperature().getEvent(&event);
- if (isnan(event.temperature)) {
- bluetooth.println(" Error reading temperature!");
- } else {
- bluetooth.print("Temperature: ");
- bluetooth.print(event.temperature);
- bluetooth.print(" *C - ");
- bluetooth.print((event.temperature * 1.8) + 32);
- bluetooth.println(" *F");
- }
- dht.humidity().getEvent(&event);
- if (isnan(event.relative_humidity)) {
- bluetooth.println("Error reading temperature!");
- } else {
- bluetooth.print("Humidity: ");
- bluetooth.print(event.relative_humidity);
- bluetooth.println("%");
- }
- delay(delayMS);
- break;
- default:
- break;
- }
- }
- }
- void handleSerial() {
- while (Serial.available() > 0) {
- char inChar = Serial.read();
- switch (inChar) {
- case 'T':
- case 't':
- // get temp
- sensors_event_t event;
- dht.temperature().getEvent(&event);
- if (isnan(event.temperature)) {
- Serial.println("Error reading temperature!");
- }
- else {
- Serial.print("Temperature: ");
- Serial.print(event.temperature);
- Serial.print(" *C - ");
- Serial.print((event.temperature * 1.8) + 32);
- Serial.println(" *F");
- }
- // Delay between measurements.
- delay(delayMS);
- break;
- case 'H':
- case 'h':
- // get humidity
- dht.humidity().getEvent(&event);
- if (isnan(event.relative_humidity)) {
- Serial.println("Error reading humidity!");
- }
- else {
- Serial.print("Humidity: ");
- Serial.print(event.relative_humidity);
- Serial.println("%");
- }
- // Delay between measurements.
- delay(delayMS);
- break;
- default:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement