- Komponenter kreves
- Kretsdiagram
- DHT11 temperatur- og fuktighetssensor
- Programmering av NodeMCU ESP8266 Overvåking av live temperatur og fuktighet
Mikrokontrollere har lite internt minne som ikke er nok til å lagre sensorer generert data i lang tid, enten må du bruke noen eksterne minneenheter eller kan lagre dataene på en eller annen sky ved hjelp av internett. En gang blir det også vanskelig å administrere når sensoren er utplassert på et sted med ekstreme forhold der mennesker ikke kan nå eller det er vanskelig å besøke der ofte. For å rette opp denne typen problemer, ser vi alltid på måtene vi vil overvåke sensordataene i sanntid hvor som helst uten fysisk tilstedeværelse på det stedet.
De sanntid databaser kan brukes i dette scenariet der vi bare nødt til å samhandle noen kontroller som kan kobles til internett og kan være i stand til å utveksle data med cloud server. Serverdataene kan være nyttige for å overvåke sanntids systematferd, databaseanalyse, statistisk analyse og prosessering og tolkning for fremtidig brukstilfelle. Det er mange IoT-maskinvareplattformer og skyplattformer tilgjengelig for å tjene dette formålet. Hvis du finner problemer med å finne den rette plattformen for IoT-applikasjonen din, så følg lenken.
Tidligere dekket vi allerede ThingSpeak, Adafruit IO og mange andre IoT-programvare. I dag skal vi bygge et lignende prosjekt der vi bruker en temperatur- og fuktighetssensor DHT11 og en NodeMCU ESP8266-modul for å logge temperatur og fuktighet i sanntid på Googles Firebase-databaseserver.
Vi vil dele prosjektet i to seksjoner. For det første vil vi begynne med å montere maskinvarekomponentene og laste opp firmware til den. Og for det andre vil vi bruke Firebase til å konfigurere med NodeMCU for å utveksle sanntidsdata. Hvis du er ny i ESP8266 eller Firebase, følg vår forrige opplæring om å kontrollere LED ved hjelp av Firebase.
Komponenter kreves
- NodeMCU ESP8266-modul
- DHT11 temperatur- og fuktighetssensor
Kretsdiagram
DHT11 temperatur- og fuktighetssensor
DHT11-modulen har et fuktighets- og temperaturkompleks med et kalibrert digitalt signalutgang, noe som betyr at DHT11-sensormodulen er en kombinert modul for å registrere fuktighet og temperatur som gir et kalibrert digitalt utgangssignal. DHT11 gir oss veldig nøyaktig verdi av fuktighet og temperatur og sørger for høy pålitelighet og langvarig stabilitet. Denne sensoren har en resistiv type fuktighetsmålingskomponent og temperaturmålingskomponent av NTC-typen med en innebygd 8-biters mikrokontroller som har rask respons og er kostnadseffektiv og tilgjengelig i 4-pinners enkelradepakke.
Vi brukte tidligere ESP12E for å oppdatere DHT11-avlesningene på webserveren, bortsett fra at du kan sjekke alle DHT11-baserte prosjekter der vi har brukt DHT11 til å grensesnitt med mange andre mikrokontrollere som Arduino, PIC, Raspberry og bygget værstasjon ved hjelp av dem.
Programmering av NodeMCU ESP8266 Overvåking av live temperatur og fuktighet
Komplett program med fungerende video er gitt til slutt. Her forklarer vi noen viktige deler av koden.
Først må du inkludere bibliotekene for bruk av ESP8266 og firebase.
#inkludere
Last ned og installer bibliotekene ved å følge koblingene nedenfor:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Hvis du får feil når ArduinoJson.h-biblioteket ikke er installert mens du kompilerer , må du installere det ved hjelp av lenken gitt ovenfor.
Vi programmerer NodeMCU til å ta avlesninger fra DHT11-sensoren og skyve den til Firebase hvert 5. sekund i intervallet. Vi vil sette en vei for å skyve data. Akkurat nå to parametere, nemlig. fuktighet og temperatur sendes i samme foreldresti og annen sti.
Disse to parametrene er veldig viktige for å kommunisere med firebase. Hvis du setter disse parametrene, blir datautvekslingen mellom og ESP8266 og firebase mulig. For å finne disse parametrene for prosjektet ditt, følg vår forrige opplæring om Firebase Setup.
#define FIREBASE_HOST "your-project.firebaseio.com" // prosjektnavnet adresse fra firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // den hemmelige nøkkelen generert fra firebase
Etter å ha funnet legitimasjonen, er det bare å erstatte i koden ovenfor.
Skriv inn Wi-Fi SSID og passord for å koble til nettverket ditt.
#define WIFI_SSID "network_name" // input your home or public wifi name #define WIFI_PASSWORD "password" // password of wifi ssid
Definer DHT-datapinnen i NodeMCU. Du kan bruke hvilken som helst Digital GPIO-pin i NodeMCU.
#definer DHTPIN D4
DHT-biblioteket er laget for alle DHT-varianter og leveres med alternativet hvilken DHT-sensor du vil bruke til f.eks. DHT11 eller DHT22. Bare velg riktig DHT-sensor og fortsett.
#define DHTTYPE DHT11 // velg dht-type som DHT 11 eller DHT22 DHT dht (DHTPIN, DHTTYPE);
Koble til det valgte Wi-Fi-nettverket, og koble også til firebase-databaseserveren.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Begynn å lese på pin D4 i NodeMCU.
dht.begin ();
Ta fuktighets- og temperaturmålinger fra DHT-sensoren og lagre som flyteverdi.
flyte h = dht.readHumidity (); // Lesetemperatur eller fuktighet tar omtrent 250 millisekunder! flyte t = dht.readTemperature (); // Les temperatur som Celsius (standard)
Bare sjekk om DHT-sensoren er riktig kablet eller at den ikke er skadet, og at kontrolleren kan lese avlesninger fra den. Hvis målingene ikke vises, er sannsynligvis sensoren skadet, bare vis en feilmelding og gå tilbake for å sjekke igjen uten å gå videre.
if (isnan (h) - isnan (t)) {// Sjekk om noen lesinger mislyktes, og avslutt tidlig (for å prøve igjen). Serial.println (F ("Kunne ikke lese fra DHT-sensor!"); komme tilbake; }
Skriv ut sensordata i seriell skjerm for feilsøking og lagre temperatur- og fuktighetsverdiene i strengform for å sende dette til ildstedet. Vær også oppmerksom på at minimumsforsinkelsen som kreves mellom to målinger fra DHT11-sensoren er 2 sekunder, så bruk alltid forsinkelse større enn 2 sekunder. For å vite mer om DHT11 kan du se på det offisielle databladet.
Serial.print ("Fuktighet:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // konverter heltallfuktighet til strengfuktighet Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); forsinkelse (4000);
Til slutt sender du temperatur- og fuktighetsdataene til firebase på banen “your-project.firebaseio.com/DHT11/Humidity/”.
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // oppsettsti og sende avlesninger Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // oppsettsti og sende avlesninger
Du kan se alle dataene i firebase-kontoen din. Bare gå til " Database " -delen i " Ditt prosjekt " på " Min konsoll " I Firebase.
For å konfigurere Firebase for sending og overvåking av data kan du se vår forrige opplæring.
Komplett kode og video for denne IoT-baserte temperatur- og fuktighetsovervåking er gitt nedenfor.