Sisukord:

THINGSPEAK TEMPERATURE AND HUMIDITY APP, kasutades ESP8266: 9 sammu
THINGSPEAK TEMPERATURE AND HUMIDITY APP, kasutades ESP8266: 9 sammu

Video: THINGSPEAK TEMPERATURE AND HUMIDITY APP, kasutades ESP8266: 9 sammu

Video: THINGSPEAK TEMPERATURE AND HUMIDITY APP, kasutades ESP8266: 9 sammu
Video: DHT11 & NodeMCU Tutorial || Humidity & Temperature Monitoring over Thingspeak 2024, November
Anonim
THINGSPEAK TEMPERATURE AND HUMIDITY APP, kasutades ESP8266
THINGSPEAK TEMPERATURE AND HUMIDITY APP, kasutades ESP8266

Oma elektrooniliste asjadega nokitsedes tekkis mul idee teha veebipõhine ilmarakendus. See veebirakendus kasutab reaalajas temperatuuri ja niiskuse andmete saamiseks SHT31 andurit. Oleme oma projekti kasutusele võtnud WiFi -moodulis ESP8266. Online või offline! Pole vaja muretseda, olenemata sellest, kas olete võrgus või väljaspool seda, saate ilmateateid kõikjalt ja igal ajal. See veebirakendus postitab andmed nii kohalikku veebiserverisse kui ka pilve. Pilvetoimingute jaoks kasutame ThingSpeak API -d. SHT31 kasutab andurilt andmete saamiseks I2C -d.

SHT 31 on Sensirioni toodetud temperatuuri ja niiskuse andurid. SHT31 tagab kõrge täpsuse umbes ± 2% RH. Selle niiskus on vahemikus 0 kuni 100% ja temperatuurivahemik -40 kuni 125 ° C. See on 8 sekundi anduri reageerimisajaga palju usaldusväärsem ja kiirem. Selle funktsionaalsus hõlmab täiustatud signaalitöötlust ja I2C ühilduvust. Sellel on erinevad töörežiimid, mis muudavad selle energiatõhusaks.

Selles õpetuses oleme liidestanud SHT 31 Adafruit Huzzah plaadiga. Temperatuuri ja niiskuse väärtuste lugemiseks kasutasime kaitsekilpi ESP8266 I2C. See adapter muudab kõik tihvtid kasutajale kättesaadavaks ja pakub kasutajasõbralikku I2C keskkonda.

Samm: vajalik riistvara

Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara

Selle ülesande täitmiseks kasutatav riistvara:

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

Samm: riistvaraühendused

Riistvaraühendused
Riistvaraühendused

See samm sisaldab riistvara ühendamise juhendit. Selles jaotises selgitatakse põhimõtteliselt anduri ja ESP8266 vahel vajalikke juhtmestiku ühendusi. Ühendused on järgmised.

  1. SHT31 töötab üle I2C. Ülaltoodud pilt näitab ühendust ESP8266 ja SHT31 mooduli vahel. Kasutame selle jaoks I2C -kaablit, kas saame kasutada 4 F kuni F hüppajajuhtmeid.
  2. ühte juhet kasutatakse Vcc jaoks, teist traati GND jaoks ja teisi kahte vastavalt SDA ja SCL jaoks
  3. Vastavalt I2C adapterile kasutatakse ESP8266 plaadi pin2 ja tihvti 14 vastavalt SDA ja SCL -na

3. samm: ülesannete ajastamise kood

Ülesannete ajastamise kood
Ülesannete ajastamise kood

Selles õpetuses teeme kolme toimingut

  • Lugege SHT11 andmeid I2C protokolli abil
  • hostida veebiserverit ja postitada sensori näit veebilehele
  • postitage anduri näidud ThingSpeak API -sse

Selle saavutamiseks kasutame TaskScheduleri teeki. Oleme kavandanud kolm erinevat ülesannet, mis viitavad kolmele erinevale kontrollitoimingule. seda tehakse järgmiselt

  • Ülesanne 1 on anduri väärtuse lugemiseks, see ülesanne kestab 1 sekund, kuni see jõuab 10 sekundi aegumiseni.
  • Kui ülesanne 1 saab oma aja, on ülesanne 2 lubatud ja ülesanne 1 keelatud.
  • Selles tagasihelistamises loome ühenduse AP -ga. STA ja AP vahel vahetamise eest hoolitsetakse kahe loogilise muutuja eest
  • Ülesandes 2 hostime veebiserverit aadressil 192.168.1.4. See ülesanne kestab iga 5 sekundi järel, kuni jõuab aegumiseni, mis on 50 sekundit
  • Kui ülesanne 2 jõuab ajalõpule, on ülesanne 3 lubatud ja ülesanne 2 keelatud.
  • Selles tagasipöördumises loome ühenduse STA -ga (kohalik IP). Ülesandes 3 postitame anduri näidu ThingSpeak API pilve

  • Ülesanne 3 töötab iga viie sekundi tagant, kuni see jõuab oma aegumiseni, st 50 sekundini
  • Kui ülesanne 3 saab oma aja, on ülesanne 1 uuesti lubatud ja ülesanne 3 keelatud.
  • Kui tagasihelistamist ei helistata või seade on jõudeolekus, läheb see valgusrežiimi, säästes seega energiat.

tühine ülesanneI2CCallback ();

void taskI2CDisable (); tühine ülesanneAPCallback (); void taskAPDisable (); tühine ülesanneWiFiCallback (); tühine ülesanneWiFiDisable (); // Ülesanded i2c -le, veebiserveri hostimine ja postitamine asjade kõnele Task tI2C (1 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable); Ülesanne tI2C (1 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable); Ülesanne tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL ja & taskAPDisable); Task tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable); // ülesannete ajalõpp tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // lubage I2C ülesanne tI2C.enable ();

Samm: temperatuuri ja niiskuse väärtuste lugemise kood

Temperatuuri ja niiskuse väärtuste lugemise kood
Temperatuuri ja niiskuse väärtuste lugemise kood

Temperatuuri ja niiskuse väärtuste lugemiseks kasutame Wire.h raamatukogu. See teek hõlbustab i2c suhtlust anduri ja põhiseadme vahel. 0x44 on SHT31 I2C -aadress.

SHT31 töötab erinevas töörežiimis. Selle jaoks saate viidata andmelehele. Kasutame ühe võtte tegemiseks vastavalt MSB ja LSB -d vastavalt 0x2C ja 0x06.

// I2C ülesande tagasihelistamine tühine taskI2CCallback () {Serial.println ("taskI2CStarted"); allkirjastamata int juur [6]; // alustada edastamist alates 0x44; Wire.beginTransmission (Addr); // suure korratavusega ühe lasu edastamiseks kasutame 0x2C (MSB) ja 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // lõppülekanne Wire.endTransmission (); // taotle baite alates 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); kui (Wire.available () == 6) {// andmed [0] ja andmed [1] sisaldavad 16 bitti temperatuuri. juur [0] = Wire.read (); juur [1] = Wire.read (); // andmed [2] sisaldavad 8 bitti CRC juur [2] = Wire.read (); // andmed [3] ja andmed [4] sisaldavad 16 bitti niiskust juur [3] = Wire.read (); juur [4] = Wire.read (); // andmed [5] koosneb 8 -bitisest CRC juurist [5] = Wire.read (); } int temp = (juur [0] * 256) + juur [1]; // nihutage MSB 8 bitti võrra lisage LSB ujuk cTemp = -45,0 + (175,0 * temp /65535,0); ujuk fTemp = (cTemp * 1,8) + 32,0; // nihutage MSB -d 8 bitti, lisage sellele LSB, jagage see täisresolutsiooniga ja * 100 ujuki niiskuse protsendi jaoks = (100,0 * ((juur [3] * 256,0) + juur [4])) /65535.0; tempC = cTemp; tempF = fTemp; niiske = niiskus; Serial.print ("Temperatuur C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatuur F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Niiskus: / t"); Serial.println (String (niiskus, 1)); }

Samm: veebiserveri hostimise kood

Veebiserveri hostimise kood
Veebiserveri hostimise kood
Veebiserveri hostimise kood
Veebiserveri hostimise kood

Oleme hostinud oma seadmest veebiserveri staatilisel IP -l.

Veebiserveri majutamiseks kasutatakse ESP8266WebServeri teeki

  • Esmalt peame staatilise IP loomiseks deklareerima IP -aadressi, lüüsi ja alamvõrgu maski
  • Nüüd deklareerige oma pääsupunkti jaoks ssid ja parool. Ühendage juurdepääsupunktiga mis tahes STA -seadmest
  • hostige serverit pordil 80, mis on Interneti -sideprotokolli vaikeport, sisestage hüperteksti edastusprotokoll (HTTP) oma veebibrauserisse sissejuhatava veebilehe jaoks 192.168.1.4 ja 192.168.1.4/Väärtus sensori lugemise veebilehe jaoks

// staatiline Ip APIP -aadressile ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid ja AP kohaliku WiFi jaoks STA -režiimis const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid ja pass AP const char jaoks APssid = "********"; const char APpass = "********"; ESP8266WebServer server (80); tühine seadistus {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP start"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Faili ei leitud / n / n"; sõnum += "URI:"; sõnum += server.uri (); message += "\ nMetod:"; sõnum += (server.method () == HTTP_GET)? "GET": "POST"; message += "\ nArgumendid:"; sõnum += server.args (); sõnum += "\ n"; server.send (404, "tekst/tavaline", sõnum); } void reconnectAPWiFi () {WiFi.mode (WIFI_AP_STA); viivitus (100); WiFi.disconnect (); boolean olek = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (olek == tõene) {Serial.print ("Soft-AP seadistamine …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("ühendatud: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

6. toiming: asjade seadistamine

Asjade kõne seadistamine
Asjade kõne seadistamine
Asjade kõne seadistamine
Asjade kõne seadistamine
Asjade kõne seadistamine
Asjade kõne seadistamine

ThingSpeak on IoT platvorm. ThingSpeak on tasuta veebiteenus, mis võimaldab teil andurite andmeid pilve koguda ja salvestada.

Selles etapis annan teile lühikese protseduuri oma Thing Speak konto seadistamiseks

  • Registreeruge ThingSpeakis uue kasutajakonto saamiseks
  • Looge uus kanal, valides Kanalid, Minu kanalid ja seejärel Uus kanal
  • Muutke oma väljad
  • Need väljad sisaldavad teie anduri andmeid
  • Pange tähele API kirjutamise võti ja kanali ID
  • Arduino visandil saate kasutada Arduino jaoks ThingSpeaki teeki või saate andmed otse postitada ThingSpeak API -sse
  • järgmine samm käsitleb sisu postitamist Thing Speak API -sse

Samm 7: kood andmete postitamiseks Thing Speaki

Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood

Siin postitame anduri näidud Thing Speaki. selle ülesande täitmiseks on vaja järgmisi samme-

  • Looge oma kõnele mõeldud konto Looge andurite andmete salvestamiseks kanaleid ja välju
  • saame hankida ja postitada andmed ESP-st saidile thingSpeak ja vastupidi, kasutades apetile GET- ja POST-päringuid.
  • saame oma andmed ThingSpeaki postitada järgmiselt

id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& väli1 ="; postStr += String (niiske); postStr += "& väli2 ="; postStr += String (tempC); postStr += "& väli3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /uuenda HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Ühendus: sulge / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Sisu tüüp: application/x-www-form-urlencoded / n"); wifiClient.print ("Sisu-pikkus:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

8. samm: üldine kood

Üldine kood on saadaval minu GitHubi hoidlas

9. samm: krediidid

  • Arduino JSON
  • ESP826WebServer
  • Ülesannete planeerija
  • SHT 31
  • I2C skaneerimine
  • HIH6130 juhendatav juhend
  • Traat
  • NCD.io

Soovitan: