Fugtighed og temperatur er meget almindelige parametre til måling mange steder som gård, drivhus, medicinsk, industrihjem og kontorer. Vi har allerede dækket luftfugtigheds- og temperaturmåling ved hjælp af Arduino og vist dataene på LCD.
I dette IoT-projekt skal vi overvåge fugtighed og temperatur over internettet ved hjælp af ThingSpeak, hvor vi viser de aktuelle fugtigheds- og temperaturdata over internettet ved hjælp af ThingSpeak-serveren. Det opnås ved datakommunikationen mellem Arduino, DHT11 sensormodul, ESP8266 WIFI-modul og LCD. Celsius skala termometer og procentvis skala skala luftfugtighed meter viser den omgivende temperatur og fugtighed gennem et LCD display og sender det også til ThingSpeak server til live overvågning fra hvor som helst i verden.
Arbejds- og ThingSpeak-opsætning:
Dette IoT-baserede projekt har fire sektioner, for det første registrerer fugtigheds- og temperaturføler DHT11 fugtigheds- og temperaturdataene . For det andet udtrækker Arduino Uno DHT11-sensorens data som passende antal i procent og Celsius-skala og sender dem til Wi-Fi-modul. For det tredje sender Wi-Fi-modul ESP8266 dataene til ThingSpeaks Sever. Og endelig analyserer ThingSpeak dataene og viser dem i en grafform. Valgfri LCD bruges også til at vise temperatur og fugtighed.
ThingSpeak giver et meget godt værktøj til IoT-baserede projekter til Arduino. Ved at bruge ThingSpeak-webstedet kan vi overvåge vores data over Internettet hvor som helst, og vi kan også kontrollere vores system over Internettet ved hjælp af de kanaler og websider, der leveres af ThingSpeak. ThingSpeak 'Samler' dataene fra sensorerne, 'Analyser og visualiser' dataene og 'Handler' ved at udløse en reaktion. Her forklarer vi, hvordan du sender data til ThingSpeak-server ved hjælp af ESP8266 WIFI-modul:
1. Først og fremmest skal brugerne oprette en konto på ThingSpeak.com, derefter logge ind og klikke på Kom i gang.
2. Gå nu til menuen 'Kanaler', og klik på indstillingen Ny kanal på samme side for yderligere proces.
3. Nu vil du se en formular til oprettelse af kanalen, udfyld Navn og beskrivelse efter eget valg. Udfyld derefter 'Fugtighed' og 'Temperatur' i felterne 1 og felt 2, marker afkrydsningsfelterne for begge felter. Marker også afkrydsningsfeltet for 'Offentliggør' under i formularen og til sidst Gem kanalen. Nu er din nye kanal oprettet.
4. Klik nu på fanen 'API-nøgler', og gem skriv- og læs API-nøglerne, her bruger vi kun skrivnøglen. Du skal kopiere denne nøgle med char * api_key i koden.
5. Derefter skal du klikke på 'Dataimport / eksport' og kopiere URL'en til GET-anmodning om opdatering af kanalfeed, som er:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Nu skal brugeren åbne "api.thingspeak.com" ved hjælp af httpGet- funktionen med postUrl som "opdater? Api_key = SIWOYBX26OXQ1WMS & field1 = 0" og derefter sende data ved hjælp af datafeed eller opdateringsanmodningsadresse.
Inden data sendes, skal brugeren redigere denne forespørgselsstreng eller postUrl med datafelter for temperatur og fugtighed, som vist nedenfor. Her har vi tilføjet begge parametre i strengen, som vi skal sende via GET-anmodning til serveren, efter at vi har brugt httpGet til at sende dataene til serveren. Tjek den fulde kode nedenfor.
Sprintf (postUrl, "opdater? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Hele processen demonstreres i videoafsnittet i slutningen af denne artikel.
Arbejdet med dette projekt er baseret på single wire seriel kommunikation til at hente data fra DHT11. Først sender Arduino et startsignal til DHT-modulet, og derefter giver DHT et svarsignal med indeholdende data. Arduino indsamler og udtrækker dataene i to dele først er fugtighed og andet er temperatur og sender det derefter til 16x2 LCD og ThingSpeak-server. ThingSpeak viser dataene i form af graf som nedenfor:
Du kan lære mere om DHT11-sensor og dens grænseflade med Arduino her.
Beskrivelse af kredsløb:
Forbindelser til dette ThingSpeak temperatur- og fugtighedsovervågningsprojekt er meget enkle. Her bruges en flydende krystalskærm til visning af temperatur og fugtighed, som er direkte forbundet til Arduino i 4-bit-tilstand. Stifter på LCD, nemlig RS, EN, D4, D5, D6 og D7, er forbundet til Arduino digital pin nummer 14, 15, 16, 17, 18 og 19. Denne LCD er valgfri.
DHT11-sensormodulet er tilsluttet den digitale pin 12 i Arduino. Wi-Fi-modul ESP8266s Vcc- og GND-stifter er direkte forbundet til 3.3V, og GND af Arduino og CH_PD er også forbundet med 3.3V. Tx- og Rx-stifter på ESP8266 er direkte forbundet til pin 2 og 3 i Arduino. Software Serial Library bruges også her til at tillade seriel kommunikation på pin 2 og 3 i Arduino. Vi har allerede dækket interfacing af ESP8266 Wi-Fi-modul til Arduino i detaljer.
Programmeringsdel:
Programmering af dette projekt spiller en meget vigtig rolle for at udføre alle operationer. Først og fremmest inkluderer vi nødvendige biblioteker og initialiserer variabler.
#include "dht.h" // Inklusive bibliotek til dht #include
Efter det skal du indtaste din Skriv API-nøgle og tage nogle strenge.
char * api_key = "SIWOYBX26OXQ1WMS"; // Indtast din Skriv API-nøgle fra ThingSpeak statisk char postUrl; int humi, tem; ugyldig httpGet (streng ip, streng sti, int port = 80);
I ugyldig loop () -funktion læser vi temperatur og fugtighed og viser derefter disse målinger på LCD'et.
void send2server () -funktionen bruges til at sende dataene til serveren. Send2server-funktionen er en timer-afbrydelsesrutine, der ringer hvert 20. sekund. Når vi kalder opdateringsfunktion, kaldes timer-afbrydelsesrutine.
ugyldigt send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "opdater? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }