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: duomenų paskelbimo „Thing Speak“kodas
- 7 žingsnis: bendras kodas
Video: „Weather Web App“naudojant „Esp8266“: 7 veiksmai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C adapteris
4. 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ždavinys 1 pasiekia savo skirtąjį laiką, 2 užduotis į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į adresu 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.
- Šiame atšaukime 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“pasiekia savo skirtąjį laiką, 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ą.
Planuotojas ts;
// Užduotys, skirtos „i2c“, prieglobos žiniatinklio serveriui ir skelbimui „thingspeak“
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šaukimo negaliojanti užduotisI2CCallback ()
{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į.
- prisijungti prie prieigos taško iš bet kurio STA įrenginio
- priglobti serverį 80 prievade, kuris yra numatytasis interneto ryšio protokolo, hiperteksto perdavimo protokolo (HTTP) prievadas
- įveskite 192.168.1.4 žiniatinklio naršyklėje, skirtą įvadiniam tinklalapiui, ir 192.168.1.4/Verta, skirta jutiklio skaitymui
// statinis IP, skirtas AP
„IPAddress 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“ryšiui 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 paleistas");
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 („Soft-AP nustatymas …“);
loginis ap = WiFi.softAP (APssid, APpass);
jei (ap == tiesa) {
Serial.print ("prijungtas prie: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
6 veiksmas: duomenų paskelbimo „Thing Speak“kodas
Čia mes skelbiame jutiklio rodmenis „Thing Speak“. norint atlikti šią užduotį, reikia atlikti šiuos veiksmus-
- Susikurkite savo paskyrą
- 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
void 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 (); }
7 žingsnis: bendras kodas
Bendras kodas yra mano „github“saugykloje
Kreditai:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Darbų planuotojas
- SHT 31
- I2C nuskaitymas
- HIH6130 instrukcijų pamoka
- Viela Arduino
- NCD.io
Rekomenduojamas:
Pasidaryk pats -- Kaip sukurti robotą vorą, kurį galima valdyti naudojant išmanųjį telefoną naudojant „Arduino Uno“: 6 veiksmai
Pasidaryk pats || Kaip sukurti voratinklio robotą, kurį galima valdyti naudojant išmanųjį telefoną naudojant „Arduino Uno“: Gaminant „Spider“robotą, galima sužinoti tiek daug apie robotiką. Kaip ir robotų kūrimas yra įdomus ir sudėtingas. Šiame vaizdo įraše parodysime, kaip sukurti robotą „Voras“, kurį galime valdyti naudodami savo išmanųjį telefoną (Androi
Kalbantis Arduino - MP3 leidimas naudojant „Arduino“be jokio modulio - Mp3 failo paleidimas iš „Arduino“naudojant PCM: 6 veiksmai
Kalbantis Arduino | MP3 leidimas naudojant „Arduino“be jokio modulio | Mp3 failo paleidimas iš „Arduino“naudojant PCM: Šioje instrukcijoje sužinosime, kaip leisti mp3 failą naudojant „arduino“, nenaudojant jokio garso modulio, čia naudosime „Arduino“PCM biblioteką, kuri atkuria 16 bitų 8 kHZ dažnio PCM, todėl leidžia tai padaryti
Kaip sukurti orų stotį naudojant „XinaBox“ir „Ubidots“naudojant HTTP: 7 veiksmai
Kaip sukurti orų stotį naudojant „XinaBox“ir „Ubidots“naudojant HTTP: Sužinokite, kaip sukurti savo orų stotį „Ubidots“naudojant „XinaBox xChips“(IP01, CW01 ir SW01) ESP8266 Core ir „Wi-Fi“modulis („xChip CW01“) leidžia vartotojams siųsti duomenis iš „XinaBox“modulinių „xChips“į debesį. Šiuos duomenis galima stebėti nuotoliniu būdu
„Buzzer“ir „LED“valdymas naudojant „Android“naudojant „Blynk“: 4 veiksmai
„Buzzer“ir „LED“valdymas naudojant „Android“naudojant „Blynk“: Šioje instrukcijoje aš jums pasakysiu, kaip prijungti „arduino“prie „Android“naudojant „Bluetooth“, skirtą GUI ir IOT! Šioje pamokoje naudosime „Android“telefoną ir „blynk“programą (vieną geriausių GUI) galimybė arduino) įjungti šviesos diodą ir valdyti garsinį signalą
Kaip sukurti skaičiuotuvą naudojant „Xcode“naudojant „Swift“: 9 veiksmai
Kaip sukurti skaičiuotuvą naudojant „Xcode“naudojant „Swift“: šioje trumpoje pamokoje parodysiu, kaip sukurti paprastą skaičiuotuvą naudojant „Swift“„Xcode“. Ši programa sukurta taip, kad atrodytų beveik identiška originaliai „iOS“skaičiuoklės programai. Galite sekti instrukcijas žingsnis po žingsnio ir sudaryti skaičiavimą