INHOUDSOPGAWE:
- Stap 1: hardeware benodig
- Stap 2: Hardewareverbindings
- Stap 3: Kode vir taakskedulering
- Stap 4: Kode vir die lees van temperatuur- en humiditeitswaardes
- Stap 5: Kode vir die aanbied van 'n webbediener
- Stap 6: Opstelling van Thingspeak
- Stap 7: Kode om data na iets te plaas, praat
- Stap 8: Algemene kode
- Stap 9: Krediete
Video: THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266: 9 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Terwyl ek met my elektroniese goed besig was, het ek die idee gekry om 'n web-gebaseerde weer-app te maak. Hierdie webprogram gebruik die SHT31-sensor om die temperatuur- en humiditeitsdata in real-time te kry. Ons het ons projek op die ESP8266 WiFi -module ontplooi. Aanlyn of vanlyn! U hoef nie bekommerd te wees nie, of u nou aanlyn of vanlyn is, u kry die weeropdaterings van oral en altyd. Hierdie webprogram plaas data op die plaaslike webbediener sowel as op die wolk. Vir wolkbedrywighede gebruik ons ThingSpeak API. SHT31 gebruik I2C om die data van die sensor af te haal.
SHT 31 is 'n temperatuur- en humiditeitsensor gemaak deur Sensirion. Die SHT31 bied 'n hoë akkuraatheid rondom ± 2% RH. Die humiditeitsbereik is tussen 0 en 100% en die temperatuurbereik is tussen -40 en 125 ° C. Dit is baie betroubaarder en vinniger met 8 sekondes sensorreaksietyd. Die funksie daarvan bevat verbeterde seinverwerking en I2C -versoenbaarheid. Dit het verskillende werkswyses wat dit energie -doeltreffend maak.
In hierdie tutoriaal het ons SHT 31 met die Adafruit Huzzah -bord gekoppel. Vir die lees van temperatuur- en humiditeitswaardes het ons die ESP8266 I2C -skild gebruik. Hierdie adapter maak alle penne toeganklik vir die gebruiker en bied gebruikersvriendelike I2C-omgewing.
Stap 1: hardeware benodig
Hardeware wat gebruik word om hierdie taak te voltooi:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C -adapter
- I2C kabel
Stap 2: Hardewareverbindings
Hierdie stap bevat die gids vir die aansluiting van hardeware. Hierdie afdeling verduidelik basies die bedradingskoppelings wat tussen die sensor en die ESP8266 benodig word. Die verbindings is soos volg.
- Die SHT31 werk oor I2C. Bogenoemde prent toon die verband tussen die ESP8266- en SHT31 -module. Ons gebruik 'n I2C -kabel daarvoor, óf ons kan 4 F tot F springdrade gebruik.
- een draad word gebruik vir Vcc, die tweede draad vir GND en ander twee na SDA en SCL onderskeidelik
- Volgens die I2C -adapter word pin2 en pen 14 van 'n ESP8266 -bord onderskeidelik as SDA en SCL gebruik
Stap 3: Kode vir taakskedulering
In hierdie tutoriaal voer ons drie bewerkings uit
- Lees die data van SHT11 met behulp van I2C -protokol
- gasheer vir die webbediener en plaas die sensorlesing op die webblad
- plaas die sensorlesings op ThingSpeak API
Om dit te bereik, gebruik ons TaskScheduler -biblioteek. Ons het drie verskillende take geskeduleer wat verwys na drie verskillende beheerbedrywighede. dit word soos volg gedoen
- Taak 1 is vir die lees van die sensorwaarde wat hierdie taak vir 1 sekonde uitvoer totdat dit 'n time -out van 10 sekondes bereik.
- As die taak1 sy tyd bereik het, is taak 2 geaktiveer en taak 1 is gedeaktiveer.
- Ons maak verbinding met AP in hierdie terugbel. Twee booleaanse veranderlikes word geneem om te sorg vir die skakel tussen STA en AP
- In taak 2 bied ons 'n webbediener aan by 192.168.1.4. Hierdie taak duur elke 5 sekondes totdat dit sy tydsduur bereik, wat 50 sekondes is
-
As taak 2 se tydsduur bereik word, is taak 3 geaktiveer en taak 2 is gedeaktiveer.
- Ons maak verbinding met STA (plaaslike IP) in hierdie terugslag. In taak 3 plaas ons die sensorlesing na die ThingSpeak API in die wolk
- Taak 3 duur elke vyf sekondes totdat dit sy tydsduur bereik het, dit wil sê 50 sekondes
- As die taak 3 sy tyd bereik het, word taak 1 weer aangeskakel en taak 3 is gedeaktiveer.
- As geen terugbel gebel word nie of die toestel nie gebruik word nie, gaan dit na Light Sleep en bespaar dus krag.
nietige taakI2CCallback ();
nietige taakI2CDisable (); ongeldige taakAPCallback (); void taskAPDisable (); nietige taakWiFiCallback (); void taskWiFiDisable (); // Take vir i2c, gasheer vir webbediener en plasing 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 vir take tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktiveer I2C taak tI2C.enable ();
Stap 4: Kode vir die lees van temperatuur- en humiditeitswaardes
Ons gebruik die Wire.h -biblioteek om die temperatuur- en humiditeitswaardes te lees. Hierdie biblioteek vergemaklik i2c -kommunikasie tussen die sensor en die meesterapparaat. 0x44 is die I2C -adres vir SHT31.
SHT31 werk in 'n ander werkswyse. U kan die datablad daarvoor raadpleeg. Ons gebruik 0x2C en 0x06 as MSB en LSB onderskeidelik vir 'n enkele opname.
// I2C taak terugbel ongeldig taskI2CCallback () {Serial.println ("taskI2CStarted"); ongetekende int root [6]; // begin oordrag vanaf 0x44; Wire.beginTransmission (Addr); // vir 'n eenmalige opname met 'n hoë herhaalbaarheid gebruik ons 0x2C (MSB) en 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // beëindig transmissie Wire.endTransmission (); // versoek grepe van 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); as (Wire.available () == 6) {// data [0] en data [1] 16 bit temperatuur bevat. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] bevat 8 bis CRC -wortel [2] = Wire.read (); // data [3] en data [4] bevat 16 bis humiditeitswortel [3] = Wire.read (); root [4] = Wire.read (); // data [5] bestaan uit 8 -bits CRC -wortel [5] = Wire.read (); } int temp = (wortel [0] * 256) + wortel [1]; // skuif MSB met 8 bisse voeg LSB float toe cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // skuif die MSB met 8 bisse, voeg LSB by, verdeel dit met volle resolusie en * 100 vir persentasie vlotvogtigheid = (100.0 * ((wortel [3] * 256.0) + wortel [4])) /65535.0; tempC = cTemp; tempF = fTemp; humid = humiditeit; Serial.print ("Temperatuur in C: / t"); Serial.println (string (cTemp, 1)); Serial.print ("Temperatuur in F: / t"); Serial.println (string (fTemp, 1)); Serial.print ("Humiditeit: / t"); Serial.println (string (humiditeit, 1)); }
Stap 5: Kode vir die aanbied van 'n webbediener
Ons het 'n webbediener vanaf ons toestel op 'n statiese IP gehuisves.
ESP8266WebServer -biblioteek word gebruik om die webbediener te huisves
- Eerstens moet ons IP -adres, gateway en subnetmasker verklaar om ons statiese IP te skep
- Verklaar nou ssid en wagwoord vir u toegangspunt. Maak verbinding met die toegangspunt vanaf enige STA -toestel
- gasheer die bediener op poort 80, wat 'n standaardpoort vir internetkommunikasieprotokol is, Hypertext Transfer Protocol (HTTP), voer 192.168.1.4 in u webblaaier in vir intro -webbladsy en 192.168.1.4/Waarde vir sensorleeswebblad
// statiese IP vir APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid en AP vir plaaslike WiFi in STA -modus const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid en pas vir AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer -bediener (80); ongeldige opstelling {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP begin"); server.handleClient (); } ongeldig onHandleDataRoot () {server.send (200, "text/html", PAGE1); } ongeldig onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Lêer nie gevind nie / n / n"; boodskap += "URI:"; boodskap += server.uri (); boodskap += "\ nMetode:"; boodskap += (server.method () == HTTP_GET)? "GET": "POST"; boodskap += "\ nArgumente:"; boodskap += server.args (); boodskap += "\ n"; server.send (404, "text/plain", boodskap); } ongeldig herkoppel APWiFi () {WiFi.mode (WIFI_AP_STA); vertraging (100); WiFi. Ontkoppel (); booleaanse status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == waar) {Serial.print ("Stel sagte-AP in …"); boolean ap = WiFi.softAP (APssid, APpass); as (ap == waar) {Serial.print ("gekoppel aan: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } bediener.begin ();
}
Stap 6: Opstelling van Thingspeak
ThingSpeak is 'n IoT -platform. ThingSpeak is 'n gratis webdiens waarmee u sensordata in die wolk kan versamel en stoor.
In hierdie stap gee ek u 'n kort prosedure om u Thing Speak -rekening op te stel
- Teken in vir 'n nuwe gebruikersrekening in ThingSpeak
- Skep 'n nuwe kanaal deur kanale, my kanale en dan nuwe kanaal te kies
- Wysig u velde
- Hierdie velde bevat u sensordata
- Let op die Write API -sleutel en kanaal -ID
- Op u Arduino -skets kan u die ThingSpeak -biblioteek vir Arduino gebruik, of u kan die data direk na die ThingSpeak API plaas
- in die volgende stap word uitgebrei oor die plasing van die inhoud in Thing Speak API
Stap 7: Kode om data na iets te plaas, praat
Hier plaas ons die sensorlesings op Thing Speak. die volgende stappe is nodig om hierdie taak te voltooi-
- Skep u rekening in ding praat Skep kanale en velde om u sensordata te stoor
- ons kan die data van ESP na thingSpeak kry en dit plaas met behulp van GET- en POST-versoeke na die api.
- ons kan ons data soos volg aan ThingSpeak plaas
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (humid); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /opdater HTTP /1.1 / n"); wifiClient.print ("Gasheer: api.thingspeak.com / n"); wifiClient.print ("Verbinding: sluit / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Inhoudstipe: toepassing/x-www-vorm-urlencoded / n"); wifiClient.print ("Inhoudlengte:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Stap 8: Algemene kode
Die algehele kode is beskikbaar in my GitHub -bewaarplek
Stap 9: Krediete
- Arduino JSON
- ESP826WebServer
- Taak skeduleerder
- SHT 31
- I2C -skandering
- HIH6130 instruksies handleiding
- Draad
- NCD.io
Aanbeveel:
Band temperatuur temperatuur module: 5 stappe
Bandtemperatuurmodule: agtergrond: Formula Student is die wêreld se mees gevestigde opvoedkundige ingenieurswese -kompetisie waarin studente van verskillende universiteite meeding om 'n formule -tipe voertuig te ontwerp, te ontwikkel, te bou en te jaag. Hierdie voertuie lewer hoë prestasie in terme van
Vogtigheid, druk en temperatuurberekening met behulp van BME280 en fotoninterfacing: 6 stappe
Berekening van humiditeit, druk en temperatuur met behulp van BME280 en fotoninterfacing. Ons besef dus dat hierdie parameters eintlik 'n belangrike rol speel in die berekening van die werkdoeltreffendheid van 'n stelsel in verskillende atmosferiese toestande
WYS VOGTIGHEID EN TEMPERATUUR OP LCD MET ARDUINO NANO: 5 stappe
VEILIGHEID EN TEMPERATUUR OP DIE LCD MET ARDUINO NANO: Die volgende instruksies handel oor die maak van 'n eenvoudige lcd -koppelvlak met arduino nano
Tuis sensor temperatuur temperatuur: 7 stappe
Huisnetwerktemperatuursensor: wat u moet weet om hierdie projek te maak: u moet weet van: - 'n paar elektroniese vaardighede (soldeer) - Linux - Arduino IDE (u moet addisionele borde in die IDE bywerk: http: // arduino.esp8266.com/stable/package_esp8266 …) - opdatering
Temperatuur- en humiditeitsmonitering op afstand met ESP8266 en Blynk -app: 15 stappe
Temperatuur- en humiditeitsmonitering op afstand met ESP8266 en Blynk -app: dit was my eerste projek met die ESP8266 -chip. Ek het pas 'n nuwe kweekhuis naby my huis gebou en dit was vir my interessant wat gedurende die dag daar aangaan? Ek bedoel hoe temperatuur en humiditeit verander? Is die kweekhuis genoeg geventileer? So besluit ek