Sadržaj:
- Korak 1: Potreban hardver
- Korak 2: Hardverske veze
- Korak 3: Kôd za zakazivanje zadataka
- Korak 4: Kôd za očitanje vrijednosti temperature i vlažnosti
- Korak 5: Kôd za hostiranje web poslužitelja
- Korak 6: Thingspeak postavljanje
- Korak 7: Kôd za objavljivanje podataka za govor
- Korak 8: Opći kod
- Korak 9: Krediti
Video: THINGSPEAK TEMPERATURA I VLAŽNOST APLIKACIJA KORIŠTENJEM ESP8266: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
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. Online ili offline! Ne morate brinuti, bez obzira jeste li na mreži ili izvan 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 tvrtke Sensirion. SHT31 pruža visoku razinu toč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 s 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 učinkovitim.
U ovom smo vodiču spojili SHT 31 s pločom Adafruit Huzzah. Za oč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 odnosno SCL
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 poslužitelj i postavite očitanje 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 traje 1 sekundu dok ne dosegne prekid od 10 sekundi.
- Kad Task1 istekne vrijeme, Task 2 je omogućen, a Task1 onemogućen.
- U ovom povratnom pozivu povezujemo se s AP -om. Dvije logičke varijable uzimaju se u obzir pri prebacivanju između STA -a i AP -a
- U 2. zadatku hostiramo web poslužitelj na adresi 192.168.1.4. Ovaj se zadatak izvodi svakih 5 sekundi dok ne dosegne vrijeme čekanja koje iznosi 50 sekundi
- Kad Zadatak 2 istekne, 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čitanje senzora u oblaku ThingSpeak API
- Zadatak 3 izvodi se svakih pet sekundi dok ne dosegne vrijeme čekanja, tj. 50 sekundi
- Kad Task3 istekne, Zadatak 1 je ponovno 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, hostiranje web poslužitelja i objavljivanje na tspeak Zadatak tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Zadatak tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Zadatak 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ćiti I2C zadatak tI2C.enable ();
Korak 4: Kôd za očitanje vrijednosti temperature i vlažnosti
Za čitanje vrijednosti temperature i vlage koristimo Wire.h knjižnicu. Ova knjižnica 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 podatkovnom listu. Koristimo 0x2C i 0x06 kao MSB odnosno LSB za pojedinačne operacije.
// I2C zadatak povratnog poziva void taskI2CCallback () {Serial.println ("taskI2CStarted"); bezznačni int korijen [6]; // započinjemo prijenos s 0x44; Wire.beginTransmission (Addr); // za prijenos jedne snimke s visokom ponovljivošću koristimo 0x2C (MSB) i 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // kraj 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. korijen [0] = Wire.read (); korijen [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 razlučivošću i * 100 za postotak vlažnosti plutanja = (100,0 * ((korijen [3] * 256,0) + korijen [4])) /65535,0; tempC = cTemp; tempF = fTemp; vlažan = 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 hostiranje web poslužitelja
Ugostili smo web poslužitelj s našeg uređaja na statičkoj IP adresi.
Knjižnica ESP8266WebServer koristi se za hostiranje web poslužitelja
- Najprije moramo deklarirati IP adresu, pristupnik i masku podmreže za stvaranje 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 priključku 80 koji je zadani port za internetski komunikacijski protokol, protokol za prijenos hiperteksta (HTTP) unesite 192.168.1.4 u svoj web preglednik za uvodnu web stranicu i 192.168.1.4/Vrijednost za čitanje web stranice senzora
// statički IP za APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IP Adresa 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 poslužitelj (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Vrijednost", 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"; poruka += "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čko stanje = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Postavljanje soft-AP-a …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("povezano s: / t"); // IP adresa MyIP = 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 pohranu podataka senzora u oblaku.
U ovom koraku dat ću vam kratak postupak za postavljanje računa Thing Speak
- Prijavite se za novi korisnički račun u ThingSpeak -u
- Izradite 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 vašoj Arduino skici možete koristiti biblioteku ThingSpeak za Arduino ili možete izravno objaviti podatke na 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. za dovršenje ovog zadatka potrebni su sljedeći koraci-
- Stvorite svoj račun u stvarnom govoru Stvorite kanale i polja za pohranu podataka senzora
- možemo dobiti i objaviti podatke iz ESP-a na thingSpeak i obrnuto pomoću GET i POST zahtjeva 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 += niz (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 ("Content-Type: 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ći kod
Cjelokupni kod dostupan je u mom spremištu GitHub
Korak 9: Krediti
- Arduino JSON
- ESP826WebServer
- Planer zadataka
- SHT 31
- I2C skeniranje
- HIH6130 vodič za instruktore
- Žica
- NCD.io
Preporučeni:
Temperatura i vlažnost pomoću ESP32-DHT22-MQTT-MySQL-PHP: 7 koraka
Temperatura i vlažnost korištenjem ESP32-DHT22-MQTT-MySQL-PHP: Moja je djevojka htjela staklenik, pa sam joj to napravio. Ali htio sam senzor temperature i vlage unutar staklenika. Pa sam guglao primjere i počeo eksperimentirati. Zaključio sam da svi primjeri koje sam pronašao nisu baš
Meteorološka stanica Arduino pomoću BMP280 -DHT11 - Temperatura, vlažnost i tlak: 8 koraka
Arduino meteorološka postaja pomoću BMP280 -DHT11 - Temperatura, vlažnost i tlak: U ovom ćemo vodiču naučiti kako izraditi meteorološku stanicu koja će prikazivati TEMPERATURU, VLAGU I TLAK na LCD zaslonu TFT 7735Gledajte demonstracijski video
Esp32-Ubidots-Wireless, temperatura i vlažnost na daljinu: 6 koraka
Esp32-Ubidots-Wireless, temperatura i vlažnost na daljinu: U ovom ćemo vodiču mjeriti različite podatke o temperaturi i vlažnosti zraka pomoću senzora za temperaturu i vlagu. Naučit ćete i kako poslati te podatke Ubidotsu. Tako da ga možete analizirati s bilo kojeg mjesta za različite aplikacije
Dan u tjednu, kalendar, vrijeme, vlažnost/temperatura s uštedom baterije: 10 koraka (sa slikama)
Dan u tjednu, kalendar, vrijeme, vlažnost/temperatura s Uštedom baterije: Ovdje je način uštede energije ono što ovaj Instructable izdvaja od drugih primjera koji prikazuju dan u tjednu, mjesec, dan u mjesecu, vrijeme, vlažnost i temperaturu. Ta mogućnost omogućuje da se ovaj projekt pokreće iz baterije, bez
ThingSpeak, ESP32 i bežična temperatura i vlažnost na daljinu: 5 koraka
ThingSpeak, ESP32 i bežična temperatura i vlažnost na daljinskom bežičnom povezivanju: U ovom ćemo vodiču mjeriti različite podatke o temperaturi i vlažnosti zraka pomoću senzora za temperaturu i vlagu. Naučit ćete i kako poslati te podatke u ThingSpeak. Tako da ga možete analizirati s bilo kojeg mjesta za različite aplikacije