Turinys:
- 1 veiksmas: reikalinga aparatinė įranga
- 2 žingsnis: aparatinės įrangos jungtys
- 3 žingsnis: užduočių planavimo kodas
- 4 žingsnis: Temperatūros ir drėgmės verčių skaitymo kodas
- 5 veiksmas: žiniatinklio serverio prieglobos kodas
- 6 veiksmas: „Thingspeak“sąranka
- 7 veiksmas: duomenų paskelbimo „Thing Speak“kodas
- 8 žingsnis: bendras kodas
- 9 žingsnis: kreditai
Video: THINGSPEAK TEMPERATURE AND HUMIDITY APP, naudojant ESP8266: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Tvarkydamas savo elektroninius dalykus, man kilo mintis sukurti žiniatinklio orų programą. Ši žiniatinklio programa naudoja SHT31 jutiklį, kad gautų realaus laiko temperatūros ir drėgmės duomenis. Mes įdiegėme savo projektą ESP8266 „WiFi“modulyje. Prisijungę arba neprisijungę! Nereikia jaudintis, nesvarbu, ar esate prisijungę, ar neprisijungę, orų naujinius gausite bet kur ir bet kada. Ši žiniatinklio programa skelbia duomenis į vietinį žiniatinklio serverį ir į debesį. Debesų operacijoms naudojame „ThingSpeak“API. SHT31 naudoja I2C, kad gautų duomenis iš jutiklio.
SHT 31 yra temperatūros ir drėgmės jutikliai, pagaminti „Sensirion“. SHT31 užtikrina aukštą tikslumo lygį, apie 2% RH. Drėgmės diapazonas yra nuo 0 iki 100%, o temperatūros diapazonas -nuo -40 iki 125 ° C. Jis yra daug patikimesnis ir greitesnis, nes jutiklio atsako laikas yra 8 sek. Jo funkcionalumas apima patobulintą signalų apdorojimą ir I2C suderinamumą. Jis turi skirtingus veikimo būdus, todėl taupo energiją.
Šioje pamokoje mes sujungėme SHT 31 su „Adafruit Huzzah“lenta. Temperatūros ir drėgmės vertėms skaityti naudojome skydą ESP8266 I2C. Šis adapteris leidžia vartotojui pasiekti visus kaiščius ir siūlo patogią I2C aplinką.
1 veiksmas: reikalinga aparatinė įranga
Techninė įranga, naudojama šiai užduočiai atlikti:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapteris
- I2C kabelis
2 žingsnis: aparatinės įrangos jungtys
Šis žingsnis apima aparatūros prijungimo vadovą. Šiame skyriuje iš esmės paaiškinamos reikalingos laidų jungtys tarp jutiklio ir ESP8266. Sujungimai yra tokie.
- SHT31 veikia per I2C. Aukščiau pateiktame paveikslėlyje parodytas ryšys tarp ESP8266 ir SHT31 modulio. Tam naudojame I2C kabelį, arba galime naudoti 4 F – F trumpiklius.
- vienas laidas naudojamas Vcc, antrasis - GND ir kiti du - atitinkamai SDA ir SCL
- Pagal I2C adapterį ESP8266 plokštės kaiščiai 2 ir 14 naudojami atitinkamai kaip SDA ir SCL
3 žingsnis: užduočių planavimo kodas
Šioje pamokoje mes atliekame tris operacijas
- Perskaitykite duomenis iš SHT11 naudodami I2C protokolą
- priglobti žiniatinklio serverį ir paskelbti jutiklio rodmenis tinklalapyje
- paskelbti jutiklio rodmenis „ThingSpeak“API
Norėdami tai pasiekti, naudojame „TaskScheduler“biblioteką. Mes suplanavome tris skirtingas užduotis, susijusias su trimis skirtingomis valdymo operacijomis. tai daroma taip
- 1 užduotis skirta skaityti jutiklio vertę; ši užduotis vykdoma 1 sekundę, kol pasibaigs 10 sekundžių skirtasis laikas.
- Kai užduočiai 1 pasibaigia laikas, 2 užduotis yra įjungta, o 1 užduotis išjungta.
- Šiame atšaukime prisijungiame prie AP, imami du loginiai kintamieji, kurie pasirūpina perjungimu tarp STA ir AP
- 2 užduotyje mes talpiname žiniatinklio serverį 192.168.1.4. Ši užduotis atliekama kas 5 sekundes, kol pasibaigia 50 sekundžių skirtasis laikas
- Kai 2 užduotis pasiekia skirtąjį laiką, 3 užduotis įjungta, o 2 užduotis išjungta.
- Šioje sąsajoje mes prisijungiame prie STA (vietinio IP). 3 užduotyje mes skelbiame jutiklio rodmenis į debesies „ThingSpeak“API
- 3 užduotis vykdoma kas penkias sekundes, kol pasibaigia laikas, ty 50 sekundžių
- Kai „Task3“pasibaigia laikas, 1 užduotis vėl įjungiama ir 3 užduotis išjungiama.
- Neskambinus atgaliniam skambučiui arba įrenginiui veikiant nenaudojamas, jis pereina į „Light Sleep“ir taip taupo energiją.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Užduotys, skirtos „i2c“, žiniatinklio serverio talpinimas ir skelbimas dalykų kalba „Task tI2C“(1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL ir taskI2CDisable); Užduotis tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL ir taskI2CDisable); Užduotis tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL ir taskAPDisable); Užduotis tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ir & taskWiFiDisable); // užduočių laikas tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // įgalinti I2C užduotį tI2C.enable ();
4 žingsnis: Temperatūros ir drėgmės verčių skaitymo kodas
Temperatūros ir drėgmės vertėms skaityti naudojame „Wire.h“biblioteką. Ši biblioteka palengvina „i2c“ryšį tarp jutiklio ir pagrindinio įrenginio. 0x44 yra SHT31 I2C adresas.
SHT31 veikia kitu režimu. Tam galite kreiptis į duomenų lapą. Mes naudojame 0x2C ir 0x06 kaip MSB ir LSB atitinkamai vieno kadro veikimui.
// I2C užduoties atšaukimas void taskI2CCallback () {Serial.println ("taskI2CStarted"); unsigned int root [6]; // pradėti perdavimą nuo 0x44; Wire.beginTransmission (Addr); // vieno kadro perdavimui su dideliu pakartojamumu naudojame 0x2C (MSB) ir 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // pabaigos perdavimas Wire.endTransmission (); // prašyti baitų iš 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); jei (Wire.available () == 6) {// duomenys [0] ir duomenys [1] yra 16 bitų temperatūros. šaknis [0] = Wire.read (); šaknis [1] = Wire.read (); // duomenyse [2] yra 8 bitai CRC šaknies [2] = Wire.read (); // duomenys [3] ir duomenys [4] yra 16 bitų drėgmės šaknis [3] = Wire.read (); šaknis [4] = Wire.read (); // duomenys [5] susideda iš 8 bitų CRC šaknies [5] = Wire.read (); } int temp = (šaknis [0] * 256) + šaknis [1]; // perkelti MSB 8 bitais pridėti LSB plūdę cTemp = -45.0 + (175.0 * temp /65535.0); plūdė fTemp = (cTemp * 1.8) + 32.0; // perkelkite MSB 8 bitais, pridėkite prie jo LSB, skirkite visą skiriamąją gebą ir * 100, jei plūdės drėgmė yra procentinė = (100,0 * ((šaknis [3] * 256,0) + šaknis [4])) /65535.0; tempC = cTemp; tempF = fTemp; drėgna = drėgmė; Serial.print ("Temperatūra C: / t"); Serial.println (Styga (cTemp, 1)); Serial.print ("Temperatūra F: / t"); Serial.println (Styga (fTemp, 1)); Serial.print („Drėgmė: / t“); Serial.println (Styga (drėgmė, 1)); }
5 veiksmas: žiniatinklio serverio prieglobos kodas
Interneto serverį iš savo įrenginio priglobėme statiniu IP.
ESP8266WebServer biblioteka naudojama žiniatinklio serveriui priglobti
- Pirmiausia turime deklaruoti IP adresą, šliuzą ir potinklio kaukę, kad sukurtume savo statinį IP
- Dabar paskelbkite savo prieigos taško ssid ir slaptažodį. Prisijunkite prie prieigos taško iš bet kurio STA įrenginio
- priglobti serverį 80 prievade, kuris yra numatytasis interneto ryšio protokolo prievadas, hiperteksto perdavimo protokolas (HTTP) įveskite 192.168.1.4 žiniatinklio naršyklės žiniatinklio puslapyje ir 192.168.1.4/Verta, skirta skaityti tinklalapį
// statinis IP adresas APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); „IPAddress ap_subnet“(255, 255, 255, 0); // ssid ir AP vietiniam „WiFi“STA režimu const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid ir pass AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer serveris (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Vertė", 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 = "Failas nerastas / n / n"; pranešimas += "URI:"; pranešimas += serveris.uri (); pranešimas += "\ nMetodas:"; pranešimas += (serveris.metodas () == HTTP_GET)? "GET": "POST"; message += "\ nArgumentai:"; pranešimas += serveris.args (); pranešimas += "\ n"; server.send (404, "tekstas/paprastas", pranešimas); } void reconnectAPWiFi () {WiFi.mode (WIFI_AP_STA); vėlavimas (100); „WiFi.disconnect“(); loginė būsena = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Programinės įrangos nustatymas …"); loginis ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("prijungtas prie: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
6 veiksmas: „Thingspeak“sąranka
„ThingSpeak“yra interneto platforma. „ThingSpeak“yra nemokama žiniatinklio paslauga, leidžianti rinkti ir saugoti jutiklių duomenis debesyje.
Šiame žingsnyje pateiksiu jums trumpą procedūrą, kaip nustatyti „Thing Speak“paskyrą
- Prisiregistruokite gauti naują vartotojo abonementą „ThingSpeak“
- Sukurkite naują kanalą, pasirinkdami Kanalus, Mano kanalai, tada Naujas kanalas
- Redaguokite savo laukus
- Šiuose laukuose yra jūsų jutiklio duomenys
- Atkreipkite dėmesį į „Write API Key“ir kanalo ID
- Savo „Arduino“eskize galite naudoti „ThingSpeak“biblioteką, skirtą „Arduino“, arba galite tiesiogiai PASKELBTI duomenis į „ThingSpeak“API
- kitame žingsnyje išsamiai aprašomas turinio paskelbimas „Thing Speak“API
7 veiksmas: duomenų paskelbimo „Thing Speak“kodas
Čia mes skelbiame jutiklio rodmenis „Thing Speak“. norint atlikti šią užduotį, reikia atlikti šiuos veiksmus-
- Sukurkite savo paskyrą „Kalbėk“. Sukurkite kanalus ir laukus jutiklių duomenims saugoti
- mes galime gauti ir paskelbti duomenis iš ESP į „thingSpeak“ir atvirkščiai, naudodami GET ir POST užklausas į API.
- mes galime paskelbti savo duomenis „ThingSpeak“taip
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += Styga (drėgna); postStr += "& field2 ="; postStr += Styga (tempC); postStr += "& field3 ="; postStr += Styga (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /atnaujinti HTTP /1.1 / n"); wifiClient.print ("Priegloba: api.thingspeak.com / n"); wifiClient.print ("Ryšys: uždaryti / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Turinio tipas: application/x-www-form-urlencoded / n"); wifiClient.print ("Turinio ilgis:"); „wifiClient.print“(postStr.length ()); „wifiClient.print“(„\ n / n“); wifiClient.print (postStr); } wifiClient.stop (); }
8 žingsnis: bendras kodas
Bendras kodas yra mano „GitHub“saugykloje
9 žingsnis: kreditai
- Arduino JSON
- ESP826WebServer
- Darbų planuotojas
- SHT 31
- I2C nuskaitymas
- HIH6130 instrukcijų pamoka
- Viela
- NCD.io
Rekomenduojamas:
Mini orų stotis naudojant „Arduino“ir „ThingSpeak“: 4 žingsniai
Mini orų stotis naudojant „Arduino“ir „ThingSpeak“: Sveiki visi. Šioje instrukcijoje nurodysiu, kaip sukurti personalizuotą mini orų stotį. Be to, mes naudosime „ThingSpeak“API, kad įkeltume orų duomenis į jų serverius, kitaip - koks yra oro sąlygų tikslas
Interneto laikrodis: rodyti datą ir laiką naudojant OLED naudojant ESP8266 „NodeMCU“su NTP protokolu: 6 žingsniai
Interneto laikrodis: rodyti datą ir laiką naudojant OLED naudojant ESP8266 „NodeMCU“su NTP protokolu: Sveiki, vaikinai, šioje instrukcijoje mes sukursime interneto laikrodį, kuris gaus laiko iš interneto, todėl šiam projektui vykdyti nereikės jokio RTC, o tik veikiantis interneto ryšys Ir šiam projektui jums reikia esp8266, kuris turės
Oro stebėjimo sistema naudojant „NodeMCU“ir „IOT Thingspeak“: 4 žingsniai
Oro stebėjimo sistema naudojant „NodeMCU“ir „IOT Thingspeak“: „ThingSpeak“yra atvirojo kodo daiktų interneto programa ir API, skirta saugoti ir gauti duomenis iš aparatūros įrenginių ir jutiklių. Bendravimui jis naudoja HTTP protokolą internetu arba LAN. Įtraukta MATLAB analizė, skirta analizuoti ir vizualizuoti
Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“: 7 žingsniai
Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“: Trumpa apžvalga Pagal numatytuosius nustatymus ventiliatorius yra tiesiogiai prijungtas prie GPIO - tai reiškia nuolatinį jo veikimą. Nepaisant santykinai tylaus ventiliatoriaus veikimo, nuolatinis jo veikimas nėra veiksmingas aktyvios aušinimo sistemos naudojimas. Tuo pačiu metu
Vartų valdymas naudojant „Google“padėjėją naudojant ESP8266 „NodeMCU“: 6 žingsniai
Vartų valdymas naudojant „Google“padėjėją naudojant ESP8266 „NodeMCU“: tai yra mano pirmasis projektas, skirtas instrukcijoms, todėl, jei yra galimų patobulinimų, pakomentuokite toliau. Idėja yra naudoti „Google“asistentą, norint nusiųsti signalą į vartų valdymo plokštę. Taigi, siunčiant komandą, bus relė, kuri uždarys