Satura rādītājs:

Laika tīmekļa lietotne, izmantojot Esp8266: 7 soļi
Laika tīmekļa lietotne, izmantojot Esp8266: 7 soļi

Video: Laika tīmekļa lietotne, izmantojot Esp8266: 7 soļi

Video: Laika tīmekļa lietotne, izmantojot Esp8266: 7 soļi
Video: Как отслеживать и контролировать ESP32 из любой точки мира с помощью RemoteXY IoT Cloud 2024, Novembris
Anonim
Laika tīmekļa lietotne, izmantojot Esp8266
Laika tīmekļa lietotne, izmantojot Esp8266

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. SHT31

2. Adafruit Huzzah ESP8266

3. ESP8266 I2C adapteris

4. I2C kabelis

2. darbība. Aparatūras savienojumi

Aparatūras savienojumi
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

Š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 Task1 sasniedz savu taimautu, 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ā atzvanīšanā 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 sasniedz savu taimautu, 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.

Plānotājs ts;

// Uzdevumi i2c, tīmekļa servera mitināšana un ielikšana lietās

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

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īšanas spēkā neesošais uzdevumsI2CCallback ()

{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.
  • izveidot 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 192.168.1.4 savā tīmekļa pārlūkprogrammā, lai ievadītu tīmekļa lapu, un 192.168.1.4/Vērtība sensoru lasīšanas tīmekļa lapai

// statiskais Ip AP

IPAddress 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 caurlaide AP

const char APssid = "********";

const char APpass = "********";

ESP8266WebServer serveris (80);

anulēt iestatīšanu {

server.on ("/", onHandleDataRoot);

server.on ("/Vērtība", onHandleDataFeed);

server.onNotFound (onHandleNotFound);

}

void taskAPCallback () {

Serial.println ("taskAP sākts");

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);

ja (statuss == true) {

Serial.print ("Soft-AP iestatīšana …");

Būla ap = WiFi.softAP (APssid, APpass);

ja (ap == taisnība) {

Serial.print ("savienots ar: / t");

// IPAddress myIP = WiFi.softAPIP ();

Serial.println (WiFi.softAPIP ());

}

server.begin ();

}

}

6. 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 lietā talk
  • Izveidojiet kanālus un laukus sensoru datu glabāšanai
  • 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

void 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 (); }

7. solis: vispārējais kods

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

Kredīti:

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

Ieteicams: