Inhoudsopgave:
- Stap 1: Benodigde hardware
- Stap 2: Hardwareverbindingen
- Stap 3: Code voor taakplanning
- Stap 4: Code voor het lezen van temperatuur- en vochtigheidswaarden
- Stap 5: Code voor het hosten van een webserver
- Stap 6: Thingspeak-configuratie
- Stap 7: Code voor het posten van gegevens naar Thing Speak
- Stap 8: Algemene code
- Stap 9: Tegoeden
Video: THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266: 9 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Tijdens het sleutelen aan mijn elektronische spullen, kwam ik op het idee om een webgebaseerde weer-app te maken. Deze web-app gebruikt de SHT31-sensor voor het verkrijgen van de realtime temperatuur- en vochtigheidsgegevens. We hebben ons project geïmplementeerd op de ESP8266 WiFi-module. Online of offline! U hoeft zich geen zorgen te maken, of u nu online of offline bent, u krijgt de weersupdates overal en altijd. Deze web-app plaatst gegevens zowel naar de lokale webserver als naar de cloud. Voor cloudactiviteiten gebruiken we de ThingSpeak API. SHT31 gebruikt I2C om de gegevens van de sensor te krijgen.
SHT 31 is een temperatuur- en vochtigheidssensor gemaakt door Sensirion. De SHT31 biedt een hoge mate van nauwkeurigheid rond ±2% RV. Het vochtigheidsbereik ligt tussen 0 en 100% en het temperatuurbereik ligt tussen -40 en 125 °C. Het is veel betrouwbaarder en sneller met een sensorresponstijd van 8 seconden. De functionaliteit omvat verbeterde signaalverwerking en I2C-compatibiliteit. Het heeft verschillende werkingsmodi waardoor het energiezuinig is.
In deze tutorial hebben we de SHT 31 gekoppeld aan het Adafruit Huzzah-bord. Voor het lezen van temperatuur- en vochtigheidswaarden hebben we ESP8266 I2C-schild gebruikt. Deze adapter maakt alle pinnen toegankelijk voor de gebruiker en biedt een gebruiksvriendelijke I2C-omgeving.
Stap 1: Benodigde hardware
Hardware die wordt gebruikt om deze taak te voltooien:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C-adapter
- I2C-kabel
Stap 2: Hardwareverbindingen
Deze stap omvat de handleiding voor het aansluiten van hardware. In dit gedeelte worden in principe de bedradingsverbindingen tussen de sensor en de ESP8266 uitgelegd. De aansluitingen zijn als volgt.
- De SHT31 werkt via I2C. De bovenstaande afbeelding toont de verbinding tussen ESP8266 en SHT31-module. We gebruiken hiervoor een I2C-kabel of we kunnen 4 F-naar-F-jumpers gebruiken.
- één draad wordt gebruikt voor Vcc, de tweede draad voor GND en andere twee voor respectievelijk SDA en SCL
- Volgens de I2C-adapter worden pin2 en pin 14 van een ESP8266-bord respectievelijk als SDA en SCL gebruikt
Stap 3: Code voor taakplanning
In deze tutorial voeren we drie bewerkingen uit:
- Lees de gegevens van SHT11 met behulp van het I2C-protocol
- host de webserver en plaats de sensormeting op de webpagina
- post de sensormetingen naar de ThingSpeak API
Om dit te bereiken gebruiken we de TaskScheduler-bibliotheek. We hebben drie verschillende taken gepland die verwijzen naar drie verschillende controleoperaties. dit gaat als volgt
- Taak 1 is voor het uitlezen van de sensorwaarde. Deze taak duurt 1 seconde totdat de time-out van 10 seconden wordt bereikt.
- Wanneer Taak1 zijn time-out bereikt, is Taak 2 ingeschakeld en Taak1 uitgeschakeld.
- We maken verbinding met AP in deze callback. Er worden twee booleaanse variabelen gebruikt om te zorgen voor het schakelen tussen STA en AP
- In Taak 2 hosten we een webserver op 192.168.1.4. Deze taak wordt elke 5 seconden uitgevoerd totdat de time-out is bereikt die 50 seconden is
-
Wanneer Taak 2 de time-out bereikt, is Taak 3 ingeschakeld en Taak 2 uitgeschakeld.
- We maken verbinding met STA (lokaal IP) in deze calback. In taak 3 plaatsen we de sensormeting naar de ThingSpeak-API in de cloud
- Taak 3 wordt elke vijf seconden uitgevoerd totdat de time-out is bereikt, d.w.z. 50 sec
- Wanneer de Task3 zijn time-out bereikt, wordt Taak 1 weer ingeschakeld en Taak 3 uitgeschakeld.
- Wanneer er niet wordt teruggebeld of het apparaat inactief is, gaat het naar de lichte slaapstand, waardoor energie wordt bespaard.
ongeldige taakI2CCallback();
void taskI2CDisable(); ongeldige taakAPCallback(); ongeldige taakAPDisable(); ongeldige taakWiFiCallback(); ongeldige taakWiFiDisable(); //Taken voor i2c, webserver hosten en posten op thingspeak Taak tI2C (1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDisable); Taak tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDisable); Taak tAP(5*TASK_SECOND, TASK_FOREVER, &taskAPCallback, &ts, false, NULL, &taskAPDisable); Taak tWiFi (5* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable); //time-out voor taken tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout(50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // schakel I2C-taak tI2C.enable in ();
Stap 4: Code voor het lezen van temperatuur- en vochtigheidswaarden
We gebruiken de Wire.h-bibliotheek om de temperatuur- en vochtigheidswaarden te lezen. Deze bibliotheek vergemakkelijkt i2c-communicatie tussen de sensor en het masterapparaat. 0x44 is het I2C-adres voor SHT31.
SHT31 werkt in een andere bedrijfsmodus. U kunt daarvoor verwijzen naar de datasheet. We gebruiken 0x2C en 0x06 als respectievelijk MSB en LSB voor single shot operatie.
// I2C taak callback ongeldig taskI2CCallback(){ Serial.println("taskI2CStarted"); niet-ondertekende int root[6]; // begin met verzenden vanaf 0x44; Wire.beginTransmission (Addr); // voor transmissie in één keer met hoge herhaalbaarheid gebruiken we 0x2C(MSB) en 0x06(LSB) Wire.write(0x2C); Draad.schrijven (0x06); // beëindig transmissie Wire.endTransmission (); // verzoek bytes van 0x44 Wire.beginTransmission (Addr); Wire.endTransmission(); Wire.requestFrom(Addr, 6); if(Wire.available() == 6){ //data[0] en data[1] bevat 16 bit temperatuur. root[0] = Wire.read(); root[1] =Draad.lezen(); //data[2] bevat 8 bit CRC root [2] = Wire.read(); //data[3] en data[4] bevatten 16 bit vochtigheid root [3] = Wire.read(); root[4] = Wire.read(); //data[5] bestaat uit 8 bit CRC root [5] = Wire.read(); } int temp = (root[0] * 256) + root[1]; // MSB met 8 bits verschuiven, LSB float toevoegen cTemp = -45,0 + (175,0 * temp / 65535.0); float fTemp = (cTemp * 1.8) + 32,0; // verschuif de MSB met 8 bits voeg LSB eraan toe gedeeld door volledige resolutie en * 100 voor percentage zwevende vochtigheid = (100.0 * ((root [3] * 256,0) + root [4])) / 65535.0; tempC = cTemp; tempF = fTemp; vochtig = vochtigheid; Serial.print("Temperatuur in C:\t"); Serial.println(String(cTemp, 1)); Serial.print("Temperatuur in F:\t"); Serial.println(String(fTemp, 1)); Serial.print("Vochtigheid:\t "); Serial.println (String (vochtigheid, 1)); }
Stap 5: Code voor het hosten van een webserver
We hebben een webserver vanaf ons apparaat gehost op een statisch IP-adres.
ESP8266WebServer-bibliotheek wordt gebruikt om de webserver te hosten
- Eerst moeten we het IP-adres, de gateway en het subnetmasker opgeven om ons statische IP-adres te maken
- Verklaar nu ssid en wachtwoord voor uw toegangspunt. Maak verbinding met het toegangspunt vanaf elk STA-apparaat
- host de server op poort 80, wat een standaardpoort is voor internetcommunicatieprotocol, Hypertext Transfer Protocol (HTTP) voer 192.168.1.4 in uw webbrowser in voor de introductie-webpagina en 192.168.1.4/Value voor de webpagina voor het lezen van sensoren
//static IP voor APIPAddress ap_local_IP(192, 168, 1, 4);IPAddress ap_gateway(192, 168, 1, 254); IPA-adres ap_subnet(255, 255, 255, 0); //ssid en AP voor lokale wifi in STA-modus const char WiFissid = "*********"; const char WiFipass = "*********"; //ssid en geef door voor AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer-server (80); void setup {server.on("/", onHandleDataRoot); server.on("/Value", onHandleDataFeed); server.onNotFound(onHandleNotFound);} void taskAPCallback(){ Serial.println("taskAP begonnen"); server.handleClient(); } void onHandleDataRoot(){ server.send(200, "text/html", PAGE1); } void onHandleDataFeed(){ server.send(200, "text/html", PAGE2); } void onHandleNotFound(){ String message = "Bestand niet gevonden\n\n"; bericht += "URI: "; bericht += server.uri(); bericht += "\nMethode: "; bericht += (server.methode() == HTTP_GET)?"GET":"POST"; bericht += "\nArgumenten: "; bericht += server.args(); bericht += "\n"; server.send(404, "tekst/gewoon", bericht); } void reconnectAPWiFi(){ WiFi.mode(WIFI_AP_STA); vertraging (100); WiFi.verbinding verbreken(); booleaanse status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if(status ==true){ Serial.print("Soft-AP instellen … "); boolean ap = WiFi.softAP(APssid, APpass); if(ap==true){ Serial.print("verbonden met:\t"); //IPAdres mijnIP = WiFi.softAPIP(); Seriële.println(WiFi.softAPIP()); } server.begin();
}
Stap 6: Thingspeak-configuratie
ThingSpeak is een IoT-platform. ThingSpeak is een gratis webservice waarmee u sensorgegevens in de cloud kunt verzamelen en opslaan.
In deze stap geef ik je een korte procedure om je Thing Speak-account in te stellen
- Meld u aan voor een nieuw gebruikersaccount in ThingSpeak
- Maak een nieuw kanaal door Kanalen, Mijn kanalen en vervolgens Nieuw kanaal te selecteren
- Bewerk uw velden
- Deze velden bevatten uw sensorgegevens
- Let op de Schrijf API-sleutel en kanaal-ID
- Op uw Arduino-schets kunt u de ThingSpeak-bibliotheek voor Arduino gebruiken of u kunt de gegevens rechtstreeks POST naar de ThingSpeak-API
- de volgende stap gaat dieper in op het plaatsen van de inhoud op de Thing Speak API
Stap 7: Code voor het posten van gegevens naar Thing Speak
Hier plaatsen we de sensormetingen op Thing Speak. de volgende stappen zijn nodig om deze taak te voltooien-
- Maak je account aan in thing speakCreëer kanalen en velden om je sensorgegevens op te slaan
- we kunnen de gegevens van ESP naar thingSpeak krijgen en posten en vice versa met behulp van GET- en POST-verzoeken naar de api.
- we kunnen onze gegevens als volgt op ThingSpeak plaatsen:
id taskWiFiCallback(){ WiFiClient wifiClient; if(wifiClient.connect(hostId, 80)){ String postStr = apiKey; postStr +="&field1="; postStr += String (vochtig); postStr +="&field2="; postStr += String (tempC); postStr +="&field3="; postStr += String (tempF); postStr += "\r\n\r\n"; wifiClient.print("POST /update HTTP/1.1\n"); wifiClient.print("Host: api.thingspeak.com\n"); wifiClient.print("Verbinding: sluiten\n"); wifiClient.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); wifiClient.print("Content-Type: application/x-www-form-urlencoded\n"); wifiClient.print("Inhoudslengte: "); wifiClient.print(postStr.length()); wifiClient.print("\n\n"); wifiClient.print(postStr); } wifiClient.stop(); }
Stap 8: Algemene code
De algemene code is beschikbaar in mijn GitHub-repository
Stap 9: Tegoeden
- Arduino JSON
- ESP826Webserver
- Taakplanner
- SHT 31
- I2C-scan
- HIH6130 instructables-tutorial
- Draad
- NCD.io
Aanbevolen:
Berekening van vochtigheid, druk en temperatuur met behulp van BME280 en Photon Interfacing: 6 stappen
Berekening van vochtigheid, druk en temperatuur met behulp van BME280 en Photon Interfacing. We komen verschillende projecten tegen die temperatuur-, druk- en vochtigheidsbewaking vereisen. We realiseren ons dus dat deze parameters eigenlijk een cruciale rol spelen bij het hebben van een schatting van de werkefficiëntie van een systeem bij verschillende atmosferische cond
Een kas automatiseren met LoRa! (Deel 1) -- Sensoren (temperatuur, vochtigheid, bodemvocht): 5 stappen
Een kas automatiseren met LoRa! (Deel 1) || Sensoren (Temperatuur, Vochtigheid, Bodemvocht): In dit project laat ik zien hoe ik een kas heb geautomatiseerd. Dat betekent dat ik je laat zien hoe ik de kas heb gebouwd en hoe ik de stroom- en automatiseringselektronica heb aangesloten. Ik zal je ook laten zien hoe je een Arduino-bord programmeert dat L
ThingSpeak, ESP32 en lange afstand draadloze temperatuur en vochtigheid - Ajarnpa
ThingSpeak, ESP32 en draadloze temperatuur en vochtigheid op lange afstand: in deze zelfstudie meten we verschillende temperatuur- en vochtigheidsgegevens met behulp van de temperatuur- en vochtigheidssensor. U leert ook hoe u deze gegevens naar ThingSpeak kunt sturen. Zodat u het overal kunt analyseren voor verschillende toepassingen
Temperatuur en vochtigheid internetlogger met display met behulp van ESP8266 - Ajarnpa
Temperatuur- en vochtigheidsinternetlogger met display met ESP8266: ik wilde een klein project delen waarvan ik denk dat je het leuk zult vinden. Het is een kleine, duurzame internet-enabled temperatuur- en vochtigheids-internetlogger met display. Dit logt in op emoncms.org en optioneel, ofwel lokaal op een Raspberry PI of je eigen emoncm
Stuur temperatuur en vochtigheid naar de Blynk-app (Wemos D1 Mini Pro). - Ajarnpa
Stuur temperatuur en vochtigheid naar Blynk-app (Wemos D1 Mini Pro).: Dit Instructable kijkt naar het gebruik van de Wemos D1 Mini Pro om datta (temperatuur en vochtigheid) naar de Blynk-app te sturen