Obsah:
- Krok 1: Vyžaduje sa hardvér
- Krok 2: Hardvérové pripojenia
- Krok 3: Kód pre plánovanie úloh
- Krok 4: Kód na čítanie hodnôt teploty a vlhkosti
- Krok 5: Kód pre hosťovanie webového servera
- Krok 6: Kód na odosielanie údajov do reči
- Krok 7: Celkový kód
Video: Weather Web App pomocou Esp8266: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
SHT 31 sú snímače teploty a vlhkosti vyrobené spoločnosťou Sensirion. SHT31 poskytuje vysokú úroveň presnosti okolo ± 2% relatívnej vlhkosti. Rozsah vlhkosti je od 0 do 100% a teplotný rozsah od -40 do 125 ° C. Je to oveľa spoľahlivejšie a rýchlejšie s dobou odozvy senzora 8 sekúnd. Jeho funkčnosť zahŕňa vylepšené spracovanie signálu a kompatibilitu s I2C. Má rôzne prevádzkové režimy, vďaka ktorým je energeticky účinný.
V tomto návode sme prepojili SHT 31 s doskou Adafruit Huzzah. Na čítanie hodnôt teploty a vlhkosti sme použili štít ESP8266 I2C. Tento adaptér sprístupňuje všetky piny používateľovi a ponúka užívateľsky prívetivé prostredie I2C.
Krok 1: Vyžaduje sa hardvér
Hardvér použitý na dokončenie tejto úlohy:
1. SHT31
2. Adafruit Huzzah ESP8266
3. Adaptér ESP8266 I2C
4. Kábel I2C
Krok 2: Hardvérové pripojenia
Tento krok obsahuje sprievodcu pripojením hardvéru. Táto časť v zásade vysvetľuje zapojenie potrebné medzi senzorom a ESP8266. Pripojenia sú nasledujúce.
- SHT31 funguje na I2C. Vyššie uvedený obrázok ukazuje spojenie medzi modulom ESP8266 a SHT31. Používame na to kábel I2C, alebo môžeme použiť 4 prepojovacie vodiče F až F.
- jeden vodič sa používa pre Vcc, druhý vodič pre GND a ďalšie dva pre SDA a SCL.
- Podľa adaptéra I2C sa pin2 a pin 14 dosky ESP8266 používajú ako SDA, respektíve SCL
Krok 3: Kód pre plánovanie úloh
V tomto návode vykonávame tri operácie
- Prečítajte si údaje z SHT11 pomocou protokolu I2C
- hostite webový server a umiestnite údaje zo snímača na webovú stránku
- odošlite údaje zo senzorov do rozhrania ThingSpeak API
Aby sme to dosiahli, používame knižnicu TaskScheduler. Naplánovali sme tri rôzne úlohy týkajúce sa troch rôznych riadiacich operácií. toto sa robí nasledovne
- Úloha 1 je na prečítanie hodnoty senzora. Táto úloha trvá 1 sekundu, kým nedosiahne časový limit 10 sekúnd.
- Keď úloha 1 dosiahne časový limit, úloha 2 je povolená a úloha 1 je zakázaná.
- Pri tomto spätnom volaní sa pripájame k AP. O prepínanie medzi STA a AP sa starajú dve booleovské premenné
- V úlohe 2 hostíme webový server na adrese 192.168.1.4. Táto úloha prebieha každých 5 sekúnd, kým nedosiahne časový limit, ktorý je 50 sekúnd
- Keď úloha 2 vyprší časový limit, úloha 3 je povolená a úloha 2 je zakázaná.
- V tomto spätnom volaní sa pripájame k STA (lokálna IP)
- V úlohe 3 odosielame čítanie senzorov do cloudového rozhrania ThingSpeak API
- Úloha 3 prebieha každých päť sekúnd, kým nedosiahne časový limit, tj 50 sekúnd
- Akonáhle úloha 3 dosiahne časový limit, úloha 1 je znova povolená a úloha 3 je zakázaná.
- Keď sa nepodarí zavolať späť, alebo je zariadenie nečinné, prejde do režimu spánku, čím šetrí energiu.
Plánovač ts;
// Úlohy pre i2c, hosting webového servera a uverejňovanie príspevkov na thingspeak
Úloha tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Úkol tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Úloha tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // časový limit pre úlohy tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // povoliť úlohu I2C tI2C.enable ();
Krok 4: Kód na čítanie hodnôt teploty a vlhkosti
Na čítanie hodnôt teploty a vlhkosti používame knižnicu Wire.h. Táto knižnica uľahčuje komunikáciu i2c medzi senzorom a hlavným zariadením. 0x44 je adresa I2C pre SHT31.
SHT31 funguje v inom režime prevádzky. Môžete sa na to obrátiť v technickom liste.
Na operáciu jedného záberu používame 0x2C a 0x06 ako MSB a LSB.
// Spätné volanie úlohy I2C neplatné taskI2CCallback ()
{Serial.println ("taskI2CStarted"); nepodpísaný int root [6]; // spustenie prenosu z 0x44; Wire.beginTransmission (Addr); // na jednorazovú transmisiu s vysokou opakovateľnosťou používame 0x2C (MSB) a 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // koniec prenosu Wire.endTransmission (); // vyžiadanie bajtov z 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); ak (Wire.available () == 6) {// data [0] a data [1] obsahujú 16 bitov teploty. root [0] = Wire.read (); root [1] = Wire.read (); // údaje [2] obsahujú 8 bitov koreňa CRC [2] = Wire.read (); // data [3] a data [4] obsahujú 16 bitov vlhkosti root [3] = Wire.read (); root [4] = Wire.read (); // údaje [5] pozostávajú z 8 -bitového koreňa CRC [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // posun MSB o 8 bitov pridať LSB float cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1,8) + 32,0; // posun MSB o 8 bitov, pridá sa k nemu LSB rozdelené podľa plného rozlíšenia a * 100 pre percentuálnu vznášajúcu sa vlhkosť = (100,0 * ((root [3] * 256,0) + root [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; vlhký = vlhkosť; Serial.print ("Teplota v C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Teplota v F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Vlhkosť: / t"); Serial.println (Reťazec (vlhkosť, 1)); }
Krok 5: Kód pre hosťovanie webového servera
Z nášho zariadenia sme hostili webový server na statickej IP adrese.
- Na hostenie webového servera sa používa knižnica ESP8266WebServer
- Najprv musíme deklarovať IP adresu, bránu a masku podsiete, aby sme vytvorili našu statickú IP
- Teraz deklarujte ssid a heslo pre svoj prístupový bod.
- pripojte sa k prístupovému bodu z akéhokoľvek zariadenia STA
- hostite server na porte 80, ktorý je predvoleným portom pre internetový komunikačný protokol Hypertext Transfer Protocol (HTTP)
- zadajte 192.168.1.4 do webového prehliadača pre úvodnú webovú stránku a 192.168.1.4/Hodnotu pre webovú stránku čítajúcu senzor
// staticka IP pre AP
IP adresa ap_local_IP (192, 168, 1, 4);
IP adresa ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // ssid a AP pre lokálne WiFi v režime STA
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid a pass pre AP
const char APssid = "********";
const char APpass = "********";
Server ESP8266 WebServer (80);
neplatné nastavenie {
server.on ("/", onHandleDataRoot);
server.on ("/hodnota", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
zrušiť úlohuAPCallback () {
Serial.println ("taskAP spustený");
server.handleClient ();
}
neplatné onHandleDataRoot () {server.send (200, "text/html", STRANA1); }
neplatné onHandleDataFeed () {
server.send (200, "text/html", STRANA2); }
neplatné onHandleNotFound () {
Reťazcová správa = "Súbor nebol nájdený / n / n";
správa += "URI:";
správa += server.uri ();
správa += "\ nPostup:";
správa += (server.method () == HTTP_GET)? "GET": "POST";
správa += "\ nArgumenty:";
správa += server.args ();
správa += "\ n";
server.send (404, „text/plain“, správa);}
zrušiť opätovné pripojenieAPWiFi () {
WiFi.mode (WIFI_AP_STA);
oneskorenie (100);
WiFi.disconnect ();
boolean status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
if (status == true) {
Serial.print ("Nastavenie soft-AP …");
boolean ap = WiFi.softAP (APssid, APpass);
if (ap == true) {
Serial.print ("pripojené k: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Krok 6: Kód na odosielanie údajov do reči
Tu zverejňujeme hodnoty senzorov do Thing Speak. Na dokončenie tejto úlohy sú potrebné nasledujúce kroky-
- Vytvorte si účet tak, aby hovoril
- Vytvorte kanály a polia na uloženie údajov zo senzorov
- môžeme získať a odoslať údaje z ESP do programu thingSpeak a naopak pomocou požiadaviek GET a POST do rozhrania API.
- môžeme odoslať naše údaje do ThingSpeak nasledovne
zrušiť úlohuWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += Reťazec (vlhký); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /aktualizácia HTTP /1.1 / n"); wifiClient.print ("Hostiteľ: api.thingspeak.com / n"); wifiClient.print ("Pripojenie: zavrieť / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Typ obsahu: aplikácia/x-www-form-urlencoded / n"); wifiClient.print ("Dĺžka obsahu:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Krok 7: Celkový kód
Celkový kód je k dispozícii v mojom úložisku github
Kredity:
- Arduino JSON: ArduinoJson
- Webový server ESP826
- Plánovač úloh
- SHT 31
- Skenovanie I2C
- Návod na inštrukcie k HIH6130
- Drôt Arduino
- NCD.io
Odporúča:
Zachytávajte a odosielajte obrázky pomocou kamery ESP32-Cam pomocou Wi-Fi procesora ESP8266 WeMos D1 R1 s Uno: 7 krokov
Zachytávajte a odosielajte obrázky pomocou kamery ESP32-Cam pomocou ESP8266 WeMos D1 R1 Wifi procesora s Uno: Zachyťte obrázok pomocou ESP32-Cam (OV2640) pomocou procesora ESP8266 WeMos D1 R1 WiFI s Uno a pošlite ju na e-mail, uložte na Disk Google a pošlite na Whatsapp pomocou Twilio. Požiadavky: ESP8266 WeMos D1 R1 WiFI procesor s Uno (https: // protosupplies
Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: 6 krokov
Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: Ahoj chlapci, v tomto návode postavíme internetové hodiny, ktoré získajú čas z internetu, takže tento projekt nebude potrebovať na spustenie žiadne RTC, ale bude potrebovať iba fungujúce internetové pripojenie A na tento projekt potrebujete esp8266, ktorý bude mať
Ovládanie serva pomocou MPU6050 medzi Arduino a ESP8266 pomocou HC-12: 6 krokov
Ovládanie serva pomocou MPU6050 medzi Arduino a ESP8266 pomocou HC-12: V tomto projekte riadime polohu servomotora pomocou mpu6050 a HC-12 na komunikáciu medzi Arduino UNO a ESP8266 NodeMCU
Ovládanie brány pomocou Google Assistent pomocou ESP8266 NodeMCU: 6 krokov
Ovládanie brány pomocou Google Assistent pomocou ESP8266 NodeMCU: Toto je môj prvý projekt s pokynmi, takže ak sú možné vylepšenia, komentujte nižšie. Cieľom je použiť asistenta Google na odoslanie signálu na riadiacu dosku brány. Odoslaním príkazu teda dôjde k relé, ktoré zatvorí
Vlastná domáca automatizácia a monitorovanie pomocou hlasu/internetu pomocou ESP8266 a Google Home Mini: 6 krokov
Vlastná domáca automatizácia a monitorovanie pomocou hlasu/internetu pomocou ESP8266 a Google Home Mini: Hej !! Po dlhšej prestávke som tu, pretože všetci musíme urobiť niečo nudné (prácu), aby sme si zarobili. Po všetkých článkoch AUTOMATIZÁCIE DOMOV, ktoré som napísal z BLUETOOTH, IR, Local WIFI, Cloud, tj tých ťažkých, * TERAZ * prichádza najľahšie, ale najefektívnejšie