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
- 6. korak: Koda za objavljanje podatkov za govorjenje
- 7. korak: Splošna koda
Video: Spletna aplikacija Weather z uporabo Esp8266: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
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:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C adapter
4. Kabel I2C
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 Task1 doseže svojo časovno omejitev, je Task 2 omogočeno in Task1 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 povratnem klicu se povežemo s STA (lokalni IP)
- V 3. nalogi objavljamo branje senzorja v API -ju ThingSpeak v oblaku
- Naloga 3 se izvaja vsakih pet sekund, dokler ne doseže svoje časovne omejitve, torej 50 sekund
- Ko opravilo 3 preteč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.
Načrtovalec ts;
// Opravila za i2c, gostovanje spletnega strežnika in objava na Thingspeak
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.
// Naloga I2C za povratni klic nična naloga I2CCallback ()
{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 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)
- v spletni brskalnik vnesite 192.168.1.4 za uvodno spletno stran in 192.168.1.4/Vrednost za spletno stran za branje senzorjev
// statični IP za AP
IP -naslov ap_local_IP (192, 168, 1, 4);
IPAddress ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // ssid in AP za lokalno 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, "besedilo/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žite APWiFi () {
WiFi.mode (WIFI_AP_STA);
zamuda (100);
WiFi.disconnect ();
logično stanje = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
če (status == res) {
Serial.print ("Nastavitev mehkega AP-ja …");
logična ap = WiFi.softAP (APssid, APpass);
če (ap == res) {
Serial.print ("povezan z: / t");
// IP -naslov myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
6. 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
- 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
void 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 (); }
7. korak: Splošna koda
Celotna koda je na voljo v mojem skladišču github
Zasluge:
- Arduino JSON: ArduinoJson
- ESP826Spletni strežnik
- Načrtovalnik opravil
- SHT 31
- I2C skeniranje
- Vadnica za navodila za HIH6130
- Wire Arduino
- NCD.io
Priporočena:
Desenvolvendo Aplikacija za oddaljeno uporabo za Dragonboard 410c Usando IDE Eclipse: 17 korakov
Desenvolvendo Aplikações Remotamente Para a Dragonboard 410c Usando IDE Eclipse: O objetivo deste documento é mostrar kot etapas potrebno á rias para konfigurator o ambiente de desenvolvimento, de modo que o HostPC (Computador / Notebook), atrav é s do IDE Eclipse compile os c ó digos e izvoz za alvo (povlecite
Spletna aplikacija za izobraževanje: 13 korakov
Izobraževalna spletna aplikacija: Ta projekt je nastal kot naloga za tečaj video in digitalne televizije, v katerem smo morali rešiti problem poučevanja in učenja na treh ravneh: metodološki, funkcionalni in konceptualni. Ta projekt je nastal kot naloga
Aplikacija za Android 1. del: Začetni zaslon z uporabo fragmentov/Kotlin: 5 korakov
Aplikacija za Android 1. del: Začetni zaslon z uporabo fragmentov/Kotlin: Pozdravljeni še enkrat, najverjetneje imate nekaj " brezplačnih " doma zaradi COVID19 in se lahko vrnete, da preverite teme, ki ste se jih želeli naučiti v preteklosti. Razvoj aplikacij za Android je zame zagotovo eden izmed njih in pred nekaj tedni sem se odločil dati
Preprosta aplikacija za supermarket z uporabo RFID RC-522 in Arduino Mega: 6 korakov
Enostavna aplikacija za supermarket z uporabo RFID RC-522 in Arduino Mega: lepo vas je spet videti tukaj na moji drugi vadnici, tukaj vam bom pomagal ustvariti preprosto aplikacijo za supermarket z uporabo RFID RC-522 in Arduino z obdelavo za ustvarjanje preprost grafični vmesnik. Opomba: med izvajanjem ne zaženite serijskega monitorja Arduino
Spletna stran ESP8266-01: 6 korakov
Spletna stran ESP8266-01: Pozdravljeni vsi. Danes se bomo v tem članku naučili izdelati spletno stran za ESP8266-01. Izdelava tega projekta je zelo preprosta in traja le nekaj minut. Vezje je tudi preprosto in koda je lahko razumljiva. Arduino IDE bomo uporabili za