A páratartalom és a hőmérséklet nagyon gyakori paraméter a méréshez sok helyen, például tanyán, üvegházban, orvosi, ipari otthonokban és irodákban. A páratartalom és a hőmérséklet mérését már lefedtük az Arduino segítségével, és az adatokat megjelenítettük az LCD-n.
Ebben az IoT projektben a ThingSpeak segítségével figyeljük meg a páratartalmat és a hőmérsékletet az interneten keresztül, ahol a ThingSpeak szerver segítségével megmutatjuk az aktuális páratartalom és hőmérséklet adatokat az interneten keresztül. Az Arduino, a DHT11 érzékelő modul, az ESP8266 WIFI modul és az LCD közötti adatkommunikációval érhető el. A Celsius-fokos hőmérő és a százalékos nedvességtartalom-mérő az LCD-kijelzőn megjeleníti a környezeti hőmérsékletet és páratartalmat, és elküldi a ThingSpeak szervernek is élő megfigyelés céljából a világ bármely pontjáról.
Munka és a ThingSpeak beállítása:
Ez az IoT-alapú projekt négy szakaszból áll, egyrészt a DHT11 páratartalom és hőmérséklet érzékelő érzékeli a páratartalom és a hőmérséklet adatait . Másodszor az Arduino Uno kivonja a DHT11 szenzor adatait megfelelő számban, százalékban és Celsius-skálában, és elküldi a Wi-Fi modulnak. Harmadszor, az ESP8266 Wi-Fi modul elküldi az adatokat a ThingSpeak Severnek. És végül a ThingSpeak elemzi az adatokat, és grafikon formájában mutatja meg. Az opcionális LCD- t a hőmérséklet és a páratartalom kijelzésére is használják.
A ThingSpeak nagyon jó eszközt kínál az IoT-alapú projektekhez az Arduino számára. A ThingSpeak webhely használatával bárhonnan figyelhetjük adatainkat az interneten keresztül, és a ThingSpeak által biztosított csatornák és weboldalak segítségével az interneten keresztül is irányíthatjuk rendszerünket. A ThingSpeak 'összegyűjti' az adatokat az érzékelőkből, 'elemzi és vizualizálja' az adatokat és 'cselekményeket' egy reakció kiváltásával. Itt elmagyarázzuk, hogyan lehet adatokat küldeni a ThingSpeak szerverre az ESP8266 WIFI modul használatával:
1. Először is, a felhasználónak létre kell hoznia egy fiókot a ThingSpeak.com oldalon, majd Bejelentkezés és kattintson az Első lépések gombra.
2. Most lépjen a "Csatornák" menübe, és kattintson az Új csatorna lehetőségre ugyanazon az oldalon a további folyamat érdekében.
3. Most megjelenik egy űrlap a csatorna létrehozásához, töltse ki a Név és a Leírás választása szerint. Ezután töltse ki a „Páratartalom” és a „Hőmérséklet” mezőt az 1. és a 2. mező címkéibe, jelölje be mindkét mező jelölőnégyzetét. Jelölje be az űrlap alatti „Nyilvánosítás” opció jelölőnégyzetét is, végül pedig mentse a csatornát. Most létrehozta új csatornáját.
4. Most kattintson az "API kulcsok" fülre, és mentse az API írása és olvasása kulcsokat, itt csak az Írási kulcsot használjuk. Ezt a kulcsot át kell másolnia a kód * char * api_key- be.
5. Utána kattintson az 'Adatok importálása / exportálása' elemre, és másolja a Csatornacsatorna frissítése GET kérelem URL-t, amely a következő:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Most a felhasználónak meg kell nyitnia az „api.thingspeak.com” címet a httpGet függvény segítségével, a postUrl néven „update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0”, majd adatokat kell küldeni az adatcsatorna vagy a frissítési kérelem címe segítségével.
Az adatok elküldése előtt a felhasználónak szerkesztenie kell ezt a lekérdezési karakterláncot vagy a postUrl hőmérséklet és páratartalom adatmezőket, az alábbiak szerint. Itt hozzáadtuk mindkét paramétert a karaktersorozathoz, amelyet a GET kérés használatával kell elküldenünk a szerverre, miután a httpGet segítségével elküldtük az adatokat a szerverre. Ellenőrizze az alábbi kódot.
Sprintf (postUrl, "frissítés? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Az egész folyamatot a Videó szakasz mutatja be, a cikk végén.
A projekt működése egyvezetékes soros kommunikáción alapszik az adatok lekéréséhez a DHT11-ből. Először az Arduino kezdőjelet küld a DHT modulnak, majd a DHT válaszjelet ad, amely adatokat tartalmaz. Az Arduino két részben gyűjti és kivonja az adatokat: először a páratartalom, a második pedig a hőmérséklet, majd elküldi a 16x2 LCD és a ThingSpeak szerverre. A ThingSpeak az adatokat grafikon formájában jeleníti meg az alábbiak szerint:
Itt többet megtudhat a DHT11 érzékelőről és az Arduinóval való összekapcsolásáról.
Áramkör leírása:
A ThingSpeak hőmérséklet- és páratartalom-ellenőrzési projekt csatlakozása nagyon egyszerű. Itt egy folyadékkristályos kijelzőt használnak a hőmérséklet és a páratartalom kijelzésére, amely 4 bites módban közvetlenül kapcsolódik az Arduino-hoz. Az LCD, nevezetesen az RS, az EN, a D4, a D5, a D6 és a D7 csapjai az Arduino 14, 15, 16, 17, 18 és 19 számú digitális tűkhöz vannak csatlakoztatva. Ez az LCD választható.
A DHT11 érzékelő modul az Arduino 12. digitális érintkezőjéhez csatlakozik. Az ESP8266 Wi-Fi modul Vcc és GND csatlakozói közvetlenül csatlakoznak a 3,3 V-hoz, az Arduino és a CH_PD pedig a 3,3 V-hoz is. Az ESP8266 Tx és Rx csapjai közvetlenül kapcsolódnak az Arduino 2. és 3. érintkezőjéhez. Szoftver soros könyvtárat itt is használunk, hogy soros kommunikációt engedélyezzünk az Arduino 2. és 3. érintkezőjén. Az ESP8266 Wi-Fi modul Interfacingjét az Arduinóhoz már részletesen ismertettük.
Programozási rész:
A projekt programozási része nagyon fontos szerepet játszik az összes művelet végrehajtásában. Először tartalmazzuk a szükséges könyvtárakat és inicializáljuk a változókat.
#include "dht.h" // Beleértve a dht #include könyvtárat
Miután megadta az Write API kulcsot, és vegyen be néhány karakterláncot.
char * api_key = "SIWOYBX26OXQ1WMS"; // Írja be az Write API kulcsot a ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
A void loop () funkcióban leolvassuk a hőmérsékletet és a páratartalmat, majd megmutatjuk ezeket az LCD-n.
A void send2server () függvény az adatok szerverre küldésére szolgál. A Send2server funkció egy időzítő megszakítási szolgáltatás rutin, amely 20 másodpercenként hív. Amikor meghívjuk a frissítési funkciót, az időzítő megszakítás szolgáltatás rutin hívódik meg.
void send2server () {char tempStr; char nedvesStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, nedvesStr); sprintf (postUrl, "frissítés? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }