Luftfuktighet och temperatur är mycket vanliga parametrar för mätning på många ställen som gård, växthus, medicin, industrihem och kontor. Vi har redan täckt luftfuktighets- och temperaturmätning med Arduino och visat data på LCD.
I detta IoT-projekt ska vi övervaka luftfuktighet och temperatur över internet med hjälp av ThingSpeak där vi visar de aktuella luftfuktighets- och temperaturdata över Internet med hjälp av ThingSpeak-servern. Det åstadkommes av datakommunikationen mellan Arduino, DHT11-sensormodul, ESP8266 WIFI-modul och LCD. Celsius-termometer och procentuell fuktighetsmätare visar omgivningstemperaturen och luftfuktigheten genom en LCD-skärm och skickar den också till ThingSpeak-servern för liveövervakning var som helst i världen.
Arbete och ThingSpeak-inställning:
Detta IoT-baserade projekt med fyra sektioner, för det första känner av luftfuktighets- och temperatursensorn DHT11 luftfuktighets- och temperaturdata . För det andra extraherar Arduino Uno DHT11-sensorns data som lämpligt antal i procent och Celsius-skala och skickar dem till Wi-Fi-modulen. För det tredje skickar Wi-Fi-modulen ESP8266 data till ThingSpeaks Sever. Och slutligen analyserar ThingSpeak data och visar dem i en grafform. LCD-skärm ( tillval) används också för att visa temperatur och luftfuktighet.
ThingSpeak ger ett mycket bra verktyg för IoT-baserade projekt för Arduino. Genom att använda ThingSpeak-webbplatsen kan vi övervaka våra data över Internet var som helst, och vi kan också styra vårt system över Internet med hjälp av de kanaler och webbsidor som tillhandahålls av ThingSpeak. ThingSpeak 'samlar' data från sensorerna, 'analyserar och visualiserar' data och 'agerar' genom att utlösa en reaktion. Här förklarar vi hur man skickar data till ThingSpeak-servern med hjälp av ESP8266 WIFI-modulen:
1. Först och främst måste användaren skapa ett konto på ThingSpeak.com, sedan logga in och klicka på Kom igång.
2. Gå nu till menyn "Kanaler" och klicka på alternativet Ny kanal på samma sida för vidare process.
3. Nu ser du ett formulär för att skapa kanalen, fyll i Namn och beskrivning enligt ditt val. Fyll sedan 'Fuktighet' och 'Temperatur' i fält 1 och fält 2, markera kryssrutorna för båda fälten. Markera även kryssrutan för alternativet 'Publicera' nedan i formuläret och slutligen Spara kanalen. Nu har din nya kanal skapats.
4. Klicka nu på fliken "API-nycklar" och spara API-nycklarna Skriv och läs, här använder vi bara skrivnyckeln. Du måste kopiera den här nyckeln i char * api_key i koden.
5. Därefter klickar du på "Dataimport / export" och kopierar Uppdatera kanalflödet GET Request URL, som är:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Nu måste användaren öppna “api.thingspeak.com” med hjälp av httpGet- funktionen med postUrl som “uppdatera? Api_key = SIWOYBX26OXQ1WMS & field1 = 0” och sedan skicka data med dataflöde eller uppdateringsbegäran adress.
Innan data skickas måste användaren redigera denna frågesträng eller postUrl med datafält för temperatur och fuktighet, som visas nedan. Här har vi lagt till båda parametrarna i strängen som vi behöver skicka via GET-begäran till servern, efter det har vi använt httpGet för att skicka data till servern. Kontrollera hela koden nedan.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Hela processen visas i avsnittet Video, i slutet av denna artikel.
Arbetet med detta projekt baseras på seriekommunikation med en tråd för att hämta data från DHT11. Först skickar Arduino en startsignal till DHT-modulen och sedan ger DHT en svarsignal med innehållande data. Arduino samlar in och extraherar data i två delar först är fuktighet och andra är temperatur och skickar den sedan till 16x2 LCD och ThingSpeak-server. ThingSpeak visar data i form av diagram enligt nedan:
Du kan lära dig mer om DHT11-sensorn och dess gränssnitt med Arduino här.
Kretsbeskrivning:
Anslutningar för detta ThingSpeak temperatur- och luftfuktighetsövervakningsprojekt är mycket enkla. Här används en Liquid Crystal Display för att visa temperatur och luftfuktighet, som är direkt ansluten till Arduino i 4-bitars läge. LCD-stift, nämligen RS, EN, D4, D5, D6 och D7, är anslutna till Arduino digitala stift nummer 14, 15, 16, 17, 18 och 19. Denna LCD-skärm är valfri.
DHT11-sensormodulen är ansluten till Arduino digitala stift 12. Wi-Fi-modul ESP8266: s Vcc- och GND-stift är direkt anslutna till 3,3 V och GND för Arduino och CH_PD är också ansluten till 3,3 V. Tx- och Rx-stiften på ESP8266 är direkt anslutna till stift 2 och 3 på Arduino. Software Serial Library används också här för att tillåta seriell kommunikation på pin 2 och 3 i Arduino. Vi har redan täckt gränssnittet mellan ESP8266 Wi-Fi-modulen och Arduino i detalj.
Programmeringsdel:
Programmeringsdelen av detta projekt spelar en mycket viktig roll för att utföra alla operationer. Först och främst inkluderar vi nödvändiga bibliotek och initierar variabler.
#include "dht.h" // Inklusive bibliotek för dht #include
Efter det anger du din API-nyckel och tar några strängar.
char * api_key = "SIWOYBX26OXQ1WMS"; // Ange din Write API-nyckel från ThingSpeak static char postUrl; int humi, tem; ogiltig httpGet (String ip, String path, int port = 80);
I void loop () -funktionen läser vi temperatur och fuktighet och visar sedan avläsningarna på LCD-skärmen.
void send2server () -funktionen används för att skicka data till servern. Send2server-funktionen är en timeravbrottsrutin som ringer var 20: e sekund. När vi ringer uppdateringsfunktionen kallas timeravbrottsrutin.
ogiltig send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "update? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }