Satura rādītājs:

THINGSPEAK TEMPERATURE AND HIDIDITY APP, IZMANTOJOT ESP8266: 9 soļi
THINGSPEAK TEMPERATURE AND HIDIDITY APP, IZMANTOJOT ESP8266: 9 soļi

Video: THINGSPEAK TEMPERATURE AND HIDIDITY APP, IZMANTOJOT ESP8266: 9 soļi

Video: THINGSPEAK TEMPERATURE AND HIDIDITY APP, IZMANTOJOT ESP8266: 9 soļi
Video: Full Control of DC Motor with ESP8266 NodeMCU D1 Mini over WiFi 2024, Novembris
Anonim
THINGSPEAK TEMPERATURE AND HIDIDITY APP, IZMANTOJOT ESP8266
THINGSPEAK TEMPERATURE AND HIDIDITY APP, IZMANTOJOT ESP8266

Rūpējoties par savām elektroniskajām lietām, man radās ideja izveidot tīmekļa laika lietotni. Šī tīmekļa lietotne izmanto SHT31 sensoru, lai iegūtu reāllaika temperatūras un mitruma datus. Mēs esam ieviesuši savu projektu ESP8266 WiFi modulī. Tiešsaistē vai bezsaistē! Nav jāuztraucas, neatkarīgi no tā, vai esat tiešsaistē vai bezsaistē, jūs saņemsit laika apstākļu atjauninājumus no jebkuras vietas un jebkurā laikā. Šī tīmekļa lietotne ievieto datus vietējā tīmekļa serverī, kā arī mākonī. Mākoņdarbiem mēs izmantojam ThingSpeak API. SHT31 izmanto I2C, lai iegūtu datus no sensora.

SHT 31 ir Sensirion ražotie temperatūras un mitruma sensori. SHT31 nodrošina augstu precizitātes līmeni aptuveni ± 2% RH. Mitruma diapazons ir no 0 līdz 100%, un temperatūras diapazons ir no -40 līdz 125 ° C. Tas ir daudz uzticamāks un ātrāks ar 8 sekunžu sensora reakcijas laiku. Tās funkcionalitāte ietver uzlabotu signālu apstrādi un I2C saderību. Tam ir dažādi darbības režīmi, kas padara to energoefektīvu.

Šajā apmācībā mēs esam sasaistījuši SHT 31 ar Adafruit Huzzah dēli. Temperatūras un mitruma vērtību nolasīšanai mēs izmantojām vairogu ESP8266 I2C. Šis adapteris padara visas tapas pieejamas lietotājam un piedāvā lietotājam draudzīgu I2C vidi.

1. darbība. Nepieciešama aparatūra

Nepieciešama aparatūra
Nepieciešama aparatūra
Nepieciešama aparatūra
Nepieciešama aparatūra
Nepieciešama aparatūra
Nepieciešama aparatūra

Šī uzdevuma veikšanai izmantotā aparatūra:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C adapteris
  4. I2C kabelis

2. darbība. Aparatūras savienojumi

Aparatūras savienojumi
Aparatūras savienojumi

Šis solis ietver aparatūras savienošanas rokasgrāmatu. Šajā sadaļā būtībā ir izskaidroti nepieciešamie vadu savienojumi starp sensoru un ESP8266. Savienojumi ir šādi.

  1. SHT31 darbojas, izmantojot I2C. Iepriekš redzamais attēls parāda savienojumu starp ESP8266 un SHT31 moduli. Tam mēs izmantojam I2C kabeli, vai nu mēs varam izmantot 4 F līdz F džemperu vadus.
  2. viens vads tiek izmantots Vcc, otrs vads GND un citi divi attiecīgi SDA un SCL
  3. Saskaņā ar I2C adapteri ESP8266 plates 2 un 14 tapa tiek izmantoti attiecīgi kā SDA un SCL

3. darbība: uzdevumu plānošanas kods

Uzdevumu plānošanas kods
Uzdevumu plānošanas kods

Šajā apmācībā mēs veicam trīs darbības

  • Izlasiet datus no SHT11, izmantojot I2C protokolu
  • mitiniet tīmekļa serveri un ievietojiet sensora nolasījumu tīmekļa vietnē
  • ievietojiet sensora rādījumus ThingSpeak API

Lai to panāktu, mēs izmantojam TaskScheduler bibliotēku. Mēs esam ieplānojuši trīs dažādus uzdevumus, kas attiecas uz trim dažādām kontroles darbībām. tas tiek darīts šādi

  • 1. uzdevums ir sensora vērtības nolasīšanai, šis uzdevums tiek izpildīts 1 sekundi, līdz tiek sasniegts taimauts 10 sekundes.
  • Kad 1. uzdevums ir beidzies, 2. uzdevums ir iespējots un 1. uzdevums ir atspējots.
  • Šajā atzvanā mēs izveidojam savienojumu ar AP. Tiek ņemti divi Būla mainīgie, lai rūpētos par pārslēgšanos starp STA un AP
  • 2. uzdevumā mēs mitinām tīmekļa serveri vietnē 192.168.1.4. Šis uzdevums tiek izpildīts ik pēc 5 sekundēm, līdz tiek sasniegts taimauts, kas ir 50 sekundes
  • Kad 2. uzdevums sasniedz taimautu, 3. uzdevums ir iespējots un 2. uzdevums ir atspējots.

  • Šajā savienojumā mēs izveidojam savienojumu ar STA (vietējo IP). 3. uzdevumā mēs ievietojam sensora rādījumus mākoņa ThingSpeak API
  • 3. uzdevums tiek izpildīts ik pēc piecām sekundēm, līdz tiek sasniegts taimauts, ti, 50 sekundes
  • Kad 3. uzdevums ir beidzies, 1. uzdevums ir atkal iespējots un 3. uzdevums ir atspējots.
  • Ja netiek atzvanīts vai ierīce ir dīkstāvē, tā tiek pārslēgta uz vieglu miega režīmu, tādējādi ietaupot enerģiju.

anulēts uzdevumsI2CCallback ();

void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); anulēts uzdevumsWiFiCallback (); void taskWiFiDisable (); // Uzdevumi i2c, tīmekļa servera mitināšana un ievietošana lietas runā Uzdevums tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL un taskI2CDisable); Uzdevums tI2C (1 * TASK_SECOND, TASK_FOREVER un & taskI2CCallback, & ts, false, NULL un taskI2CDisable); Uzdevums tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL un taskAPDisable); Uzdevums tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL un & taskWiFiDisable); // taimauts uzdevumiem tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // iespējot I2C uzdevumu tI2C.enable ();

4. solis: Temperatūras un mitruma vērtību nolasīšanas kods

Temperatūras un mitruma vērtību nolasīšanas kods
Temperatūras un mitruma vērtību nolasīšanas kods

Mēs izmantojam Wire.h bibliotēku, lai nolasītu temperatūras un mitruma vērtības. Šī bibliotēka atvieglo i2c komunikāciju starp sensoru un galveno ierīci. 0x44 ir SHT31 I2C adrese.

SHT31 darbojas citā darbības režīmā. Lai to izdarītu, varat atsaukties uz datu lapu. Viena kadra darbībai mēs attiecīgi izmantojam 0x2C un 0x06 kā MSB un LSB.

// I2C uzdevuma atzvanīšana void taskI2CCallback () {Serial.println ("taskI2CStarted"); neparakstīta int sakne [6]; // sākt pārraidi no 0x44; Wire.beginTransmission (Addr); // viena kadra pārraidei ar augstu atkārtojamību mēs izmantojam 0x2C (MSB) un 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // beigu pārraide Wire.endTransmission (); // pieprasīt baitus no 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); ja (Wire.available () == 6) {// dati [0] un dati [1] satur 16 bitu temperatūras. sakne [0] = Wire.read (); sakne [1] = Wire.read (); // dati [2] satur 8 bitu CRC saknes [2] = Wire.read (); // dati [3] un dati [4] satur 16 bitu mitruma saknes [3] = Wire.read (); sakne [4] = Wire.read (); // dati [5] sastāv no 8 bitu CRC saknes [5] = Wire.read (); } int temp = (sakne [0] * 256) + sakne [1]; // pārbīdīt MSB par 8 bitiem pievienot LSB pludiņu cTemp = -45.0 + (175.0 * temp /65535.0); pludiņš fTemp = (cTemp * 1,8) + 32,0; // nobīdiet MSB par 8 bitiem, pievienojiet tam LSB, sadaliet to ar pilnu izšķirtspēju un * 100 procentuālajam pludiņa mitrumam = (100,0 * ((sakne [3] * 256,0) + sakne [4])) /65535.0; tempC = cTemp; tempF = fTemp; mitrs = mitrums; Serial.print ("Temperatūra C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatūra F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Mitrums: / t"); Serial.println (String (mitrums, 1)); }

5. darbība: tīmekļa servera mitināšanas kods

Kods tīmekļa servera mitināšanai
Kods tīmekļa servera mitināšanai
Kods tīmekļa servera mitināšanai
Kods tīmekļa servera mitināšanai

Mēs no savas ierīces mitinājām tīmekļa serveri, izmantojot statisku IP.

Tīmekļa servera mitināšanai tiek izmantota bibliotēka ESP8266WebServer

  • Vispirms mums ir jādeklarē IP adrese, vārteja un apakštīkla maska, lai izveidotu mūsu statisko IP
  • Tagad deklarējiet piekļuves punkta ssid un paroli. Izveidojiet savienojumu ar piekļuves punktu no jebkuras STA ierīces
  • mitiniet serveri portā 80, kas ir noklusējuma ports interneta sakaru protokolam, hiperteksta pārsūtīšanas protokols (HTTP) ievadiet tīmekļa pārlūkprogrammā ievadīšanas vietnei 192.168.1.4 un 192.168.1.4/Vērtība sensora lasīšanas tīmekļa lapai

// statiskais Ip APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid un AP vietējam WiFi STA režīmā const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid un pass AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer serveris (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Vērtība", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP sākta"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Fails nav atrasts / n / n"; ziņojums += "URI:"; ziņojums += server.uri (); ziņojums += "\ nMetode:"; ziņojums += (server.method () == HTTP_GET)? "GET": "POST"; ziņojums += "\ nArgumenti:"; ziņojums += server.args (); ziņojums += "\ n"; server.send (404, "teksts/vienkāršs", ziņojums); } void reconnectAPWiFi () {WiFi.mode (WIFI_AP_STA); kavēšanās (100); WiFi.disconnect (); Būla statuss = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Soft-AP iestatīšana …"); Būla ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("savienots ar: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

6. darbība: Thingspeak iestatīšana

Thingspeak iestatīšana
Thingspeak iestatīšana
Thingspeak iestatīšana
Thingspeak iestatīšana
Thingspeak iestatīšana
Thingspeak iestatīšana

ThingSpeak ir IoT platforma. ThingSpeak ir bezmaksas tīmekļa pakalpojums, kas ļauj apkopot un glabāt sensoru datus mākonī.

Šajā solī es jums sniegšu īsu procedūru, kā izveidot savu Thing Speak kontu

  • Reģistrējieties jaunam lietotāja kontam vietnē ThingSpeak
  • Izveidojiet jaunu kanālu, atlasot Kanāli, Mani kanāli un pēc tam Jauns kanāls
  • Rediģējiet savus laukus
  • Šajos laukos ir jūsu sensora dati
  • Ņemiet vērā rakstīšanas API atslēgu un kanāla ID
  • Savā Arduino skicē varat izmantot ThingSpeak bibliotēku Arduino, vai arī varat tieši IELIKT datus ThingSpeak API
  • nākamais solis izstrādā satura ievietošanu Thing Speak API

7. darbība: kods datu ievietošanai vietnē Thing Speak

Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak
Kods datu ievietošanai vietnē Thing Speak

Šeit mēs ievietojam sensoru rādījumus vietnē Thing Speak. lai pabeigtu šo uzdevumu, ir jāveic šādas darbības-

  • Izveidojiet savu kontu runājošā vietā. Izveidojiet kanālus un laukus, lai saglabātu sensoru datus
  • mēs varam iegūt un publicēt datus no ESP uz lietuSpeak un otrādi, izmantojot apet, izmantojot GET un POST pieprasījumus.
  • mēs varam ievietot savus datus vietnē ThingSpeak šādi

id taskWiFiCallback () {WiFiClient wifiClient; ja (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& lauks1 ="; postStr += String (mitrs); postStr += "& lauks2 ="; postStr += String (tempC); postStr += "& lauks3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /atjaunināt HTTP /1.1 / n"); wifiClient.print ("Saimnieks: api.thingspeak.com / n"); wifiClient.print ("Savienojums: aizvērt / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Content-Type: application/x-www-form-urlencoded / n"); wifiClient.print ("Content-Length:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

8. solis: vispārējais kods

Kopējais kods ir pieejams manā GitHub krātuvē

9. darbība. Kredīti

  • Arduino JSON
  • ESP826WebServer
  • Uzdevumu plānotājs
  • SHT 31
  • I2C skenēšana
  • HIH6130 pamācību pamācība
  • Vads
  • NCD.io

Ieteicams: