Kazalo:
- 1. korak: Potrebna je strojna oprema
- 2. korak: Povezave strojne opreme
- 3. korak: Koda za načrtovanje opravil
- 4. korak: Koda za branje vrednosti temperature in vlažnosti
- 5. korak: Koda za gostovanje spletnega strežnika
- Korak 6: Thingspeak nastavitev
- 7. korak: Koda za objavljanje podatkov za govorjenje
- 8. korak: Splošna koda
- 9. korak: Krediti
Video: THINGSPEAK TEMPERATURNA IN VLAGNA APLIKACIJA Z ESP8266: 9 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Med brskanjem po svojih elektronskih stvareh sem dobil idejo, da bi naredil spletno vremensko aplikacijo. Ta spletna aplikacija uporablja senzor SHT31 za pridobivanje podatkov o temperaturi in vlažnosti v realnem času. Naš projekt smo razmestili na WiFi modulu ESP8266. Na spletu ali brez povezave! Ni vam treba skrbeti, ne glede na to, ali ste na spletu ali brez povezave, boste vremenske posodobitve dobivali kjer koli in kadar koli. Ta spletna aplikacija objavlja podatke na lokalnem spletnem strežniku in v oblaku. Za operacije v oblaku uporabljamo API ThingSpeak. SHT31 uporablja I2C za pridobivanje podatkov iz senzorja.
SHT 31 je senzor temperature in vlažnosti podjetja Sensirion. SHT31 zagotavlja visoko stopnjo natančnosti okoli ± 2% relativne vlažnosti. Njegovo območje vlažnosti je od 0 do 100%, temperaturno območje pa med -40 do 125 ° C. Je veliko bolj zanesljiv in hiter z 8 sekundnim odzivnim časom senzorja. Njegova funkcionalnost vključuje izboljšano obdelavo signalov in združljivost z I2C. Ima različne načine delovanja, zaradi česar je energetsko učinkovit.
V tej vadnici smo povezali SHT 31 z desko Adafruit Huzzah. Za branje vrednosti temperature in vlažnosti smo uporabili ESP8266 I2C ščit. Ta adapter omogoča dostop do vseh zatičev in ponuja uporabniku prijazno okolje I2C.
1. korak: Potrebna je strojna oprema
Strojna oprema, uporabljena za dokončanje te naloge:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapter
- I2C kabel
2. korak: Povezave strojne opreme
Ta korak vključuje priročnik za priključitev strojne opreme. Ta razdelek v bistvu razlaga potrebne povezave ožičenja med senzorjem in ESP8266. Povezave so naslednje.
- SHT31 deluje preko I2C. Zgornja slika prikazuje povezavo med modulom ESP8266 in modulom SHT31. Za to uporabljamo kabel I2C, lahko pa uporabimo tudi 4 mostične žice od F do F.
- ena žica se uporablja za Vcc, druga žica za GND in druga dva za SDA oziroma SCL
- V skladu z adapterjem I2C se pin2 in pin 14 plošče ESP8266 uporabljata kot SDA oziroma SCL.
3. korak: Koda za načrtovanje opravil
V tej vadnici izvajamo tri operacije
- Preberite podatke iz SHT11 po protokolu I2C
- gostite spletni strežnik in na spletnem mestu objavite odčitavanje senzorja
- objavite odčitke senzorja v API -ju ThingSpeak
Za to uporabljamo knjižnico TaskScheduler. Načrtovali smo tri različne naloge, ki se nanašajo na tri različne nadzorne operacije. to se naredi na naslednji način
- Naloga 1 je za branje vrednosti senzorja, ki traja 1 sekundo, dokler ne doseže časovne omejitve 10 sekund.
- Ko poteče opravilo Task1, je Omogočeno 2. opravilo in onemogočeno.
- V tem povratnem klicu se povežemo z AP. Dve logični spremenljivki skrbita za preklapljanje med STA in AP
- V 2. nalogi gostujemo spletni strežnik na naslovu 192.168.1.4. Ta naloga se izvaja vsakih 5 sekund, dokler ne doseže časovne omejitve, ki je 50 sekund
- Ko naloga 2 doseže časovno omejitev, je naloga 3 omogočena, naloga 2 pa onemogočena.
-
V tem obračunu se povežemo s STA (lokalni IP) V 3. nalogi objavljamo odčitavanje senzorja v oblaku ThingSpeak API
- Naloga 3 se izvaja vsakih pet sekund, dokler ne doseže svoje časovne omejitve, torej 50 sekund
- Ko opravilo 3 poteče, se opravilo 1 znova omogoči in opravilo 3 je onemogočeno.
- Ko ni povratnega klica ali naprava miruje, preide v stanje mirovanja in s tem prihrani energijo.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Opravila za i2c, gostovanje spletnega strežnika in objavljanje na stvari Naloga tI2C (1 * TASK_SECOND, TASK_FOREVER in & taskI2CCallback, & ts, false, NULL in & taskI2CDisable); Task tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL in & taskAPDisable); Opravilo tWiFi (5* TASK_SECOND, TASK_FOREVER in & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // časovna omejitev opravil tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // omogočim nalogo I2C tI2C.enable ();
4. korak: Koda za branje vrednosti temperature in vlažnosti
Za branje vrednosti temperature in vlažnosti uporabljamo knjižnico Wire.h. Ta knjižnica olajša komunikacijo i2c med senzorjem in glavno napravo. 0x44 je naslov I2C za SHT31.
SHT31 deluje v drugačnem načinu delovanja. Za to se lahko obrnete na podatkovni list. Za eno posnetek uporabljamo 0x2C oziroma 0x06 kot MSB oziroma LSB.
// I2C opravilo povratnega klica opravila void taskI2CCallback () {Serial.println ("taskI2CStarted"); neoznačeni int koren [6]; // začetek prenosa od 0x44; Wire.beginTransmission (Addr); // za prenos enega posnetka z visoko ponovljivostjo uporabljamo 0x2C (MSB) in 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // konec prenosa Wire.endTransmission (); // zahteva bajte od 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// podatki [0] in podatki [1] vsebujejo 16 bitov temperature. root [0] = Wire.read (); root [1] = Wire.read (); // podatki [2] vsebujejo 8 bit korena CRC [2] = Wire.read (); // podatki [3] in podatki [4] vsebujejo 16 -bitni koren vlažnosti [3] = Wire.read (); root [4] = Wire.read (); // podatki [5] so sestavljeni iz 8 -bitnega korena CRC [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // premik MSB za 8 bitov dodajanje LSB float cTemp = -45,0 + (175,0 * temp /65535,0); float fTemp = (cTemp * 1,8) + 32,0; // premaknemo MSB za 8 bitov, dodamo LSB, ki ga razdelimo s polno ločljivostjo in * 100 za odstotno vlažnost plovca = (100,0 * ((koren [3] * 256,0) + koren [4])) /65535,0; tempC = cTemp; tempF = fTemp; vlažno = vlažnost; Serial.print ("Temperatura v C: / t"); Serial.println (niz (cTemp, 1)); Serial.print ("Temperatura v F: / t"); Serial.println (niz (fTemp, 1)); Serial.print ("Vlažnost: / t"); Serial.println (niz (vlažnost, 1)); }
5. korak: Koda za gostovanje spletnega strežnika
Spletni strežnik naše naprave smo gostili na statičnem IP.
Knjižnica ESP8266WebServer se uporablja za gostovanje spletnega strežnika
- Najprej moramo razglasiti naslov IP, prehod in masko podomrežja, da ustvarimo statični IP
- Zdaj razglasite ssid in geslo za svojo dostopno točko. Povežite se z dostopno točko iz katere koli naprave STA
- gostite strežnik na vratih 80, ki so privzeta vrata za internetni komunikacijski protokol, protokol za prenos hiperteksta (HTTP) vnesite v brskalniku 192.168.1.4 za uvodno spletno stran in 192.168.1.4/Vrednost za branje spletne strani senzorja
// statični IP za APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IP -naslov ap_subnet (255, 255, 255, 0); // ssid in AP za lokalni WiFi v načinu STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid in pass za AP const char APssid = "********"; const char APpass = "********"; Strežnik ESP8266WebServer (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Vrednost", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCCallback () {Serial.println ("taskAP zagnan"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Datoteka ni najdena / n / n"; message += "URI:"; sporočilo += server.uri (); sporočilo += "\ nMetoda:"; sporočilo += (server.method () == HTTP_GET)? "GET": "POST"; message += "\ nArgumenti:"; sporočilo += server.args (); sporočilo += "\ n"; server.send (404, "besedilo/navadno", sporočilo); } void ponovno poveži APWiFi () {WiFi.mode (WIFI_AP_STA); zamuda (100); WiFi.disconnect (); logično stanje = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Nastavitev mehkega AP-ja …"); logična ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("povezan z: / t"); // IP -naslov myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
Korak 6: Thingspeak nastavitev
ThingSpeak je platforma IoT. ThingSpeak je brezplačna spletna storitev, ki omogoča zbiranje in shranjevanje senzorskih podatkov v oblaku.
V tem koraku vam bom predstavil kratek postopek za nastavitev računa Thing Speak
- Prijavite se za nov uporabniški račun v ThingSpeak
- Ustvarite nov kanal tako, da izberete Kanali, Moji kanali in nato Nov kanal
- Uredite svoja polja
- Ta polja vsebujejo podatke senzorja
- Upoštevajte ključ API -ja za pisanje in ID kanala
- Na svoji skici Arduino lahko uporabite knjižnico ThingSpeak za Arduino ali pa podatke neposredno OBJAVITE v API ThingSpeak
- naslednji korak obravnava objavo vsebine v API -ju Thing Speak
7. korak: Koda za objavljanje podatkov za govorjenje
Tukaj objavljamo odčitke senzorjev v Thing Speak. za dokončanje te naloge so potrebni naslednji koraki-
- Ustvarite svoj račun v stvarnem govoru Ustvarite kanale in polja za shranjevanje podatkov senzorja
- lahko dobimo in objavimo podatke iz ESP v thingSpeak in obratno z zahtevami GET in POST v api.
- lahko svoje podatke objavimo v ThingSpeaku na naslednji način
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& polje1 ="; postStr += niz (vlažno); postStr += "& polje2 ="; postStr += niz (tempC); postStr += "& field3 ="; postStr += niz (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /posodobi HTTP /1.1 / n"); wifiClient.print ("Gostitelj: api.thingspeak.com / n"); wifiClient.print ("Povezava: zaprta / 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 (); }
8. korak: Splošna koda
Celotna koda je na voljo v mojem skladišču GitHub
9. korak: Krediti
- Arduino JSON
- ESP826Spletni strežnik
- Načrtovalnik opravil
- SHT 31
- I2C skeniranje
- Vadnica za navodila za HIH6130
- Žica
- NCD.io
Priporočena:
Temperaturna kockaSat Ben & Kaiti & Q Hour 1: 8 Koraki
Temperature CubeSat Ben & Kaiti & Q Ura 1: Ste kdaj želeli sami narediti nekaj, kar bi lahko poslali v vesolje in vzeli temperaturo drugega planeta? V našem gimnazijskem razredu fizike smo dobili nalogo, da zgradimo CubeSat z delujočim arduinom z glavnim vprašanjem. Kako lahko
AVTOMATSKA TEMPERATURNA KOMPENZACIJA ATLASOVEGA SENZORJA PREVIDNOSTI: 4 koraki
AVTOMATSKA TEMPERATURNA KOMPENZACIJA ATLASOVEGA SENZORJA PREVODNOSTI: V tem projektu bomo samodejno kompenzirali temperaturni senzor prevodnosti podjetja Atlas Scientific. Temperaturne spremembe vplivajo na prevodnost/skupno raztopljene trdne snovi/slanost tekočin in s tem, ko to kompenziramo, smo
DEEDU Temperaturna aktivnost: 7 korakov
DEEDU Temperature Activity: Namen te dejavnosti je povečati občutljivost uporabnika na porabo energije za nadzor temperature. Ta dejavnost je namenjena otrokom, starejšim od 9 let, ki lahko preberejo in razumejo okvirne številke temperature in
Arduino Nano in dva temperaturna senzorja DS18B20 z I2C LCD: 5 korakov
Arduino Nano in dva temperaturna senzorja DS18B20 z I2C LCD: Danes vam želim pokazati, kako narediti dva temperaturna senzorja DS18B20 z Arduino Nano Clone in I2C LCD. a I2C displejem. Uporabljam Arduino IDE 1.8.8 // Pouziv
Lora Temperaturna nadzorna plošča: 5 korakov
Lora Temperature Dashboard: V mojem zadnjem Instructable sem vam pokazal, kako temperaturni senzor povezati z Loro prek TTN. Zdaj vam bom pokazal, kako lahko preberete te podatke in jih prikažete na nadzorni plošči. Prav tako bomo obravnavali, kako uporabiti podatke v IFTTT