- Komponenter krävs
- Kretsschema
- DHT11 temperatur- och luftfuktighetssensor
- Programmering av NodeMCU ESP8266 Övervakning av levande temperatur och fuktighet
Mikrokontroller har litet internt minne som inte räcker för att spara sensorer genererad data under lång tid, antingen måste du använda någon extern minnesenhet eller så kan du spara informationen på ett moln med internet. Det blir också svårt att hantera någon gång när sensorn distribueras på en plats med extrema tillstånd där människan inte kan nå eller det är svårt att besöka det ofta. För att rätta till den här typen av problem tittar vi alltid på hur vi vill övervaka sensordata i realtid var som helst utan någon fysisk närvaro på den platsen.
De realtidsdatabaser kan användas i detta scenario där vi måste bara gränssnitt någon regulator som kan anslutas till internet och kan kunna utbyta data med moln server. Serverdata kan vara användbara vid övervakning av systembeteende i realtid, databasanalys, statistisk analys och bearbetning och tolkning för framtida användningsfall. Det finns många IoT-maskinvaruplattformar och molnplattformar tillgängliga för att tjäna detta syfte. Om du har svårt att hitta rätt plattform för din IoT-applikation, följ länken.
Tidigare täckte vi redan ThingSpeak, Adafruit IO och många andra IoT-programvaror. Idag kommer vi att bygga liknande projekt där vi använder en temperatur- och luftfuktighetssensor DHT11 och en NodeMCU ESP8266-modul för att logga temperatur och fuktighet i realtid på Googles Firebase-databasserver.
Vi delar upp projektet i två avsnitt. För det första börjar vi med att montera hårdvarukomponenterna och ladda upp firmware till den. Och för det andra kommer vi att använda Firebase för att konfigurera med NodeMCU för att utbyta realtidsdata. Om du är ny på ESP8266 eller Firebase, följ vår tidigare handledning om hur du kontrollerar LED med Firebase.
Komponenter krävs
- NodeMCU ESP8266-modul
- DHT11 temperatur- och luftfuktighetssensor
Kretsschema
DHT11 temperatur- och luftfuktighetssensor
DHT11-modulen har ett fukt- och temperaturkomplex med en kalibrerad digital signalutgång, vilket betyder att DHT11-sensormodulen är en kombinerad modul för att känna av fukt och temperatur som ger en kalibrerad digital utsignal. DHT11 ger oss mycket exakta värden på fuktighet och temperatur och säkerställer hög tillförlitlighet och långsiktig stabilitet. Denna sensor har en resistiv typ av fuktighetsmätningskomponent och NTC-typ temperaturmätkomponent med en 8-bitars inbyggd mikrokontroller som har ett snabbt svar och kostnadseffektivt och tillgängligt i 4-stifts paket med en rad.
Vi använde tidigare ESP12E för att uppdatera DHT11-avläsningarna på webservern, förutom att du kan kontrollera alla DHT11-baserade projekt där vi har använt DHT11 för att gränssnitt med många andra mikrokontroller som Arduino, PIC, Raspberry och byggd väderstation med dem.
Programmering av NodeMCU ESP8266 Övervakning av levande temperatur och fuktighet
Komplett program med fungerande video ges i slutet. Här förklarar vi några viktiga delar av koden.
Inkludera först biblioteken för att använda ESP8266 och firebase.
#omfatta
Ladda ner och installera biblioteken genom att följa länkarna nedan:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Om du får fel om att ArduinoJson.h-biblioteket inte är installerat under kompileringen , vänligen installera det med länken ovan.
Vi kommer att programmera NodeMCU för att ta avläsningar från DHT11-sensorn och skjuta den till Firebase var 5: e intervall. Vi kommer att ställa in en väg för att skicka data. Just nu två parametrar, nämligen. luftfuktighet och temperatur skickas i samma föräldersväg och olika barnväg.
Dessa två parametrar är mycket viktiga för att kommunicera med firebase. Att ställa in dessa parametrar möjliggör datautbyte mellan och ESP8266 och firebase. För att hitta dessa parametrar för ditt projekt, följ vår tidigare handledning om Firebase Setup.
#define FIREBASE_HOST "your-project.firebaseio.com" // projektets namnadress från firebase-id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // den hemliga nyckeln som genereras från firebase
Efter att ha hittat referenserna har du bara ersatt den i ovanstående kod.
Ange ditt Wi-Fi SSID och lösenord för att ansluta till ditt nätverk.
#define WIFI_SSID "network_name" // mata in ditt hem- eller offentliga wifi-namn #define WIFI_PASSWORD "lösenord" // lösenord för wifi ssid
Definiera DHT-datapinnen i NodeMCU. Du kan använda valfri Digital GPIO-stift i NodeMCU.
#define DHTPIN D4
DHT-biblioteket är gjord för alla DHT-varianter och levereras med alternativet vilken DHT-sensor du vill använda för t.ex. DHT11 eller DHT22. Välj bara rätt DHT-sensor och fortsätt.
#define DHTTYPE DHT11 // välj dht-typ som DHT 11 eller DHT22 DHT dht (DHTPIN, DHTTYPE);
Anslut till det valda Wi-Fi-nätverket och anslut också till Firebase-databasservern.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Börja läsa vid stift D4 i NodeMCU.
dht.begin ();
Ta fukt- och temperaturvärden från DHT-sensorn och spara som flytvärde.
float h = dht.readHumidity (); // Avläsningstemperatur eller luftfuktighet tar cirka 250 millisekunder! float t = dht.readTemperature (); // Läs temperatur som Celsius (standard)
Bara kontrollera om DHT sensorn är korrekt installerat eller det inte är skadad och controller kan läsa avläsningar från den. Om avläsningarna inte visas är sensorn troligtvis skadad, visa bara ett felmeddelande och återvänd för att kontrollera igen utan att gå vidare.
if (isnan (h) - isnan (t)) {// Kontrollera om några läsningar misslyckades och avsluta tidigt (för att försöka igen). Serial.println (F ("Det gick inte att läsa från DHT-sensorn!"); lämna tillbaka; }
Skriv ut sensordata i seriell bildskärm för felsökning och spara värdena på temperatur och fuktighet i strängform för att skicka detta till eldstaden. Observera också att den minsta fördröjningen som krävs mellan två avläsningar från DHT11-sensorn är 2 sekunder, så använd alltid fördröjning större än 2 sekunder. Om du vill veta mer om DHT11 kan du titta på det officiella databladet.
Serial.print ("Luftfuktighet:"); Serial.print (h); Sträng fireHumid = Sträng (h) + Sträng ("%"); // konvertera heltalsfuktighet till strängfuktighet Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); Sträng fireTemp = Sträng (t) + Sträng ("° C"); fördröjning (4000);
Äntligen skicka temperatur- och luftfuktighetsdata till firebase på sökvägen "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // ställa in sökväg och skicka avläsningar Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // installationsväg och skicka avläsningar
Du kan se all data i ditt Firebase-konto. Gå bara till avsnittet " Databas " i " Ditt projekt " på " Min konsol " i Firebase.
För att ställa in Firebase för att skicka och övervaka data kan du hänvisa till vår tidigare handledning.
Komplett kod och video för denna IoT-baserade temperatur- och luftfuktighetsövervakning ges nedan.