Obsah:

THINGSPEAK TEPLOTA A VLHKOST APLIKACE POUŽITÍ ESP8266: 9 kroků
THINGSPEAK TEPLOTA A VLHKOST APLIKACE POUŽITÍ ESP8266: 9 kroků

Video: THINGSPEAK TEPLOTA A VLHKOST APLIKACE POUŽITÍ ESP8266: 9 kroků

Video: THINGSPEAK TEPLOTA A VLHKOST APLIKACE POUŽITÍ ESP8266: 9 kroků
Video: Zařízení internetu věcí by měla být dostupná a jednoduchá na instalaci. Taky že ano! 2024, Listopad
Anonim
THINGSPEAK TEPLOTA A VLHKOST APLIKACE S POUŽITÍM ESP8266
THINGSPEAK TEPLOTA A VLHKOST APLIKACE S POUŽITÍM ESP8266

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

Je vyžadován hardware
Je vyžadován hardware
Je vyžadován hardware
Je vyžadován hardware
Je vyžadován hardware
Je vyžadován hardware

Hardware použitý k dokončení tohoto úkolu:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. Adaptér ESP8266 I2C
  4. Kabel I2C

Krok 2: Hardwarová připojení

Hardwarová připojení
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í.

  1. 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.
  2. jeden vodič se používá pro Vcc, druhý vodič pro GND a další dva pro SDA a SCL
  3. 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ů

Kód pro plánování úkolů
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

Kód pro čtení hodnot teploty a vlhkosti
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

Kód pro hostování webového serveru
Kód pro hostování webového serveru
Kód pro hostování webového serveru
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

Nastavení Thingspeak
Nastavení Thingspeak
Nastavení Thingspeak
Nastavení Thingspeak
Nastavení Thingspeak
Nastavení Thingspeak

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

Kód pro zasílání dat do Thing Speak
Kód pro zasílání dat do Thing Speak
Kód pro zasílání dat do Thing Speak
Kód pro zasílání dat do Thing Speak
Kód pro zasílání dat do Thing Speak
Kód pro zasílání dat do Thing Speak
Kód pro zasílání dat do Thing Speak
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 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: