- Būtini komponentai
- Grandinės schema
- DHT11 temperatūros ir drėgmės jutiklis
- NodeMCU ESP8266 tiesioginės temperatūros ir drėgmės stebėjimo programavimas
Mikrovaldikliai turi mažą vidinę atmintį, kurios nepakanka, kad ilgą laiką išsaugotumėte jutiklių sugeneruotus duomenis. Turite naudoti išorinį atminties įrenginį arba galite išsaugoti duomenis kai kuriuose debesyse naudodamiesi internetu. Be to, kartais tampa sunku valdyti, kai jutiklis yra išdėstytas tam tikroje ekstremalių sąlygų vietoje, kur žmogus negali pasiekti, arba sunku ten dažnai lankytis. Norėdami ištaisyti tokio pobūdžio problemas, mes visada ieškome būdų, kaip norime realiuoju laiku stebėti jutiklio duomenis iš bet kurios vietos be jokio fizinio buvimo toje vietoje.
Į realaus laiko duomenų bazės gali būti naudojamos pagal šį scenarijų, kur mes tiesiog turime sąsaja šiek tiek valdiklį, kuris gali būti prijungtas prie interneto ir gali būti suteikta galimybė keistis duomenimis su debesų serveryje. Serverio duomenys gali būti naudingi stebint realaus laiko sistemos elgseną, duomenų bazių analizę, statistinę analizę ir apdorojimą bei aiškinimą ateityje. Šiam tikslui pasiekti yra daugybė daiktų interneto įrangos ir „Cloud“ platformų. Jei jums kyla sunkumų ieškant tinkamos platformos savo interneto programai, spustelėkite nuorodą.
Anksčiau mes jau apėmėme „ThingSpeak“, „Adafruit IO“ ir daugelį kitų „IoT“ programinės įrangos. Šiandien kursime panašų projektą, kuriame temperatūros ir drėgmės jutiklį DHT11 ir „ NodeMCU ESP8266“ modulį naudosime realaus laiko temperatūros ir drėgmės registravimui „Google Firebase“ duomenų bazės serveryje.
Projektą padalinsime į dvi dalis. Pirmiausia pradėsime nuo aparatinės įrangos komponentų surinkimo ir programinės įrangos įkėlimo į jį. Antra, naudosime „Firebase“ sąrankai su „NodeMCU“, kad galėtume keistis duomenimis realiuoju laiku. Jei dar nesinaudojote ESP8266 ar „Firebase“, vadovaukitės mūsų ankstesne LED valdymo naudojant „Firebase“ instrukcija.
Būtini komponentai
- „NodeMCU ESP8266“ modulis
- DHT11 temperatūros ir drėgmės jutiklis
Grandinės schema
DHT11 temperatūros ir drėgmės jutiklis
DHT11 modulis turi drėgmės ir temperatūros kompleksą su kalibruotu skaitmeninio signalo išvestimi. DHT11 jutiklio modulis yra kombinuotas modulis drėgmės ir temperatūros jutimui, kuris suteikia kalibruotą skaitmeninį išėjimo signalą. DHT11 suteikia mums labai tikslią drėgmės ir temperatūros vertę bei užtikrina aukštą patikimumą ir ilgalaikį stabilumą. Šis jutiklis turi rezistinio tipo drėgmės matavimo komponentą ir NTC tipo temperatūros matavimo komponentą su įmontuotu 8 bitų mikrovaldikliu, kuris greitai reaguoja ir yra ekonomiškas, ir yra 4 kontaktų vienos eilės pakuotėje.
Anksčiau mes naudojome ESP12E, kad atnaujintume DHT11 rodmenis interneto serveryje, išskyrus tai, kad galite patikrinti visus DHT11 pagrįstus projektus, kur mes naudojome DHT11 sąsajai su daugeliu kitų mikrovaldiklių, tokių kaip „Arduino“, PIC, „Raspberry“, ir pastatėme meteorologijos stotį, naudojančią juos.
NodeMCU ESP8266 tiesioginės temperatūros ir drėgmės stebėjimo programavimas
Pabaigoje pateikiama visa programa su veikiančiu vaizdo įrašu. Čia mes paaiškiname keletą svarbių kodo dalių.
Pirmiausia įtraukite bibliotekas, skirtas naudoti ESP8266 ir „Firebase“.
# įtraukti
Atsisiųskite ir įdiekite bibliotekas vadovaudamiesi šiomis nuorodomis:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Darant kompiliavimo klaidą, kad „ArduinoJson.h“ biblioteka nėra įdiegta, įdiekite ją naudodamiesi aukščiau pateikta nuoroda.
Mes užprogramuosime „NodeMCU“ imti DHT11 jutiklio rodmenis ir kas 5 sekundžių intervalus stumti jį į „Firebase“. Mes nustatysime duomenų perdavimo kelią. Šiuo metu du parametrai, t. drėgmė ir temperatūra siunčiami tuo pačiu tėvų keliu ir skirtingu vaiko keliu.
Šie du parametrai yra labai svarbūs bendraujant su „Firebase“. Nustačius šiuos parametrus bus galima keistis duomenimis tarp „ESP8266“ ir „Firebase“. Norėdami rasti šiuos savo projekto parametrus, vadovaukitės ankstesne „Firebase“ sąrankos pamoka.
#define FIREBASE_HOST "jūsų-project.firebaseio.com" // projekto pavadinimo adresas iš firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // slaptasis raktas, sugeneruotas iš „Firebase“
Sėkmingai radę kredencialus, tiesiog pakeiskite aukščiau pateiktą kodą.
Norėdami prisijungti prie tinklo, įveskite „Wi-Fi“ SSID ir slaptažodį.
#define WIFI_SSID "tinklo_pavadinimas" // įveskite savo namų ar viešojo „wifi“ vardą #define WIFI_PASSWORD „slaptažodis“ // „wifi“ sistemos slaptažodis
Apibrėžkite DHT duomenų PIN kodą „NodeMCU“. „NodeMCU“ galite naudoti bet kurį skaitmeninį GPIO kaištį.
#define DHTPIN D4
DHT biblioteka sukurta visiems DHT variantams ir pateikiama su galimybe pasirinkti tą DHT jutiklį, kurį norite naudoti, pvz., DHT11 ar DHT22. Tiesiog pasirinkite tinkamą DHT jutiklį ir tęskite.
#define DHTTYPE DHT11 // pasirinkite dht tipą kaip DHT 11 arba DHT22 DHT dht (DHTPIN, DHTTYPE);
Prisijunkite prie pasirinkto „Wi-Fi“ tinklo ir prisijunkite prie „Firebase“ duomenų bazės serverio.
„WiFi.begin“ (WIFI_SSID, WIFI_PASSWORD); „Firebase.begin“ (FIREBASE_HOST, FIREBASE_AUTH);
Pradėkite skaityti „NodeMCU“ D4 kaiščiu.
dht.prasideda ();
Iš DHT jutiklio paimkite drėgmės ir temperatūros rodmenis ir išsaugokite kaip plūduriuojančią vertę.
plūdė h = dht.readHumidity (); // Temperatūros ar drėgmės skaitymas trunka apie 250 milisekundžių! plūdė t = dht.readTemperature (); // Skaityti temperatūrą kaip Celsijaus (numatytasis nustatymas)
Tiesiog patikrinkite, ar DHT jutiklis yra tinkamai prijungtas, ar jis nepažeistas, ir valdiklis gali nuskaityti jo rodmenis. Jei rodmenys nerodomi, tikriausiai jutiklis yra sugadintas, tiesiog parodykite klaidos pranešimą ir grįžkite patikrinti dar kartą, netęsdami į priekį.
if (isnan (h) - isnan (t)) {// Patikrinkite, ar nepavyko skaityti, ir išeikite anksti (bandykite dar kartą). Serial.println (F ("Nepavyko perskaityti iš DHT jutiklio!")); grįžti; }
Spausdinkite jutiklio duomenis serijiniame monitoriuje, kad galėtumėte derinti, ir išsaugokite temperatūros ir drėgmės reikšmes eilutės forma, kad nusiųstumėte jas į „Firebase“. Taip pat atkreipkite dėmesį, kad mažiausia vėlavimo trukmė tarp dviejų DHT11 jutiklio rodmenų yra 2 sekundės, todėl visada naudokite didesnę nei 2 sekundžių vėlavimą. Norėdami sužinoti daugiau apie DHT11, galite peržiūrėti oficialų duomenų lapą.
Serial.print ("Drėgmė:"); Serijinis spaudinys (h); String fireHumid = Stygos (h) + Stygos ("%"); // paversti sveiką skaičių drėgmę į eilutės drėgmę Serial.print ("% Temperature:"); Serijinis spaudinys (t); Serial.println ("° C"); String fireTemp = eilutė (t) + eilutė ("° C"); vėlavimas (4000);
Pagaliau nusiųskite temperatūros ir drėgmės duomenis į „Firebase“ kelią „jūsų-project.firebaseio.com/DHT11/Humidity/“.
Firebase.pushString ("/ DHT11 / Drėgmė", fireHumid); // sąrankos kelias ir siųskite rodmenis Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // sąrankos kelias ir siųskite rodmenis
Visus duomenis galite pamatyti „Firebase“ paskyroje. Tiesiog eikite į „ Jūsų projektas “ skyrių „ Duomenų bazė “ „Firebase “ skiltyje „ Mano konsolė “.
Norėdami nustatyti „Firebase“ duomenų siuntimą ir stebėjimą, galite peržiūrėti ankstesnę mūsų mokymo programą.
Pilnas kodas ir vaizdo įrašas, skirtas šiam daiktų interneto temperatūros ir drėgmės monitoringui, pateikiamas toliau.