Satura rādītājs:
- 1. darbība. Nepieciešama aparatūra
- 2. darbība. Aparatūras savienojumi
- 3. darbība: uzdevumu plānošanas kods
- 4. solis: Temperatūras un mitruma vērtību nolasīšanas kods
- 5. darbība: tīmekļa servera mitināšanas kods
- 6. darbība: kods datu ievietošanai vietnē Thing Speak
- 7. solis: vispārējais kods
Video: Laika tīmekļa lietotne, izmantojot Esp8266: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
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
Šī 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
Š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.
- 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.
- viens vads tiek izmantots Vcc, otrs vads GND un citi divi attiecīgi SDA un SCL.
- 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
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
Š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:
Izglītības tīmekļa lietotne: 13 soļi
Izglītības tīmekļa lietotne: Šis projekts tika izveidots kā uzdevums video un digitālās televīzijas kursam, kurā mums bija jāatrisina mācīšanas un mācīšanās problēma trīs līmeņos: metodiskā, funkcionālā un konceptuālā. Šis projekts tika izveidots kā uzdevums
Pulksteņa izgatavošana, izmantojot M5stick C, izmantojot Arduino IDE - RTC reālā laika pulkstenis ar M5stack M5stick-C: 4 soļi
Pulksteņa izgatavošana, izmantojot M5stick C, izmantojot Arduino IDE | RTC reālā laika pulkstenis ar M5stack M5stick-C: Sveiki, puiši, šajā pamācībā mēs iemācīsimies izveidot pulksteni ar m5stick-C izstrādes dēli, izmantojot Arduino IDE. Tātad m5stick parādīs datumu, laiku un amp; displejā mēneša nedēļa
Vienkārša lielveikalu lietotne, izmantojot RFID RC-522 un Arduino Mega: 6 soļi
Vienkārša lielveikalu lietotne, izmantojot RFID RC-522 un Arduino Mega: Ir labi redzēt jūs, puiši, atkal šeit, manā citā apmācībā, šeit es palīdzēšu jums izveidot vienkāršu lielveikalu lietojumprogrammu, izmantojot RFID RC-522 un Arduino ar apstrādi, lai izveidotu vienkārša GUI. Piezīme: nedarbiniet Arduino sērijas monitoru, kamēr tas darbojas
HP WebCam 101 Aka 679257-330 tīmekļa kameras moduļa atkārtota izmantošana kā vispārēja USB tīmekļa kamera: 5 soļi
Atkārtoti izmantot HP WebCam 101 Aka 679257-330 tīmekļa kameras moduli kā vispārēju USB tīmekļa kameru: es vēlos papildināt savu 14 gadus veco Panasonic CF-18 ar pavisam jaunu tīmekļa kameru, bet Panasonic vairs neatbalsta šo brīnišķīgo mašīnu, tāpēc man tas ir jādara izmantojiet pelēko vielu kaut kam vienkāršākam nekā b & b (alus un burgeri). Šī ir pirmā daļa
Datuma un laika ievadīšana lietotnē Blynk, izmantojot Wemos D1 Mini Pro: 10 soļi
Datuma un laika pārsūtīšana uz lietotni Blynk, izmantojot Wemos D1 Mini Pro: Mēs izmantosim Wemos D1 Mini Pro, lai paātrinātu laiku & datumu lietotnē Blynk. Lai veiktu šo darbību, jums nebūs jāpievieno komponenti Wemos D1 Mini Pro