Vlhkosť a teplota sú veľmi bežné parametre merania na mnohých miestach, ako sú farmy, skleníky, zdravotnícke zariadenia, domácnosti a kancelárie. Meranie vlhkosti a teploty sme už pokryli pomocou Arduina a údaje sme zobrazili na LCD.
V tomto projekte IoT budeme monitorovať vlhkosť a teplotu cez internet pomocou programu ThingSpeak, kde ukážeme aktuálne údaje o vlhkosti a teplote cez internet pomocou servera ThingSpeak. Je to dosiahnuté dátovou komunikáciou medzi Arduino, senzorovým modulom DHT11, WIFI modulom ESP8266 a LCD. Teplomer stupnice Celzia a vlhkomer percentuálnej stupnice zobrazuje teplotu a vlhkosť prostredia prostredníctvom LCD displeja a tiež ich odosiela na server ThingSpeak na živé sledovanie z ktoréhokoľvek miesta na svete.
Working and ThingSpeak Setup:
Tento projekt založený na IoT má štyri sekcie, po prvé senzor vlhkosti a teploty DHT11 sníma údaje o vlhkosti a teplote . Po druhé, Arduino Uno extrahuje údaje snímača DHT11 ako vhodné číslo v percentách a v stupňoch Celzia a odošle ich do modulu Wi-Fi. Po tretie, modul Wi-Fi ESP8266 odosiela údaje do servera ThingSpeak. A nakoniec ThingSpeak analyzuje údaje a zobrazuje ich vo forme grafu. Voliteľný LCD sa tiež používa na zobrazenie teploty a vlhkosti.
ThingSpeak poskytuje veľmi dobrý nástroj pre projekty založené na IoT pre Arduino. Použitím stránky ThingSpeak môžeme monitorovať naše údaje cez internet odkiaľkoľvek a môžeme tiež ovládať náš systém cez internet pomocou kanálov a webových stránok poskytovaných spoločnosťou ThingSpeak. ThingSpeak „zbiera“ údaje zo senzorov, „analyzuje a vizualizuje“ údaje a „koná“ spustením reakcie. Tu vysvetľujeme, ako posielať údaje na server ThingSpeak pomocou modulu WIFI ESP8266:
1. Najprv si musí užívateľ vytvoriť účet na serveri ThingSpeak.com, potom sa prihlásiť a kliknúť na tlačidlo Začíname.
2. Teraz prejdite do ponuky „Kanály“ a na ďalšej stránke kliknite na možnosť Nový kanál.
3. Teraz uvidíte formulár na vytvorenie kanála, vyplňte Meno a Popis podľa vášho výberu. Potom do štítkov poľa 1 a poľa 2 vyplňte položky „Vlhkosť“ a „Teplota“ a začiarknite políčka oboch polí. Ďalej vo formulári začiarknite políčko „Zverejniť“ a nakoniec kanál uložte. Váš nový kanál bol vytvorený.
4. Teraz kliknite na kartu „Kľúče API“ a uložte kľúče API Write a Read, tu používame iba kláves Write. Tento kľúč musíte skopírovať do znaku char * api_key v kóde.
5. Potom kliknite na položku „Import / export údajov“ a skopírujte adresu URL žiadosti o aktualizáciu informačného kanála, ktorá je:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Teraz musí užívateľ otvoriť „api.thingspeak.com“ pomocou funkcie httpGet s postUrl ako „update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0“ a potom odoslať údaje pomocou informačného kanála alebo adresy žiadosti o aktualizáciu.
Pred odoslaním údajov musí používateľ upraviť tento reťazec dotazu alebo postUrl pomocou údajových polí teploty a vlhkosti, ako je uvedené nižšie. Tu sme pridali oba parametre do reťazca, ktorý musíme odoslať pomocou požiadavky GET na server, potom sme na odoslanie údajov na server použili protokol . Celý kód skontrolujte nižšie.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Celý proces je demonštrovaný v časti Video na konci tohto článku.
Práca na tomto projekte je založená na jednovodičovej sériovej komunikácii pre načítanie dát z DHT11. Najprv Arduino pošle štartovací signál do modulu DHT a potom DHT dá signál odozvy obsahujúci údaje. Arduino zhromažďuje a extrahuje dáta do dvoch častí, prvá je vlhkosť a druhá teplota a potom ich pošle na 16x2 LCD a server ThingSpeak. ThingSpeak zobrazuje údaje vo forme grafu, ako je uvedené nižšie:
Viac informácií o snímači DHT11 a jeho prepojení s rozhraním Arduino sa dozviete tu.
Popis obvodu:
Pripojenia pre tento projekt monitorovania teploty a vlhkosti ThingSpeak sú veľmi jednoduché. Tu sa na zobrazovanie teploty a vlhkosti používa displej z tekutých kryštálov, ktorý je priamo pripojený k Arduinu v 4-bitovom režime. Kolíky LCD, menovite RS, EN, D4, D5, D6 a D7, sú pripojené k Arduino digitálnemu kolíku číslo 14, 15, 16, 17, 18 a 19. Tento LCD je voliteľný.
Senzorový modul DHT11 je pripojený k digitálnemu pinu 12 Arduina. Kolíky Vcc a GND modulu Wi-Fi ESP8266 sú priamo pripojené k 3,3 V a GND Arduina a CH_PD je tiež pripojené k 3,3 V. Kolíky Tx a Rx ESP8266 sú priamo pripojené k pinom 2 a 3 Arduina. Softvérová sériová knižnica sa tu tiež používa na umožnenie sériovej komunikácie na pinoch 2 a 3 v Arduine. Prepojenie Wi-Fi modulu ESP8266 na Arduino sme už podrobne pokryli.
Programovacia časť:
Programová časť tohto projektu hrá veľmi dôležitú úlohu pri vykonávaní všetkých operácií. Najskôr zahrnieme požadované knižnice a inicializujeme premenné.
#include "dht.h" // Vrátane knižnice pre dht #include
Potom zadajte svoj kľúč API zápisu a vezmite niekoľko reťazcov.
char * api_key = "SIWOYBX26OXQ1WMS"; // Zadaj svoj kľúč Write API z ThingSpeak static char postUrl; int humi, tem; void httpGet (reťazec ip, cesta reťazca, int port = 80);
Vo funkcii void loop () načítame teplotu a vlhkosť a tieto hodnoty potom zobrazíme na LCD displeji.
funkcia void send2server () sa používa na odoslanie údajov na server. Funkcia Send2server je rutina prerušenia služby, ktorá volá každých 20 sekúnd. Keď voláme funkciu aktualizácie, volá sa rutina služby prerušenia časovača.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "aktualizovať? api_key =% s & pole1 =% s & pole2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }