Sadržaj:
- Korak 1: Potreban hardver
- Korak 2: Hardverske veze
- Korak 3: Kôd za zakazivanje zadataka
- Korak 4: Kôd za očitavanje vrijednosti temperature i vlažnosti
- Korak 5: Kôd za hostovanje web servera
- Korak 6: Thingspeak postavljanje
- Korak 7: Kôd za objavljivanje podataka za govor
- Korak 8: Opšti kod
- Korak 9: Krediti
Video: THINGSPEAK TEMPERATURA I APLIKACIJA VLAŽNOSTI KORIŠTENJEM ESP8266: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Dok sam petljao sa svojim elektroničkim stvarima, došao sam na ideju da napravim web aplikaciju za vremensku prognozu. Ova web aplikacija koristi senzor SHT31 za dobivanje podataka o temperaturi i vlažnosti u stvarnom vremenu. Naš projekt smo implementirali na ESP8266 WiFi modulu. Na mreži ili van mreže! Ne morate brinuti, bez obzira jeste li na mreži ili van mreže, ažurirat ćete vremensku prognozu s bilo kojeg mjesta i u bilo koje vrijeme. Ova web aplikacija objavljuje podatke na lokalnom web poslužitelju kao i u oblaku. Za operacije u oblaku koristimo ThingSpeak API. SHT31 koristi I2C za dobivanje podataka sa senzora.
SHT 31 je senzor temperature i vlažnosti koji proizvodi Sensirion. SHT31 pruža visok nivo tačnosti oko ± 2% RH. Raspon vlažnosti je između 0 do 100%, a temperaturni raspon između -40 do 125 ° C. Mnogo je pouzdaniji i brži sa 8 sekundi vremena odziva senzora. Njegova funkcionalnost uključuje poboljšanu obradu signala i I2C kompatibilnost. Ima različite načine rada što ga čini energetski efikasnim.
U ovom smo vodiču spojili SHT 31 s pločom Adafruit Huzzah. Za čitanje vrijednosti temperature i vlažnosti koristili smo ESP8266 I2C štit. Ovaj adapter čini sve pinove dostupnim korisniku i nudi I2C okruženje prilagođeno korisniku.
Korak 1: Potreban hardver
Hardver koji se koristi za izvršavanje ovog zadatka:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapter
- I2C kabel
Korak 2: Hardverske veze
Ovaj korak uključuje vodič za spajanje hardvera. Ovaj odjeljak u osnovi objašnjava potrebne ožičenje između senzora i ESP8266. Veze su sljedeće.
- SHT31 radi preko I2C. Gornja slika prikazuje vezu između ESP8266 i SHT31 modula. Za to koristimo I2C kabel ili možemo upotrijebiti 4 F do F žice kratkospojnika.
- jedna žica se koristi za Vcc, druga žica za GND, a druge dvije za SDA i SCL
- Prema I2C adapteru pin2 i pin 14 ploče ESP8266 koriste se kao SDA i SCL respektivno
Korak 3: Kôd za zakazivanje zadataka
U ovom vodiču izvodimo tri operacije
- Očitajte podatke iz SHT11 koristeći I2C protokol
- hostirajte web server i postavite očitavanje senzora na web stranicu
- objavite očitanja senzora na ThingSpeak API
Da bismo to postigli, koristimo biblioteku TaskScheduler. Zakazali smo tri različita zadatka koji se odnose na tri različite kontrolne operacije. to se radi na sljedeći način
- Zadatak 1 služi za očitavanje vrijednosti senzora. Ovaj zadatak radi 1 sekundu dok ne dosegne vremensko ograničenje od 10 sekundi.
- Kada Task1 istekne vrijeme, Task 2 je omogućen, a Task1 onemogućen.
- Povezujemo se s AP -om u ovom povratnom pozivu. Dvije logičke varijable su uzete da brinu o prebacivanju između STA i AP
- U zadatku 2 hostujemo web server na 192.168.1.4. Ovaj zadatak se izvršava svakih 5 sekundi sve dok ne dosegne vremensko ograničenje od 50 sekundi
- Kada Zadatak 2 dostigne vremensko ograničenje Zadatak 3 je omogućen, a Zadatak 2 onemogućen.
- Povezujemo se sa STA (lokalni IP) u ovom povratnom pozivu. U zadatku 3 objavljujemo očitavanje senzora u oblaku ThingSpeak API
- Zadatak 3 radi svakih pet sekundi sve dok ne dosegne vremensko ograničenje, tj. 50 sekundi
- Kada Task3 istekne vrijeme, Zadatak 1 je ponovo omogućen, a Zadatak 3 onemogućen.
- Kad se ne pozove povratni poziv ili je uređaj u stanju mirovanja, prelazi u Light Sleep čime se štedi energija.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Zadaci za i2c, hosting web servera i objavljivanje na serveru za objekte Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Zadatak tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Task tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Zadatak tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // istek vremena za zadatke tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // omogući I2C zadatak tI2C.enable ();
Korak 4: Kôd za očitavanje vrijednosti temperature i vlažnosti
Za čitanje vrijednosti temperature i vlažnosti zraka koristimo Wire.h biblioteku. Ova biblioteka olakšava i2c komunikaciju između senzora i glavnog uređaja. 0x44 je I2C adresa za SHT31.
SHT31 radi u drugačijem načinu rada. Za to se možete obratiti tehničkom listu. Koristimo 0x2C i 0x06 kao MSB i LSB respektivno za pojedinačne operacije.
// Povratni poziv I2C zadatka void taskI2CCallback () {Serial.println ("taskI2CStarted"); neoznačeni int korijen [6]; // započinjemo prijenos s 0x44; Wire.beginTransmission (Addr); // za jedan prijenos s velikom ponovljivošću koristimo 0x2C (MSB) i 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // prekid prijenosa Wire.endTransmission (); // zatraži bajtove od 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// podaci [0] i podaci [1] sadrže 16 bita temperature. root [0] = Wire.read (); root [1] = Wire.read (); // podaci [2] sadrže 8 bita CRC korijena [2] = Wire.read (); // podaci [3] i podaci [4] sadrže 16 bita korijena vlažnosti [3] = Wire.read (); root [4] = Wire.read (); // podaci [5] se sastoje od 8 -bitnog CRC korijena [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // pomak MSB -a za 8 bita dodaj LSB float cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // pomaknite MSB za 8 bita, dodajte LSB u njega podijelite punom rezolucijom i * 100 za postotak vlažnosti s plivanjem = (100,0 * ((korijen [3] * 256,0) + korijen [4])) /65535,0; tempC = cTemp; tempF = fTemp; vlažno = vlažnost; Serial.print ("Temperatura u C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatura u F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Vlažnost: / t"); Serial.println (String (vlažnost, 1)); }
Korak 5: Kôd za hostovanje web servera
Ugostili smo web poslužitelj s našeg uređaja na statičkoj IP adresi.
ESP8266WebServer biblioteka koristi se za hostovanje web servera
- Prvo moramo deklarirati IP adresu, Gateway i podmrežnu masku za kreiranje našeg statičkog IP -a
- Sada deklarirajte ssid i lozinku za svoju pristupnu točku. Povežite se s pristupnom točkom sa bilo kojeg STA uređaja
- hostirajte poslužitelj na portu 80 koji je zadani port za internetski komunikacijski protokol, Hypertext Transfer Protocol (HTTP) unesite 192.168.1.4 u vaš web preglednik za uvodnu web stranicu i 192.168.1.4/Vrijednost za senzor za čitanje web stranice
// statički IP za APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid i AP za lokalni WiFi u STA načinu rada const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid i pass za AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer server (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCCallback () {Serial.println ("taskAP pokrenut"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Datoteka nije pronađena / n / n"; message += "URI:"; poruka += server.uri (); poruka += "\ nMetoda:"; poruka += (server.method () == HTTP_GET)? "GET": "POST"; poruka += "\ nArgumenti:"; poruka += server.args (); poruka += "\ n"; server.send (404, "tekst/običan", poruka); } void ponovno povezivanjeAPWiFi () {WiFi.mode (WIFI_AP_STA); kašnjenje (100); WiFi.disconnect (); logički status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Postavljanje soft-AP …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("povezano sa: / t"); // IP adresaMiIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
Korak 6: Thingspeak postavljanje
ThingSpeak je IoT platforma. ThingSpeak je besplatna web usluga koja vam omogućuje prikupljanje i pohranjivanje podataka senzora u oblaku.
U ovom koraku dat ću vam kratku proceduru za postavljanje vašeg Thing Speak računa
- Prijavite se za novi korisnički račun u ThingSpeak -u
- Kreirajte novi kanal odabirom kanala, moji kanali, a zatim novi kanal
- Uredite svoja polja
- Ova polja sadrže vaše podatke senzora
- Zabilježite Write API Key i ID kanala
- Na Arduino skici možete koristiti biblioteku ThingSpeak za Arduino ili možete direktno POSTATI podatke u ThingSpeak API
- sljedeći korak razrađuje objavu sadržaja na Thing Speak API
Korak 7: Kôd za objavljivanje podataka za govor
Ovdje objavljujemo očitanja senzora u Thing Speak -u. sljedeći koraci su potrebni za dovršetak ovog zadatka-
- Kreirajte svoj račun u stvarnom govoru Kreirajte kanale i polja za pohranu podataka senzora
- možemo dobiti i objaviti podatke iz ESP-a na thingSpeak i obrnuto koristeći GET i POST zahtjeve za api.
- možemo objaviti naše podatke u ThingSpeak na sljedeći način
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& polje1 ="; postStr += String (vlažno); postStr += "& polje2 ="; postStr += String (tempC); postStr += "& polje3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /ažuriraj HTTP /1.1 / n"); wifiClient.print ("Domaćin: api.thingspeak.com / n"); wifiClient.print ("Veza: zatvori / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Tip sadržaja: application/x-www-form-urlencoded / n"); wifiClient.print ("Content-Length:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Korak 8: Opšti kod
Cjelokupni kod je dostupan u mom GitHub spremištu
Korak 9: Krediti
- Arduino JSON
- ESP826WebServer
- Planer zadataka
- SHT 31
- I2C skeniranje
- HIH6130 uputstvo za upotrebu
- Žica
- NCD.io
Preporučuje se:
KAKO NAČINITI AUTOMATSKI SIGURNI KRUG U HITNOM POMOĆU KORIŠTENJEM D882 TRANZISTORA: 3 koraka
KAKO NAPRAVITI AUTOMATSKI SIGURNOSNI KRUG U POMOĆU KORIŠTENJEM D882 TRANZISTORA: ZDRAVO PRIJATELJI, DOBRODOŠLI NA MOJ KANAL, DANAS ĆU VAM POKAZATI KAKO STVARATI KOLO AUTOMATSKE HITNE SVJETLOSTI KORIŠTENJEM SVJETLOSTI RASHODNE SVJETLOSTI 88
Zvučna jedinica za igračke izgrađene od ogrebotina korištenjem DFplayer mini MP3 playera: 4 koraka
Zvučna jedinica za igračke napravljene od ogrebotina korištenjem DFplayer mini MP3 playera: Dobro došli u moju " ible " #35.Želite li stvoriti zvučnu jedinicu koju možete koristiti na različite načine, postavljajući zvukove koje želite za svoje igračke napravljene od ogrebotina, u nekoliko sekundi? Evo tutorijala koji objašnjava kako to učiniti, koristeći D
Upotreba upozorenja-ThingSpeak+ESP32-Bežična-Temp-Senzor vlažnosti: 7 koraka
Upozoravajući-ThingSpeak+ESP32-Bežični-Temp-Senzor vlažnosti: U ovom vodiču ćemo mjeriti različite podatke o temperaturi i vlažnosti zraka pomoću senzora za temperaturu i vlažnost. Naučit ćete i kako poslati te podatke u ThingSpeak. Tako da možete stvoriti privremeno upozorenje u svojoj pošti za određenu vrijednost
Nodemcu šalje podatke o temperaturi i vlažnosti na Thingspeak: 7 koraka
Nodemcu šalje podatke o temperaturi i vlažnosti na Thingspeak: Ovdje smo u ovom vodiču spojili nodemcu sa senzorom dht11 i šaljemo podatke o temperaturi i vlažnosti na poslužitelj stvari. Ovdje imamo i grafički prikaz temperature i vlažnosti na serveru Thingspeak
ThingSpeak, IFTTT, senzor temperature i vlažnosti i Google tablica: 8 koraka
ThingSpeak, IFTTT, senzor temperature i vlažnosti i Google tablica: U ovom projektu mjerit ćemo temperaturu i vlagu pomoću NCD senzora temperature i vlažnosti, ESP32 i ThingSpeak. Također ćemo poslati različita očitanja temperature i vlažnosti u Google Sheet koristeći ThingSpeak i IFTTT za analizu se