Obsah:
- Krok 1: Je vyžadován hardware
- Krok 2: Hardwarová připojení
- Krok 3: Kód pro plánování úkolů
- Krok 4: Kód pro čtení hodnot teploty a vlhkosti
- Krok 5: Kód pro hostování webového serveru
- Krok 6: Kód pro zasílání dat do Thing Speak
- Krok 7: Celkový kód
Video: Počasí Web App pomocí Esp8266: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
SHT 31 jsou snímače teploty a vlhkosti od společnosti Sensirion. SHT31 poskytuje vysokou úroveň přesnosti kolem ± 2% RH. Rozsah vlhkosti je mezi 0 až 100% a teplotní rozsah mezi -40 až 125 ° C. Je mnohem spolehlivější a rychlejší s dobou odezvy senzoru 8 sekund. Jeho funkce zahrnují vylepšené zpracování signálu a kompatibilitu s I2C. Má různé provozní režimy, díky nimž je energeticky účinný.
V tomto tutoriálu jsme propojili SHT 31 s deskou Adafruit Huzzah. Ke čtení hodnot teploty a vlhkosti jsme použili štít ESP8266 I2C. Tento adaptér zpřístupňuje uživateli všechny piny a nabízí uživatelsky přívětivé prostředí I2C.
Krok 1: Je vyžadován hardware
Hardware použitý k dokončení tohoto úkolu:
1. SHT31
2. Adafruit Huzzah ESP8266
3. Adaptér ESP8266 I2C
4. Kabel I2C
Krok 2: Hardwarová připojení
Tento krok zahrnuje průvodce připojením hardwaru. Tato část v podstatě vysvětluje zapojení potřebná pro připojení mezi snímačem a ESP8266. Připojení jsou následující.
- SHT31 pracuje přes I2C. Výše uvedený obrázek ukazuje spojení mezi modulem ESP8266 a SHT31. Používáme k tomu kabel I2C, buď můžeme použít propojovací vodiče 4 F až F.
- jeden vodič se používá pro Vcc, druhý vodič pro GND a další dva pro SDA a SCL.
- Podle adaptéru I2C jsou pin2 a pin 14 desky ESP8266 použity jako SDA a SCL
Krok 3: Kód pro plánování úkolů
V tomto kurzu provádíme tři operace
- Odečtěte data z SHT11 pomocí protokolu I2C
- hostit webový server a odeslat čtení senzoru na webovou stránku
- odešlete hodnoty senzorů do rozhraní ThingSpeak API
Abychom toho dosáhli, používáme knihovnu TaskScheduler. Naplánovali jsme tři různé úkoly podle tří různých řídicích operací. to se provádí následovně
- Úkol 1 je pro čtení hodnoty senzoru, který běží po dobu 1 sekundy, dokud nedosáhne časového limitu 10 sekund.
- Když úkol 1 dosáhne svého časového limitu, úkol 2 je povolen a úkol 1 je zakázán.
- V tomto zpětném volání se připojujeme k AP, jsou použity dvě booleovské proměnné, které se starají o přepínání mezi STA a AP
- V úkolu 2 hostujeme webový server na adrese 192.168.1.4. Tento úkol běží každých 5 sekund, dokud nedosáhne svého časového limitu, který je 50 sekund
- Když úkol 2 dosáhne časového limitu, úkol 3 je povolen a úkol 2 je zakázán.
- V tomto zpětném volání se připojujeme ke STA (místní IP)
- V úkolu 3 odesíláme čtení senzorů do cloudového rozhraní ThingSpeak API
- Úkol 3 běží každých pět sekund, dokud nedosáhne svého časového limitu, tj. 50 sekund
- Když úkol 3 dosáhne časového limitu, úkol 1 je znovu povolen a úkol 3 je deaktivován.
- Pokud není vyvoláno žádné zpětné volání nebo je zařízení nečinné, přejde do režimu spánku, čímž šetří energii.
Plánovač ts;
// Úkoly pro i2c, hostování webového serveru a zveřejňování na thingspeak
Úkol tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Úkol tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Úkol tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // časový limit pro úkoly tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // povolit úlohu I2C tI2C.enable ();
Krok 4: Kód pro čtení hodnot teploty a vlhkosti
Ke čtení hodnot teploty a vlhkosti používáme knihovnu Wire.h. Tato knihovna usnadňuje i2c komunikaci mezi senzorem a hlavním zařízením. 0x44 je adresa I2C pro SHT31.
SHT31 pracuje v jiném režimu operací. K tomu se můžete obrátit na datový list.
Používáme 0x2C a 0x06 jako MSB a LSB, respektive pro operaci s jedním výstřelem.
// Zpětné volání úkolu I2C neplatné taskI2CCallback ()
{Serial.println ("taskI2CStarted"); nepodepsaný int root [6]; // zahájení přenosu z 0x44; Wire.beginTransmission (Addr); // pro jednorázovou transmisi s vysokou opakovatelností používáme 0x2C (MSB) a 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // konec přenosu Wire.endTransmission (); // požadavek na bajty od 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// data [0] and data [1] contains 16 bit of temperature. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] obsahují 8 bitů CRC root [2] = Wire.read (); // data [3] a data [4] obsahují 16 bitů vlhkosti root [3] = Wire.read (); root [4] = Wire.read (); // data [5] se skládá z 8bitového CRC root [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // posun MSB o 8 bitů přidat LSB float cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1,8) + 32,0; // posune MSB o 8 bitů, přidá do něj LSB a rozdělí se podle plného rozlišení a * 100 pro procentní plovoucí vlhkost = (100,0 * ((root [3] * 256,0) + root [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; vlhký = vlhkost; Serial.print ("Teplota v C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Teplota ve F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Vlhkost: / t"); Serial.println (String (vlhkost, 1)); }
Krok 5: Kód pro hostování webového serveru
Z našeho zařízení jsme hostovali webový server na statické IP adrese.
- K hostování webového serveru slouží knihovna ESP8266 WebServer
- Nejprve musíme deklarovat IP adresu, bránu a masku podsítě, abychom vytvořili naši statickou IP
- Nyní deklarujte ssid a heslo pro váš přístupový bod.
- připojit k přístupovému bodu z jakéhokoli zařízení STA
- hostit server na portu 80, což je výchozí port pro internetový komunikační protokol, Hypertext Transfer Protocol (HTTP)
- zadejte 192.168.1.4 do webového prohlížeče pro úvodní webovou stránku a 192.168.1.4/Value pro webovou stránku pro čtení senzorů
// statický Ip pro 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 pro místní WiFi v režimu STA
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid a pass pro AP
const char APssid = "********";
const char APpass = "********";
Server ESP8266 WebServer (80);
neplatné nastavení {
server.on ("/", onHandleDataRoot);
server.on ("/hodnota", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
zrušit taskAPCallback () {
Serial.println ("taskAP spuštěn");
server.handleClient ();
}
neplatné onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
neplatné onHandleDataFeed () {
server.send (200, "text/html", STRANA2); }
neplatné onHandleNotFound () {
Řetězcová zpráva = "Soubor nebyl nalezen / n / n";
zpráva += "URI:";
zpráva += server.uri ();
zpráva += "\ n Metoda:";
zpráva += (server.method () == HTTP_GET)? "GET": "POST";
zpráva += "\ nArgumenty:";
zpráva += server.args ();
zpráva += "\ n";
server.send (404, "text/plain", zpráva);}
void reconnectAPWiFi () {
WiFi.mode (WIFI_AP_STA);
zpoždění (100);
WiFi.disconnect ();
boolean status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
if (status == true) {
Serial.print ("Nastavení soft-AP …");
boolean ap = WiFi.softAP (APssid, APpass);
if (ap == true) {
Serial.print ("připojeno k: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Krok 6: Kód pro zasílání dat do Thing Speak
Zde zveřejňujeme naměřené hodnoty senzorů na Thing Speak. k dokončení tohoto úkolu jsou zapotřebí následující kroky-
- Vytvořte si účet ve věci mluvit
- Vytvořte kanály a pole pro ukládání dat ze senzorů
- můžeme získávat a odesílat data z ESP do thingSpeak a naopak pomocí požadavků GET a POST do API.
- můžeme zveřejnit naše data na ThingSpeak následujícím způsobem
zrušit taskWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (vlhký); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /aktualizace HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Připojení: zavřít / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Typ obsahu: application/x-www-form-urlencoded / n"); wifiClient.print ("Délka obsahu:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Krok 7: Celkový kód
Celkový kód je k dispozici v mém úložišti github
Kredity:
- Arduino JSON: ArduinoJson
- Webový server ESP826
- Plánovač úkolů
- SHT 31
- Skenování I2C
- Výukový program HIH6130 instructables
- Wire Arduino
- NCD.io
Doporučuje:
(Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků
(Projekt IOT) Získání údajů o počasí pomocí ESP8266 a Openweather API: V tomto pokynu vytvoříme jednoduchý projekt IOT, ve kterém načteme data o počasí našeho města z openweather.com/api a zobrazíme je pomocí softwaru pro zpracování
Inteligentní distribuovaný systém sledování počasí IoT pomocí NodeMCU: 11 kroků
Inteligentní distribuovaný systém sledování počasí IoT pomocí NodeMCU: Všichni možná víte o tradiční meteorologické stanici; ale přemýšleli jste někdy nad tím, jak to vlastně funguje? Protože je tradiční meteorologická stanice nákladná a objemná, hustota těchto stanic na jednotku plochy je mnohem menší, což přispívá k
Monitorování počasí pomocí ESP32_DHT11_OLED_Thingspeak: 7 kroků
Monitorování počasí pomocí ESP32_DHT11_OLED_Thingspeak: V tomto tutoriálu vytvoříte monitor počasí, který monitoruje teplotu a vlhkost pomocí ESP32 a DHT11. Je zobrazen na displeji OLED. A je nahrán do ThingSpeak. ESP32 je účinný nástroj IOT. Jedná se o levný systém
Údaje o počasí pomocí Tabulek Google a Google Script: 7 kroků
Údaje o počasí pomocí tabulek Google a skriptu Google: V tomto Blogtutu budeme odesílat hodnoty senzoru SHT25 do listů Google pomocí Adafruit huzzah ESP8266, který pomáhá odesílat data na internet. Odesílání dat do buňky listu Google je velmi užitečné a základním způsobem, který ukládá data
Jak vytvořit zařízení IoT pro ovládání spotřebičů a monitorování počasí pomocí Esp8266: 5 kroků
Jak vytvořit zařízení IoT pro ovládání spotřebičů a sledování počasí pomocí Esp8266: Internet věcí (IoT) je vzájemné propojení fyzických zařízení (označovaných také jako „připojená zařízení“a „chytrá zařízení“), budov, a další položky zabudované do elektroniky, softwaru, senzorů, akčních členů a