Kosteus ja lämpötila ovat hyvin yleisiä parametreja mittaamiseen monissa paikoissa, kuten maatila, kasvihuone, lääketieteen, teollisuuden koti ja toimistot. Olemme jo käsitelleet kosteuden ja lämpötilan mittausta Arduinolla ja näyttäneet tiedot LCD-näytöllä.
Tässä IoT-projektissa aiomme seurata kosteutta ja lämpötilaa Internetissä ThingSpeakin avulla, jossa näytämme nykyiset kosteus- ja lämpötilatiedot Internetissä ThingSpeak-palvelimen avulla. Se toteutetaan Arduinon, DHT11-anturimoduulin, ESP8266 WIFI-moduulin ja LCD: n välisellä tiedonsiirrolla. Celsius-asteikon lämpömittari ja kosteusasteen prosenttimittari näyttävät ympäristön lämpötilan ja kosteuden nestekidenäytön kautta ja lähettävät sen myös ThingSpeak-palvelimelle suoraa seurantaa varten kaikkialta maailmasta.
Työskentely ja ThingSpeak-asennus:
Tämä IoT-pohjainen projekti, jossa on neljä osaa, ensinnäkin kosteus- ja lämpötila-anturi DHT11 tunnistaa kosteus- ja lämpötilatiedot . Toiseksi Arduino Uno purkaa DHT11-anturin tiedot sopivana lukumääränä prosentteina ja Celsius-asteikkona ja lähettää sen Wi-Fi-moduuliin. Kolmanneksi Wi-Fi-moduuli ESP8266 lähettää tiedot ThingSpeakin Severille. Ja lopuksi ThingSpeak analysoi tiedot ja näyttää ne graafisessa muodossa. Valinnaista nestekidenäyttöä käytetään myös lämpötilan ja kosteuden näyttämiseen.
ThingSpeak tarjoaa erittäin hyvän työkalun IoT-pohjaisiin projekteihin Arduinolle. ThingSpeak-sivustoa käyttämällä voimme seurata tietojamme Internetissä mistä tahansa, ja voimme myös hallita järjestelmäämme Internetin kautta ThingSpeakin tarjoamien kanavien ja verkkosivujen avulla. ThingSpeak 'kerää' tietoja antureista, 'analysoi ja visualisoi' tiedot ja 'teot' käynnistämällä reaktion. Tässä kerromme, kuinka tietoja lähetetään ThingSpeak-palvelimelle ESP8266 WIFI -moduulin avulla:
1. Ensinnäkin käyttäjän on luotava tili ThingSpeak.com-palvelussa, kirjauduttava sisään ja napsauttamalla Aloita.
2. Siirry nyt Kanavat-valikkoon ja napsauta Uusi kanava -vaihtoehtoa samalla sivulla jatkaaksesi prosessia.
3. Nyt näet lomakkeen kanavan luomiseen, täytä nimi ja kuvaus valintasi mukaan. Täytä sitten 'Kosteus' ja 'Lämpötila' kenttien 1 ja 2 kenttiin, valitse molempien kenttien valintaruudut. Valitse myös lomakkeen alla oleva Tee julkinen -valintaruutu ja lopuksi Tallenna kanava. Nyt uusi kanava on luotu.
4. Napsauta nyt 'API-avaimet' -välilehteä ja tallenna Write and Read API -avaimet, tässä käytämme vain Write-avainta. Sinun on kopioitava tämä avain koodissa char * api_key .
5. Napsauta sen jälkeen "Tietojen tuonti / vienti" ja kopioi Päivitä kanavan syöte GET-pyynnön URL-osoite, joka on:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Käyttäjän on nyt avattava “api.thingspeak.com” käyttämällä httpGet- funktiota postUrl- nimellä ”update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0” ja lähetettävä sitten tietoja tietosyötteen tai päivityspyyntöosoitteen avulla.
Ennen tietojen lähettämistä käyttäjän on muokattava tätä kyselymerkkijonoa tai postUrl lämpötilan ja kosteuden tietokentillä, kuten alla on esitetty. Täällä olemme lisänneet molemmat parametrit merkkijonoon, joka meidän on lähetettävä GET-pyynnön avulla palvelimelle, sen jälkeen kun olemme lähettäneet tietoja palvelimelle httpGetin avulla. Tarkista koko koodi alla.
Sprintf (postUrl, "päivitys? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Koko prosessi on esitetty Video- osassa tämän artikkelin lopussa.
Tämän projektin työskentely perustuu yhden langan sarjaliikenteeseen tietojen hakemiseksi DHT11: ltä. Ensin Arduino lähettää aloitussignaalin DHT-moduulille ja sitten DHT antaa vastesignaalin, joka sisältää tietoja. Arduino kerää ja poimii tiedot kahteen osaan ensin kosteus ja toinen lämpötila ja lähettää sen sitten 16x2 LCD- ja ThingSpeak-palvelimelle. ThingSpeak näyttää tiedot kaaviona seuraavasti:
Voit oppia lisää DHT11-anturista ja sen liittymisestä Arduinoon täältä.
Piirin kuvaus:
Tämän ThingSpeakin lämpötilan ja kosteuden seurantaprojektin liitännät ovat hyvin yksinkertaisia. Tässä nestekidenäyttöä käytetään lämpötilan ja kosteuden näyttämiseen, joka on kytketty suoraan Arduinoon 4-bittisessä tilassa. LCD-nastat, nimittäin RS, EN, D4, D5, D6 ja D7, on kytketty Arduinon digitaalisiin pin-numeroihin 14, 15, 16, 17, 18 ja 19. Tämä LCD-näyttö on valinnainen.
DHT11-anturimoduuli on kytketty Arduinon digitaaliseen nastaan 12. Wi-Fi-moduulin ESP8266 Vcc- ja GND-nastat on kytketty suoraan 3.3V: hen, Arduinon GND ja CH_PD on myös liitetty 3.3V: hen. ESP8266: n Tx- ja Rx-nastat on kytketty suoraan Arduinon nastoihin 2 ja 3. Ohjelmistosarjakirjastoa käytetään myös tässä sallimaan sarjaliikenteen Arduinon nastoilla 2 ja 3. Olemme jo käsitelleet ESP8266 Wi-Fi -moduulin liittämisen Arduinoon yksityiskohtaisesti.
Ohjelmointiosa:
Tämän projektin ohjelmointiosalla on erittäin tärkeä rooli kaikkien toimintojen suorittamisessa. Ensinnäkin sisällytämme vaaditut kirjastot ja alustamme muuttujat.
#include "dht.h" // Sisältää dht: n #include kirjaston
Kun se on kirjoitettu, kirjoita API-avain ja ota joitain merkkijonoja.
char * api_key = "SIWOYBX26OXQ1WMS"; // Kirjoita Write API -avaimesi ThingSpeak staattisesta char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
In void loop () funktio me lukee lämpötila ja kosteus, ja sitten näyttää ne lukemat LCD.
void send2server () -toimintoa käytetään tietojen lähettämiseen palvelimelle. Send2server-toiminto on ajastettu keskeytyspalvelurutiini, joka soittaa 20 sekunnin välein. Kun kutsumme päivitystoimintoa, kutsutaan ajastimen keskeytyspalvelurutiini.
void send2server () {char tempStr; char kosteaStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, kosteaStr); sprintf (postUrl, "päivitys? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }