- Componente necesare
- Diagrama circuitului
- Senzor de temperatură și umiditate DHT11
- Programare NodeMCU ESP8266 Monitorizare temperatură și umiditate în direct
Microcontrolerele au o memorie internă mică, care nu este suficientă pentru a salva datele generate de senzori pentru o perioadă lungă de timp, fie că trebuie să utilizați un dispozitiv de memorie extern, fie să salvați datele pe unele cloud folosind internetul. De asemenea, uneori devine dificil de gestionat atunci când senzorul este instalat într-un loc cu condiții extreme în care omul nu poate ajunge sau este dificil să îl vizitați frecvent. Pentru a remedia acest tip de probleme, ne uităm întotdeauna la modalitățile prin care dorim să monitorizăm datele senzorilor în timp real de oriunde, fără prezența fizică în acel loc.
De baze de date în timp real pot fi utilizate în acest scenariu în cazul în care trebuie doar să interfață unele controler care pot fi conectate la internet și poate fi capabil de a face schimb de date cu serverul cloud. Datele serverului pot fi utile în monitorizarea comportamentului sistemului în timp real, analiza bazei de date, analiza și prelucrarea statistică și interpretarea pentru cazurile de utilizare viitoare. Există o mulțime de platforme hardware IoT și platforme cloud disponibile în acest scop. Dacă întâmpinați dificultăți în găsirea platformei potrivite pentru aplicația dvs. IoT, urmați linkul.
Anterior am acoperit deja ThingSpeak, Adafruit IO și multe alte software IoT. Astăzi vom construi un proiect similar în care vom folosi un senzor de temperatură și umiditate DHT11 și un modul NodeMCU ESP8266 pentru a înregistra temperatura și umiditatea în timp real pe serverul de baze de date Google Firebase.
Vom împărți proiectul în două secțiuni. În primul rând, vom începe cu asamblarea componentelor hardware și încărcarea firmware-ului în ea. Și în al doilea rând vom folosi Firebase pentru a configura cu NodeMCU pentru a face schimb de date în timp real. Dacă nu sunteți nou în ESP8266 sau Firebase, urmați tutorialul nostru anterior privind controlul LED-ului folosind Firebase.
Componente necesare
- Modul NodeMCU ESP8266
- Senzor de temperatură și umiditate DHT11
Diagrama circuitului
Senzor de temperatură și umiditate DHT11
Modulul DHT11 prezintă un complex de umiditate și temperatură cu un semnal digital de ieșire calibrat înseamnă că modulul senzor DHT11 este un modul combinat pentru detectarea umidității și temperaturii, care oferă un semnal de ieșire digital calibrat. DHT11 ne oferă o valoare foarte precisă a umidității și temperaturii și asigură o fiabilitate ridicată și stabilitate pe termen lung. Acest senzor are o componentă de măsurare a umidității de tip rezistiv și o componentă de măsurare a temperaturii de tip NTC cu un microcontroler de 8 biți încorporat, care are un răspuns rapid și eficient din punct de vedere al costurilor și este disponibil în pachet cu 4 pini cu un singur rând.
Am folosit anterior ESP12E pentru a actualiza citirile DHT11 pe serverul web, în afară de faptul că puteți verifica toate proiectele bazate pe DHT11 în care am folosit DHT11 pentru a interfața cu multe alte microcontrolere precum Arduino, PIC, Raspberry și a construit stația meteo folosindu-le.
Programare NodeMCU ESP8266 Monitorizare temperatură și umiditate în direct
Programul complet cu Video de lucru este dat la sfârșit. Aici explicăm câteva părți importante ale codului.
În primul rând, includeți bibliotecile pentru utilizarea ESP8266 și firebase.
#include
Descărcați și instalați bibliotecile urmând linkurile de mai jos:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
În timpul compilării , dacă apare o eroare că biblioteca ArduinoJson.h nu este instalată, vă rugăm să o instalați folosind linkul de mai sus.
Vom programa NodeMCU pentru a prelua citiri de la senzorul DHT11 și îl vom împinge la Firebase la fiecare 5 secunde din interval. Vom stabili o cale pentru împingerea datelor. Chiar acum doi parametri și anume. umiditatea și temperatura sunt trimise pe același traseu părinte și pe un traseu copil diferit.
Acești doi parametri sunt foarte importanți pentru a comunica cu Firebase. Setarea acestor parametri va permite schimbul de date între ESP8266 și firebase. Pentru a găsi acești parametri pentru proiectul dvs., urmați tutorialul nostru anterior privind configurarea Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // numele proiectului adresa din ID-ul firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // cheia secretă generată din firebase
După ce ați găsit acreditările, înlocuiți codul de mai sus.
Introduceți SSID-ul Wi-Fi și parola pentru a vă conecta la rețea.
#define WIFI_SSID "network_name" // introduceți numele de acasă sau numele dvs. public wifi #define WIFI_PASSWORD "password" // parola wifi ssid
Definiți pinul de date DHT în NodeMCU. Puteți utiliza orice pin GPIO digital în NodeMCU.
#define DHTPIN D4
Biblioteca DHT este făcută pentru toate variantele DHT și vine cu opțiunea pe care senzorul DHT pe care doriți să îl utilizați, de exemplu DHT11 sau DHT22. Alegeți senzorul DHT potrivit și continuați.
#define DHTTYPE DHT11 // selectați tipul dht ca DHT 11 sau DHT22 DHT dht (DHTPIN, DHTTYPE);
Conectați-vă la rețeaua Wi-Fi selectată și, de asemenea, conectați-vă la serverul de baze de date firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Începeți să citiți la pinul D4 al NodeMCU.
dht.begin ();
Luați citirile de umiditate și temperatură de la senzorul DHT și salvați ca valoare float.
float h = dht.readHumidity (); // Temperatura de citire sau umiditatea durează aproximativ 250 de milisecunde! float t = dht.readTemperature (); // Citiți temperatura în grade Celsius (implicit)
Verificați doar dacă senzorul DHT este bine conectat sau dacă nu este deteriorat și controlerul poate citi citirile din acesta. Dacă citirile nu sunt afișate, probabil că senzorul este deteriorat, trebuie doar să afișați un mesaj de eroare și să reveniți pentru a verifica din nou fără a continua.
if (isnan (h) - isnan (t)) {// Verificați dacă citirile au eșuat și ieșiți devreme (pentru a încerca din nou). Serial.println (F ("Nu s-a citit de la senzorul DHT!")); întoarcere; }
Imprimați datele senzorului pe monitorul serial pentru depanare și salvați valorile temperaturii și umidității sub formă de șir pentru a le trimite la Firebase. De asemenea, rețineți că întârzierea minimă necesară între două citiri de la senzorul DHT11 este de 2 secunde, deci utilizați întotdeauna întârzierea mai mare de 2 secunde. Pentru a afla mai multe despre DHT11, puteți consulta fișa de date oficială.
Serial.print ("Umiditate:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // convertiți umiditatea întreagă în umiditatea șirului Serial.print ("% Temperatură:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); întârziere (4000);
În cele din urmă, trimiteți datele de temperatură și umiditate la firebase pe calea „your-project.firebaseio.com/DHT11/Humidity/”.
Firebase.pushString ("/ DHT11 / Umiditate", fireHumid); // configurați calea și trimiteți lecturi Firebase.pushString ("/ DHT11 / Temperatură", fireTemp); // configurați calea și trimiteți lecturi
Puteți vedea toate datele din contul dvs. Firebase. Accesați secțiunea „ Baza de date ” din „ Proiectul dvs. ” la „ Consola mea ” din Firebase.
Pentru a configura Firebase pentru trimiterea și monitorizarea datelor, puteți consulta tutorialul nostru anterior.
Codul complet și videoclipul pentru această monitorizare a temperaturii și a umidității bazate pe IoT sunt prezentate mai jos.