ESP8266 IoT Platform using Firebase
This is an easy way to do real-time monitoring with the DHT22/DHT11.
Components and supplies
1
Breadboard (generic)
1
NodeMCU ESP8266 Breakout Board
1
Jumper wires (generic)
1
High Brightness LED, White
1
DHT22 temperature-humidity sensor
Apps and platforms
1
MIT App Inventor 2
1
Firebase
1
Arduino IDE
Project description
Code
Code
c_cpp
1//FirebaseESP8266.h must be included before ESP8266WiFi.h 2#include "FirebaseESP8266.h" // Install Firebase ESP8266 library 3#include <ESP8266WiFi.h> 4#include <DHT.h> //install DHT Library and Adafruit Unified Sensor Library 5 6 7#define FIREBASE_HOST "Can be found at Database>Realtime Database at the top" //Without http:// or https:// schemes 8#define FIREBASE_AUTH "Can be found in Settings>Service Accounts>Database Secrets" 9#define WIFI_SSID "***" 10#define WIFI_PASSWORD "***" 11 12#define DHTPIN 4 // Connect Data pin of DHT to D2 13int led = 14; // Connect LED to D5 14 15#define DHTTYPE DHT22 16DHT dht(DHTPIN, DHTTYPE); 17 18//Define FirebaseESP8266 data object 19FirebaseData firebaseData; 20FirebaseData ledData; 21 22FirebaseJson json; 23 24 25void setup() 26{ 27 28 Serial.begin(9600); 29 30 dht.begin(); 31 pinMode(led,OUTPUT); 32 33 WiFi.begin(WIFI_SSID, WIFI_PASSWORD); 34 Serial.print("Connecting to Wi-Fi"); 35 while (WiFi.status() != WL_CONNECTED) 36 { 37 Serial.print("."); 38 delay(300); 39 } 40 Serial.println(); 41 Serial.print("Connected with IP: "); 42 Serial.println(WiFi.localIP()); 43 Serial.println(); 44 45 Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); 46 Firebase.reconnectWiFi(true); 47 48} 49 50void sensorUpdate(){ 51 // Reading temperature or humidity takes about 250 milliseconds! 52 // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) 53 float h = dht.readHumidity(); 54 // Read temperature as Celsius (the default) 55 float t = dht.readTemperature(); 56 // Read temperature as Fahrenheit (isFahrenheit = true) 57 float f = dht.readTemperature(true); 58 59 // Check if any reads failed and exit early (to try again). 60 if (isnan(h) || isnan(t) || isnan(f)) { 61 Serial.println(F("Failed to read from DHT sensor!")); 62 return; 63 } 64 65 Serial.print(F("Humidity: ")); 66 Serial.print(h); 67 Serial.print(F("% Temperature: ")); 68 Serial.print(t); 69 Serial.print(F("C ,")); 70 Serial.print(f); 71 Serial.println(F("F ")); 72 73 if (Firebase.setFloat(firebaseData, "/FirebaseIOT/temperature", t)) 74 { 75 Serial.println("PASSED"); 76 Serial.println("PATH: " + firebaseData.dataPath()); 77 Serial.println("TYPE: " + firebaseData.dataType()); 78 Serial.println("ETag: " + firebaseData.ETag()); 79 Serial.println("------------------------------------"); 80 Serial.println(); 81 } 82 else 83 { 84 Serial.println("FAILED"); 85 Serial.println("REASON: " + firebaseData.errorReason()); 86 Serial.println("------------------------------------"); 87 Serial.println(); 88 } 89 90 if (Firebase.setFloat(firebaseData, "/FirebaseIOT/humidity", h)) 91 { 92 Serial.println("PASSED"); 93 Serial.println("PATH: " + firebaseData.dataPath()); 94 Serial.println("TYPE: " + firebaseData.dataType()); 95 Serial.println("ETag: " + firebaseData.ETag()); 96 Serial.println("------------------------------------"); 97 Serial.println(); 98 } 99 else 100 { 101 Serial.println("FAILED"); 102 Serial.println("REASON: " + firebaseData.errorReason()); 103 Serial.println("------------------------------------"); 104 Serial.println(); 105 } 106} 107void loop() { 108 sensorUpdate(); 109 110 if (Firebase.getString(ledData, "/FirebaseIOT/led")){ 111 Serial.println(ledData.stringData()); 112 if (ledData.stringData() == "1") { 113 digitalWrite(led, HIGH); 114 } 115 else if (ledData.stringData() == "0"){ 116 digitalWrite(led, LOW); 117 } 118 } 119 delay(100); 120}
Downloadable files
diagram
diagram
diagram
diagram
Comments
Only logged in users can leave comments