- Szükséges alkatrészek
- Kördiagramm
- DHT11 hőmérséklet- és páratartalom-érzékelő
- NodeMCU ESP8266 élő hőmérséklet- és páratartalom-figyelés programozása
A mikrovezérlők kicsi belső memóriával rendelkeznek, ami nem elegendő az érzékelők által generált adatok hosszú ideig történő mentéséhez, vagy használnia kell valamilyen külső memóriaeszközt, vagy interneten keresztül elmentheti az adatokat néhány felhőbe. Ezenkívül nehezen kezelhető, ha az érzékelőt olyan szélsőséges körülmények között telepítik, ahová az ember nem tud eljutni, vagy nehéz ott gyakran felkeresni. Az ilyen jellegű problémák orvoslásához mindig megvizsgáljuk azokat a módszereket, ahol az érzékelő adatait valós időben, bárhonnan figyeljük, fizikai jelenlét nélkül.
A valós idejű adatbázisok felhasználhatók ebben a forgatókönyvben, ahol csak össze kell kapcsolnunk néhány vezérlőt, amely csatlakoztatható az internethez, és képesek vagyunk adatokat cserélni a felhőszerverrel. A kiszolgáló adatai hasznosak lehetnek a valós idejű rendszer viselkedésének nyomon követésében, az adatbázis-elemzésben, a statisztikai elemzésben és feldolgozásban, valamint a későbbi felhasználási esetek értelmezésében. Sok IoT hardverplatform és felhőalapú platform érhető el e cél érdekében. Ha nehézségekbe ütközik az IoT alkalmazás számára megfelelő platform megtalálásában, kövesse a linket.
Korábban már tárgyaltuk a ThingSpeak, az Adafruit IO és sok más IoT szoftvereket. Ma hasonló projektet fogunk építeni, ahol a DHT11 hőmérséklet- és páratartalom-érzékelőt és a NodeMCU ESP8266 modult használjuk a hőmérséklet és páratartalom valós idejű rögzítésére a Google Firebase adatbázis-kiszolgálóján.
A projektet két szakaszra osztjuk. Először a hardverösszetevők összeszerelésével és a firmware feltöltésével kezdjük. Másodszor pedig a Firebase segítségével állítjuk be a NodeMCU-val a valós idejű adatok cseréjét. Ha még nem ismeri az ESP8266 vagy a Firebase alkalmazást, kövesse a LED-ek Firebase használatával történő vezérléséről szóló korábbi útmutatónkat.
Szükséges alkatrészek
- NodeMCU ESP8266 modul
- DHT11 hőmérséklet és páratartalom érzékelő
Kördiagramm
DHT11 hőmérséklet- és páratartalom-érzékelő
A DHT11 modul nedvesség és hőmérséklet komplexet tartalmaz kalibrált digitális jelkimenettel. A DHT11 érzékelő modul kombinált modul a páratartalom és a hőmérséklet érzékelésére, amely kalibrált digitális kimeneti jelet ad. A DHT11 a páratartalom és a hőmérséklet nagyon pontos értékét adja, és nagy megbízhatóságot és hosszú távú stabilitást biztosít. Ez az érzékelő egy rezisztív nedvességmérő és NTC típusú hőmérsékletmérő komponenssel rendelkezik, beépített 8 bites mikrovezérlővel, amely gyorsan reagál és költséghatékony, és 4 tűs egysoros csomagban kapható.
Korábban az ESP12E-t használtuk a DHT11 leolvasások frissítésére a webszerveren, kivéve, hogy ellenőrizheti az összes DHT11 alapú projektet, ahol a DHT11-et használtuk sok más mikrovezérlővel való összeköttetéshez, például Arduino, PIC, Raspberry, és beépítettük ezeket az időjárási állomásokat.
NodeMCU ESP8266 élő hőmérséklet- és páratartalom-figyelés programozása
A végén egy teljes program működik videóval. Itt elmagyarázzuk a kód néhány fontos részét.
Először is vegye be az ESP8266 és a Firebase használatához szükséges könyvtárakat.
#include
Töltse le és telepítse a könyvtárakat az alábbi linkek követésével:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Fordítás közben , ha hibát észlel, hogy az ArduinoJson.h könyvtár nincs telepítve, kérjük, telepítse a fenti hivatkozással.
Megprogramozzuk a NodeMCU-t, hogy vegye le a DHT11 érzékelő leolvasásait, és minden 5 másodpercenként tolja a Firebase-be. Megállapítjuk az adatok továbbításának útját. Jelenleg két paraméter, nevezetesen. a páratartalmat és a hőmérsékletet ugyanazon a szülői úton és a különböző gyermek utakon küldik el.
Ez a két paraméter nagyon fontos a Firebase kommunikációjához. Ezeknek a paramétereknek a beállítása lehetővé teszi az adatcserét az ESP8266 és a Firebase között. Ha meg szeretné találni ezeket a paramétereket a projektjéhez, kövesse a Firebase telepítésről szóló korábbi oktatóanyagunkat.
#define FIREBASE_HOST "your-project.firebaseio.com" // a projekt neve a firebase azonosítóból #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // a firebase-ből létrehozott titkos kulcs
Miután sikeresen megtalálta a hitelesítő adatokat, csak cserélje ki a fenti kódot.
Adja meg Wi-Fi SSID-jét és jelszavát a hálózathoz való csatlakozáshoz.
#define WIFI_SSID "network_name" // írja be otthoni vagy nyilvános wifi nevét #define WIFI_PASSWORD "jelszó" // wifi ssid jelszava
Határozza meg a DHT adat PIN-kódját a NodeMCU-ban. Bármely digitális GPIO tűt használhat a NodeMCU-ban.
#define DHTPIN D4
A DHT könyvtár minden DHT variánshoz készült, és opcióval rendelkezik, hogy melyik DHT érzékelőt szeretné használni pl. DHT11 vagy DHT22. Csak válassza ki a megfelelő DHT érzékelőt, és folytassa.
#define DHTTYPE DHT11 // válassza ki a dht típust DHT 11 vagy DHT22 DHT dht (DHTPIN, DHTTYPE);
Csatlakozzon a kiválasztott Wi-Fi hálózathoz, és csatlakozzon a firebase adatbázis-kiszolgálóhoz is.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Kezdje el olvasni a NodeMCU D4 lábánál.
dht.kezdés ();
Vegye ki a páratartalom és a hőmérséklet értékeit a DHT érzékelőből, és mentse úszóértékként.
úszó h = dht.readHumidity (); // A hőmérséklet vagy a páratartalom leolvasása körülbelül 250 ezredmásodpercet vesz igénybe! úszó t = dht.readTemperature (); // Olvassa el a hőmérsékletet Celsiusban (alapértelmezett érték)
Csak ellenőrizze, hogy a DHT érzékelő megfelelően van-e bekötve, vagy nem sérült-e meg, és a vezérlő képes-e olvasni róla az olvasmányokat. Ha az adatok nem jelennek meg, akkor valószínűleg az érzékelő megsérült, csak mutasson egy hibaüzenetet, és folytassa az ellenőrzést anélkül, hogy előre haladna.
if (isnan (h) - isnan (t)) {// Ellenőrizze, hogy nem sikerült-e olvasni, és korán lépjen ki (az újrapróbálkozáshoz). Serial.println (F ("Nem sikerült olvasni a DHT érzékelőből!")); Visszatérés; }
Nyomtassa ki az érzékelő adatait a soros monitoron a hibakereséshez, és a hőmérséklet és a páratartalom értékeit karakterlánc formában mentse el, hogy ezt elküldje a tűzesetnek. Vegye figyelembe azt is, hogy a DHT11 érzékelő két leolvasása közötti minimális késleltetés 2 másodperc, ezért mindig használjon 2 másodpercnél hosszabb késleltetést. Ha többet szeretne megtudni a DHT11-ről, nézze meg a hivatalos adatlapot.
Serial.print ("Páratartalom:"); Soros nyomtatás (h); String fireHumid = karakterlánc (h) + karakterlánc ("%"); // az egész páratartalom karakterlánc páratartalmává alakítása Serial.print ("% Temperature:"); Soros nyomtatás (t); Serial.println ("° C"); String fireTemp = karakterlánc (t) + karakterlánc ("° C"); késés (4000);
Végül küldje el a hőmérséklet és a páratartalom adatait a firebase címre a „your-project.firebaseio.com/DHT11/Humidity/” útvonalon.
Firebase.pushString ("/ DHT11 / páratartalom", fireHumid); // beállítási útvonal és olvasmányok küldése Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // beállítási útvonal és olvasmányok küldése
Az összes adatot megtekintheti a Firebase-fiókjában. Csak lépjen a Firebase „ Saját konzol ” „ Projektje ” részének „ Adatbázis ” részéhez.
A Firebase beállításához az adatok küldéséhez és figyeléséhez olvassa el előző oktatóanyagunkat.
Az IoT-alapú hőmérséklet- és páratartalom-ellenőrzés teljes kódját és videóját az alábbiakban adjuk meg.