INHOUDSOPGAWE:

THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266: 9 stappe
THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266: 9 stappe

Video: THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266: 9 stappe

Video: THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266: 9 stappe
Video: DIY Temperature and Humidity Monitoring | Temperature sensor | Humidity sensor | ESP8266 2024, November
Anonim
THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266
THINGSPEAK TEMPERATUUR EN VOGTIGHEID APP MET ESP8266

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 benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig

Hardeware wat gebruik word om hierdie taak te voltooi:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C -adapter
  4. I2C kabel

Stap 2: Hardewareverbindings

Hardewareverbindings
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.

  1. 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.
  2. een draad word gebruik vir Vcc, die tweede draad vir GND en ander twee na SDA en SCL onderskeidelik
  3. Volgens die I2C -adapter word pin2 en pen 14 van 'n ESP8266 -bord onderskeidelik as SDA en SCL gebruik

Stap 3: Kode vir taakskedulering

Kode vir taakskedulering
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

Kode vir die lees van temperatuur- en humiditeitswaardes
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

Kode vir die aanbied van 'n webbediener
Kode vir die aanbied van 'n webbediener
Kode vir die aanbied van 'n webbediener
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

Opstelling van Thingspeak
Opstelling van Thingspeak
Opstelling van Thingspeak
Opstelling van Thingspeak
Opstelling van Thingspeak
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

Kode om data na iets te plaas, praat
Kode om data na iets te plaas, praat
Kode om data na iets te plaas, praat
Kode om data na iets te plaas, praat
Kode om data na iets te plaas, praat
Kode om data na iets te plaas, praat
Kode om data na iets te plaas, praat
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: