- Potrebne komponente
- Shema vezja
- DHT11 Senzor temperature in vlage
- Programiranje NodeMCU ESP8266 Spremljanje temperature in vlažnosti v živo
Mikrokrmilniki imajo majhen notranji pomnilnik, kar ni dovolj za dolgoročno shranjevanje podatkov, ustvarjenih s senzorji, bodisi morate uporabiti neko zunanjo pomnilniško napravo ali pa podatke shraniti v neki oblak z uporabo interneta. Prav tako je včasih težko upravljati, ko je senzor nameščen na nekem ekstremnem mestu, kamor človek ne more priti ali ga je težko pogosto obiskati. Da bi odpravili tovrstne težave, vedno preučujemo načine, kako želimo podatke senzorja spremljati v realnem času od koder koli brez kakršne koli fizične prisotnosti na tem mestu.
V tem primeru lahko uporabimo podatkovne zbirke v realnem času, kjer moramo samo povezati krmilnik, ki je lahko povezan z internetom in lahko izmenjuje podatke s strežnikom v oblaku. Podatki strežnika so lahko koristni pri spremljanju obnašanja sistema v realnem času, analitiki baz podatkov, statistični analizi in obdelavi ter interpretaciji za prihodnjo uporabo. V ta namen je na voljo veliko strojne platforme IoT in platforme v oblaku. Če naletite na težave pri iskanju prave platforme za vašo IoT aplikacijo, sledite povezavi.
Prej smo že pokrivali ThingSpeak, Adafruit IO in številne druge IoT programske opreme. Danes bomo gradili podoben projekt, kjer bomo uporabili senzor temperature in vlažnosti DHT11 in modul NodeMCU ESP8266 za beleženje temperature in vlage v realnem času na Googlovem strežniku zbirke podatkov Firebase.
Projekt bomo razdelili na dva dela. Najprej bomo začeli s sestavljanjem komponent strojne opreme in nalaganjem strojne programske opreme vanjo. In drugič, Firebase bomo uporabili za nastavitev z NodeMCU za izmenjavo podatkov v realnem času. Če še ne poznate ESP8266 ali Firebase, sledite našim prejšnjim navodilom o nadzoru LED z uporabo Firebase.
Potrebne komponente
- NodeMCU ESP8266 modul
- DHT11 Senzor temperature in vlage
Shema vezja
DHT11 Senzor temperature in vlage
Modul DHT11 ima kompleks vlage in temperature s kalibriranim digitalnim izhodnim signalom, kar pomeni, da je senzorski modul DHT11 kombiniran modul za zaznavanje vlažnosti in temperature, ki daje kalibriran digitalni izhodni signal. DHT11 nam daje zelo natančno vrednost vlažnosti in temperature ter zagotavlja visoko zanesljivost in dolgoročno stabilnost. Ta senzor ima uporovno komponento za merjenje vlažnosti in NTC komponento za merjenje temperature z vgrajenim 8-bitnim mikrokrmilnikom, ki ima hiter odziv in stroškovno učinkovit ter na voljo v 4-polnem enovrstnem paketu.
Pred tem smo uporabili ESP12E za posodabljanje odčitkov DHT11 na spletnem strežniku, razen tega, da lahko preverite vse projekte, ki temeljijo na DHT11, kjer smo DHT11 uporabljali za povezovanje z mnogimi drugimi mikrokrmilniki, kot so Arduino, PIC, Raspberry in vgrajena vremenska postaja z njihovo uporabo.
Programiranje NodeMCU ESP8266 Spremljanje temperature in vlažnosti v živo
Na koncu je podan celoten program z delujočim videom. Tukaj razlagamo nekaj pomembnih delov kode.
Najprej vključite knjižnice za uporabo ESP8266 in firebase.
#include
Prenesite in namestite knjižnice tako, da sledite spodnjim povezavam:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Če med prevajanjem dobite napako, da knjižnica ArduinoJson.h ni nameščena, jo namestite s pomočjo zgornje povezave.
NodeMCU bomo programirali tako, da bo zajemal odčitke senzorja DHT11 in ga vsakih 5 sekund v intervalu potisnil v Firebase. Določili bomo pot za potiskanje podatkov. Trenutno sta dva parametra, tj. vlažnost in temperatura se pošljeta po isti starševski in drugačni otroški poti.
Ta dva parametra sta zelo pomembna za komunikacijo s firebaseom. Nastavitev teh parametrov bo omogočila izmenjavo podatkov med in ESP8266 ter firebase. Če želite najti te parametre za svoj projekt, sledite naši prejšnji vadnici o namestitvi Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // naslov imena projekta iz ID-ja firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxQDDkhN" // skrivni ključ, ustvarjen iz firebase
Po uspešnem iskanju poverilnic samo zamenjajte zgornjo kodo.
Vnesite SSID in geslo za Wi-Fi, da se povežete z omrežjem.
#define WIFI_SSID "network_name" // vnesite ime svojega domačega ali javnega wifija #define WIFI_PASSWORD "geslo" // geslo za wifi ssid
Določite podatkovni zatič DHT v NodeMCU. V NodeMCU lahko uporabite kateri koli digitalni pin GPIO.
#define DHTPIN D4
Knjižnica DHT je narejena za vse različice DHT in ima opcijo, katero tipalo DHT želite uporabiti za npr. DHT11 ali DHT22. Preprosto izberite pravi senzor DHT in nadaljujte.
#define DHTTYPE DHT11 // izberite vrsto dht kot DHT 11 ali DHT22 DHT dht (DHTPIN, DHTTYPE);
Povežite se z izbranim omrežjem Wi-Fi in se povežite tudi s strežnikom zbirke podatkov Firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Začnite brati na nožici D4 NodeMCU.
dht.begin ();
Odčitajte odčitke vlažnosti in temperature s senzorja DHT in shranite kot plavajočo vrednost.
float h = dht.readHumidity (); // Odčitavanje temperature ali vlažnosti traja približno 250 milisekund! float t = dht.readTemperature (); // Odčitavanje temperature kot Celzija (privzeto)
Samo preveri, če je senzor DHT pravilno žično ali se ne poškoduje in krmilnik lahko sposoben brati branja iz njega. Če se odčitki ne prikažejo, je verjetno senzor poškodovan, samo prikažite sporočilo o napaki in se vrnite na ponovno preverjanje, ne da bi nadaljevali.
if (isnan (h) - isnan (t)) {// Preverite, ali je katero od bralnih sporočil spodletelo, in predčasno zapustite (da poskusite znova). Serial.println (F ("Ni bilo mogoče prebrati s senzorja DHT!")); vrnitev; }
Natisnite podatke senzorjev v serijski monitor za odpravljanje napak in shranite vrednosti temperature in vlažnosti v obliki nizov, da jih pošljete v ognjišče. Upoštevajte tudi, da je najmanjša zahtevana zakasnitev med dvema odčitkoma senzorja DHT11 2 sekundi, zato vedno uporabite zakasnitev, večjo od 2 sekundi. Če želite izvedeti več o DHT11, si oglejte uradni podatkovni list.
Serial.print ("Vlažnost:"); Serial.print (h); String fireHumid = Niz (h) + Niz ("%"); // pretvorimo celoštevilno vlažnost v vlažnost nizov Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); String fireTemp = Niz (t) + Niz ("° C"); zamuda (4000);
Nazadnje pošljite podatke o temperaturi in vlažnosti v firebase na pot “your-project.firebaseio.com/DHT11/Humidity/”.
Firebase.pushString ("/ DHT11 / Vlažnost", fireHumid); // nastavitev poti in pošiljanje odčitkov Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // nastavitev poti in pošiljanje odčitkov
Vse podatke si lahko ogledate v svojem računu Firebase. Pojdite v razdelek » Zbirka podatkov « v » Vaš projekt « na strani » Moja konzola « v Firebaseu.
Če želite nastaviti Firebase za pošiljanje in spremljanje podatkov, si oglejte našo prejšnjo vadnico.
Popolna koda in video za to spremljanje temperature in vlažnosti na osnovi IoT je spodaj.