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: Thingspeak Setup
- Krok 7: Kód pro odesílání dat do Thing Speak
- Krok 8: Celkový kód
- Krok 9: Kredity
Video: THINGSPEAK TEPLOTA A VLHKOST APLIKACE POUŽITÍ ESP8266: 9 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Zatímco jsem si pohrával s elektronickými věcmi, dostal jsem nápad vytvořit webovou aplikaci o počasí. Tato webová aplikace používá snímač SHT31 pro získávání údajů o teplotě a vlhkosti v reálném čase. Náš projekt jsme nasadili na WiFi modul ESP8266. Online nebo offline! Není třeba si dělat starosti, ať jste online nebo offline, budete dostávat informace o počasí odkudkoli a kdykoli. Tato webová aplikace odesílá data na místní webový server i do cloudu. Pro cloudové operace používáme ThingSpeak API. SHT31 používá I2C k získání dat ze senzoru.
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:
- SHT 31
- Adafruit Huzzah ESP8266
- Adaptér ESP8266 I2C
- 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 vyprší, úkol 2 je povolen a úkol 1 je deaktivová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 calbacku se připojujeme ke STA (lokální IP). V úkolu 3 odesíláme čtení senzoru 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.
zrušit taskI2CCallback ();
zrušit taskI2CDisable (); zrušit taskAPCallback (); void taskAPDisable (); zrušit taskWiFiCallback (); zrušit taskWiFiDisable (); // Úkoly pro i2c, hostování webového serveru a zveřejňování příspěvků na thingspeak Úkol tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Ú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 se používá knihovna ESP8266WebServer
- 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řipojte se k přístupovému bodu z jakéhokoli zařízení STA
- hostte server na portu 80, který je výchozím portem pro internetový komunikační protokol, Hypertext Transfer Protocol (HTTP) zadejte 192.168.1.4 ve vašem webovém prohlížeči pro úvodní webovou stránku a 192.168.1.4/Value pro webovou stránku pro čtení senzorů
// statický Ip pro APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IP adresa ap_subnet (255, 255, 255, 0); // ssid a AP pro místní WiFi v režimu STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid and pass for AP const char APssid = "********"; const char APpass = "********"; Server ESP8266 WebServer (80); neplatné nastavení {server.on ("/", onHandleDataRoot); server.on ("/hodnota", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP started"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } neplatné onHandleDataFeed () {server.send (200, "text/html", STRANA2); } void onHandleNotFound () {String message = "Soubor nenalezen / 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/prostý", 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: Thingspeak Setup
ThingSpeak je platforma IoT. ThingSpeak je bezplatná webová služba, která vám umožňuje shromažďovat a ukládat data ze senzorů v cloudu.
V tomto kroku vám poskytnu stručný postup pro nastavení účtu Thing Speak
- Zaregistrujte si nový uživatelský účet v ThingSpeak
- Vytvořte nový kanál výběrem Kanály, Moje kanály a poté Nový kanál
- Upravte svá pole
- Tato pole obsahují data vašich senzorů
- Všimněte si klíče API zápisu a ID kanálu
- Na vaší skici Arduino můžete použít knihovnu ThingSpeak pro Arduino nebo můžete data přímo POSTOVAT do rozhraní ThingSpeak API
- dalším krokem je podrobný popis odeslání obsahu do rozhraní Thing Speak API
Krok 7: Kód pro odesí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 svůj účet ve věci speakCreate 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
id 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 8: Celkový kód
Celkový kód je k dispozici v mém úložišti GitHub
Krok 9: Kredity
- Arduino JSON
- Webový server ESP826
- Plánovač úkolů
- SHT 31
- Skenování I2C
- Výukový program HIH6130 instructables
- Drát
- NCD.io
Doporučuje:
Teplota a vlhkost pomocí ESP32-DHT22-MQTT-MySQL-PHP: 7 kroků
Teplota a vlhkost pomocí ESP32-DHT22-MQTT-MySQL-PHP: Moje přítelkyně chtěla skleník, tak jsem jí udělal. Chtěl jsem ale uvnitř skleníku snímač teploty a vlhkosti. Tak jsem googlil pro příklady a začal experimentovat. Můj závěr byl, že všechny příklady, které jsem našel, nebyly přesně takové, jaké
Automatizace skleníku pomocí LoRa! (Část 1) -- Senzory (teplota, vlhkost, vlhkost půdy): 5 kroků
Automatizace skleníku pomocí LoRa! (Část 1) || Senzory (teplota, vlhkost, vlhkost půdy): V tomto projektu vám ukážu, jak jsem automatizoval skleník. To znamená, že vám ukážu, jak jsem postavil skleník a jak jsem zapojil napájecí a automatizační elektroniku. Také vám ukážu, jak naprogramovat desku Arduino, která používá L
Meteostanice Arduino využívající BMP280 -DHT11 - teplota, vlhkost a tlak: 8 kroků
Meteostanice Arduino pomocí BMP280 -DHT11 - teplota, vlhkost a tlak: V tomto tutoriálu se naučíme, jak vytvořit meteorologickou stanici, která bude na displeji TFT 7735 zobrazovat TEPLOTU, VLHKOST A TLAK. Podívejte se na ukázkové video
Esp32-Ubidots-Bezdrátová teplota a vlhkost s dlouhým dosahem: 6 kroků
Esp32-Ubidots-Bezdrátová teplota a vlhkost s dlouhým dosahem: V tomto tutoriálu budeme měřit různé údaje o teplotě a vlhkosti pomocí čidla teploty a vlhkosti. Dozvíte se také, jak tato data odeslat do Ubidots. Takže jej můžete analyzovat odkudkoli pro různé aplikace
Bezdrátová teplota a vlhkost ThingSpeak, ESP32 a Long Range: 5 kroků
Bezdrátová teplota a vlhkost ThingSpeak, ESP32 a Long Range: V tomto tutoriálu budeme měřit různé údaje o teplotě a vlhkosti pomocí čidla teploty a vlhkosti. Dozvíte se také, jak tato data odeslat do ThingSpeak. Takže jej můžete analyzovat odkudkoli pro různé aplikace