Obsah:

APLIKÁCIA TEPLOTY A VLHKOSTI THINGSPEAK POUŽÍVAJÚCA ESP8266: 9 krokov
APLIKÁCIA TEPLOTY A VLHKOSTI THINGSPEAK POUŽÍVAJÚCA ESP8266: 9 krokov

Video: APLIKÁCIA TEPLOTY A VLHKOSTI THINGSPEAK POUŽÍVAJÚCA ESP8266: 9 krokov

Video: APLIKÁCIA TEPLOTY A VLHKOSTI THINGSPEAK POUŽÍVAJÚCA ESP8266: 9 krokov
Video: ESP32 DHT11 MQTT FRED 2024, November
Anonim
APLIKÁCIA TEPLOTY A VLHKOSTI THINGSPEAK POUŽÍVAJÚCA ESP8266
APLIKÁCIA TEPLOTY A VLHKOSTI THINGSPEAK POUŽÍVAJÚCA ESP8266

Pri drobných prácach s elektronikou som dostal nápad vytvoriť webovú aplikáciu pre počasie. Táto webová aplikácia používa snímač SHT31 na získavanie údajov o teplote a vlhkosti v reálnom čase. Náš projekt sme nasadili na WiFi modul ESP8266. Online alebo offline! Nie je dôvod sa obávať, či už ste online alebo offline, budete dostávať informácie o počasí odkiaľkoľvek a kedykoľvek. Táto webová aplikácia odosiela údaje na lokálny webový server aj do cloudu. Na cloudové operácie používame ThingSpeak API. SHT31 používa I2C na získanie údajov zo senzora.

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

Vyžaduje sa hardvér
Vyžaduje sa hardvér
Vyžaduje sa hardvér
Vyžaduje sa hardvér
Vyžaduje sa hardvér
Vyžaduje sa hardvér

Hardvér použitý na dokončenie tejto úlohy:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. Adaptér ESP8266 I2C
  4. Kábel I2C

Krok 2: Hardvérové pripojenia

Hardvérové pripojenia
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.

  1. 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.
  2. jeden vodič sa používa pre Vcc, druhý vodič pre GND a ďalšie dva pre SDA a SCL
  3. 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

Kód pre plánovanie úloh
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.
  • Akonáhle úloha 1 uplynie, ú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 calbacku 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 uplynie, ú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.

zrušiť úlohuI2CCallback ();

zrušiť úlohuI2CDisable (); zrušiť úlohuAPCallback (); void taskAPDisable (); zrušiť úlohuWiFiCallback (); zrušiť úlohuWiFiDisable (); // Úlohy pre i2c, hostovanie webového servera a publikovanie na thingspeak Úloha tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Ú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

Kód na čítanie hodnôt teploty a vlhkosti
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.

// 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

Kód pre hosťovanie webového servera
Kód pre hosťovanie webového servera
Kód pre hosťovanie webového servera
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, protokol Hypertext Transfer Protocol (HTTP) zadajte do webového prehliadača 192.168.1.4 pre úvodnú webovú stránku a 192.168.1.4/Hodnotu pre webovú stránku čítajúcu senzor

// statický Ip pre 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 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);} void taskAPCallback () {Serial.println ("taskAP started"); server.handleClient (); } neplatné onHandleDataRoot () {server.send (200, "text/html", STRANA1); } neplatné onHandleDataFeed () {server.send (200, "text/html", STRANA2); } void onHandleNotFound () {String message = "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/obyčajný", správa); } neplatné 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: Nastavenie Thingspeak

Nastavenie Thingspeak
Nastavenie Thingspeak
Nastavenie Thingspeak
Nastavenie Thingspeak
Nastavenie Thingspeak
Nastavenie Thingspeak

ThingSpeak je platforma IoT. ThingSpeak je bezplatná webová služba, ktorá vám umožňuje zbierať a ukladať údaje senzorov v cloude.

V tomto kroku vám poskytnem stručný postup, ako si založiť účet Thing Speak

  • Zaregistrujte si nový užívateľský účet v ThingSpeak
  • Vytvorte nový kanál výberom Kanály, Moje kanály a potom Nový kanál
  • Upravte svoje polia
  • Tieto polia obsahujú vaše údaje zo senzorov
  • Všimnite si kľúča a kanála ID rozhrania Write
  • Na náčrte Arduino môžete použiť knižnicu ThingSpeak pre Arduino alebo môžete údaje POST priamo odoslať do rozhrania ThingSpeak API
  • ďalší krok sa zaoberá odoslaním obsahu do rozhrania Thing Speak API

Krok 7: Kód na odosielanie údajov do reči

Kód na zverejnenie údajov v rozhovore s vecou
Kód na zverejnenie údajov v rozhovore s vecou
Kód na zverejnenie údajov v rozhovore s vecou
Kód na zverejnenie údajov v rozhovore s vecou
Kód na odosielanie údajov do diskusie
Kód na odosielanie údajov do diskusie
Kód na zverejnenie údajov v rozhovore s vecou
Kód na zverejnenie údajov v rozhovore s vecou

Tu zverejňujeme hodnoty senzorov do Thing Speak. Na dokončenie tejto úlohy sú potrebné nasledujúce kroky-

  • Vytvorte si účet vo veci speakCreate kanály a polia na ukladanie ú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

id taskWiFiCallback () {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 8: Celkový kód

Celkový kód je k dispozícii v mojom úložisku GitHub

Krok 9: Kredity

  • Arduino JSON
  • Webový server ESP826
  • Plánovač úloh
  • SHT 31
  • Skenovanie I2C
  • Návod na inštrukcie k HIH6130
  • Drôt
  • NCD.io

Odporúča: