Talaan ng mga Nilalaman:
- Hakbang 1: Kinakailangan ang Hardware
- Hakbang 2: Mga Koneksyon sa Hardware
- Hakbang 3: Code para sa Pag-iiskedyul ng Gawain
- Hakbang 4: Code para sa Mga Halaga ng Temperatura at Humidity sa Pagbasa
- Hakbang 5: Code para sa Pagho-host ng isang Webserver
- Hakbang 6: Pag-setup ng Thingspeak
- Hakbang 7: Code para sa Pag-post ng Data sa Thing Speak
- Hakbang 8: Pangkalahatang Code
- Hakbang 9: Mga Kredito
Video: THINGSPEAK TEMPERATURE AT HUMIDITY APP NA GAMIT SA ESP8266: 9 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Habang nakikipag-usap sa aking elektronikong bagay, nakuha ko ang ideyang ito upang gumawa ng web-based na app ng panahon. Ang web app na ito ay gumagamit ng SHT31 sensor para sa pagkuha ng real-time na data ng temperatura at halumigmig. Naipakalat namin ang aming proyekto sa module na WiFi ng ESP8266. Online o offline! Hindi na kailangang mag-alala, kung ikaw ay online o offline makakakuha ka ng mga update sa panahon mula sa kahit saan at anumang oras. Nag-post ang web app na ito ng data sa lokal na web server pati na rin sa cloud. Para sa mga pagpapatakbo ng cloud, gumagamit kami ng ThingSpeak API. Gumagamit ang SHT31 ng I2C upang makuha ang data mula sa sensor.
Ang SHT 31 ay isang Temperature at Humidity Sensors na ginawa ng Sensirion. Ang SHT31 ay nagbibigay ng isang mataas na antas ng kawastuhan sa paligid ng ± 2% RH. Ang saklaw ng Humidity nito ay nasa pagitan ng 0 hanggang 100% at ang saklaw ng Temperatura ay nasa pagitan ng -40 hanggang 125 ° C. Ito ay mas maaasahan at mabilis na may 8 sec ng oras ng pagtugon ng Sensor. Kasama sa pagpapaandar nito ang pinahusay na pagpoproseso ng signal at pagiging tugma ng I2C. Ito ay may iba't ibang mga mode ng pagpapatakbo na ginagawang mabisa ang enerhiya.
Sa tutorial na ito, na-interfaced namin ang SHT 31 sa Adafruit Huzzah board. Para sa pagbabasa ng mga halagang Temperatura at Humidity ginamit namin ang kalasag ng ESP8266 I2C. Ginagawa ng adapter na ito ang lahat ng mga pin na naa-access sa gumagamit at nag-aalok ng environment na madaling gamitin ng I2C.
Hakbang 1: Kinakailangan ang Hardware
Ginamit ang hardware upang makumpleto ang gawaing ito:
- SHT 31
- Adafruit Huzzah ESP8266
- Adaptor ng ESP8266 I2C
- I2C Cable
Hakbang 2: Mga Koneksyon sa Hardware
Kasama sa hakbang na ito ang gabay sa hookup ng hardware. Karaniwang ipinapaliwanag ng seksyon na ito ang mga koneksyon sa mga kable na kinakailangan sa pagitan ng sensor at ng ESP8266. Ang mga koneksyon ay ang mga sumusunod.
- Gumagana ang SHT31 sa paglipas ng I2C. Ipinapakita ng imaheng nasa itaas ang koneksyon sa pagitan ng module na ESP8266 at SHT31. Gumagamit kami ng I2C cable para dito alinman maaari naming magamit ang 4 F hanggang F jumper wires.
- ang isang wire ay ginagamit para sa Vcc, ang pangalawang wire para sa GND at iba pang dalawa sa SDA at SCL ayon sa pagkakabanggit
-
Ayon sa I2C adapter pin2 at pin 14 ng isang board na ESP8266 ay ginagamit bilang SDA at SCL ayon sa pagkakabanggit
Hakbang 3: Code para sa Pag-iiskedyul ng Gawain
Sa tutorial na ito, nagsasagawa kami ng tatlong operasyon
- Basahin ang data mula sa SHT11 gamit ang I2C protocol
- i-host ang web server at i-post ang sensor na nagbabasa sa webpage
- i-post ang mga pagbabasa ng sensor sa ThingSpeak API
Upang makamit ito ginagamit namin ang library ng TaskScheduler. Nag-iskedyul kami ng tatlong magkakaibang mga gawain na tumutukoy sa tatlong magkakaibang mga pagpapatakbo ng kontrol. ginagawa ito tulad ng sumusunod
- Ang Gawain 1 ay para sa pagbabasa ng halaga ng sensor na tumatakbo ang gawaing ito nang 1 segundo hanggang sa maabot ang timeout ng 10 sec.
- Kapag naabot ng Task1 ang oras ng paganahin ang Gawain 2 ay pinagana at ang Task1 ay hindi pinagana.
-
Kumonekta kami sa AP sa callback na ito, Dalawang variable ng boolean ang kinuha upang alagaan ang paglipat sa pagitan ng STA at AP
- Sa Gawain 2 nagho-host kami ng isang web server sa 192.168.1.4. Ang gawain na ito ay tumatakbo para sa bawat 5 sec hanggang sa maabot ang timeout nito na 50 sec
- Kapag naabot ng Gawain 2 ang pag-timeout ang Gawain 3 ay pinagana at ang Task2 ay hindi pinagana.
- Kumonekta kami sa STA (lokal na IP) sa calback na ito. Sa Gawain 3 inilalagay namin ang sensor na nagbabasa sa cloud ThingSpeak API
- Tumatakbo ang Gawain 3 bawat limang segundo hanggang sa maabot ang timeout nito na 50 sec
- Kapag naabot ng Task3 ang oras ng pag-out ang Gawain 1 ay muling pinagana at ang Task3 ay hindi pinagana.
- Kapag walang callback na tinawag o ang aparato ay walang ginagawa ito ay pupunta sa Light Sleep kaya nakakatipid ng lakas.
walang bisa ang taskI2CCallback ();
walang bisa ang taskI2CDisable (); walang bisa ang taskAPCallback (); walang bisa na taskAPDisable (); walang bisa ang taskWiFiCallback (); walang bisa ang taskWiFiDisable (); // Mga gawain para sa i2c, pagho-host ng web server at pag-post sa mga bagay na bagay na Tasa tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Gawain tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); TAP ng gawain (5 * TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Gawain tWiFi (5 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // timeout para sa mga gawain tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // paganahin ang gawain ng I2C tI2C.enable ();
Hakbang 4: Code para sa Mga Halaga ng Temperatura at Humidity sa Pagbasa
Gumagamit kami ng Wire.h library upang mabasa ang mga halagang temperatura at halumigmig. Pinapadali ng library na ito ang komunikasyon ng i2c sa pagitan ng sensor at ng master device. Ang 0x44 ay ang I2C address para sa SHT31.
Nagpapatakbo ang SHT31 sa isang iba't ibang mga mode ng pagpapatakbo. Maaari kang mag-refer sa datasheet para doon. Gumagamit kami ng 0x2C at 0x06 bilang MSB at LSB ayon sa pagkakabanggit para sa solong operasyon ng pagbaril.
// I2C task callback void taskI2CCallback () {Serial.println ("taskI2CStarted"); unsigned int root [6]; // simulan ang paghahatid mula sa 0x44; Wire.beginTransmission (Addr); // para sa isang shot transmisstion na may mataas na kakayahang umulit na ginagamit namin 0x2C (MSB) at 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // end transmission Wire.endTransmission (); // request bytes from 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); kung (Wire.available () == 6) {// data [0] at data [1] naglalaman ng 16 bit ng temperatura. ugat [0] = Wire.read (); ugat [1] = Wire.read (); // data [2] naglalaman ng 8 bit ng root ng CRC [2] = Wire.read (); // data [3] at data [4] naglalaman ng 16 kaunting ugat ng kahalumigmigan [3] = Wire.read (); ugat [4] = Wire.read (); // data [5] binubuo ng 8 bit CRC root [5] = Wire.read (); } int temp = (ugat [0] * 256) + ugat [1]; // shift MSB by 8 bits add LSB float cTemp = -45.0 + (175.0 * temp / 65535.0); float fTemp = (cTemp * 1.8) + 32.0; // shift the MSB by 8 bits add LSB to it devide by full resolution and * 100 for porsyento float halumigmig = (100.0 * ((root [3] * 256.0) + root [4])) / 65535.0; tempC = cTemp; tempF = fTemp; mahalumigmig = halumigmig; Serial.print ("Temperatura sa C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatura sa F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Humidity: / t"); Serial.println (String (halumigmig, 1)); }
Hakbang 5: Code para sa Pagho-host ng isang Webserver
Nag-host kami ng isang web server mula sa aming aparato sa isang static IP.
Ginagamit ang library ng ESP8266WebServer upang i-host ang web server
- Una kailangan naming ideklara ang IP address, Gateway at subnet mask upang likhain ang aming static IP
- Ngayon ideklara ang ssid at password para sa iyong access point.connect sa Access point mula sa anumang aparato ng STA
- i-host ang server sa port 80 na isang default port para sa internet komunikasyon protocol, ang Hypertext Transfer Protocol (HTTP) ipasok ang 192.168.1.4 sa iyong web browser para sa intro webpage at 192.168.1.4/Value para sa pagbasa ng webpage ng sensor
// static Ip for APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid at AP para sa lokal na WiFi sa STA mode const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid at pumasa para sa AP const char APssid = "********"; const char APpass = "********"; Ang server ng ESP8266WebServer (80); walang bisa ang pag-set up {server.on ("/", onHandleDataRoot); server.on ("/ Halaga", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("nagsimula ang taskAP"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text / html", PAGE1); } void onHandleDataFeed () {server.send (200, "text / html", PAGE2); } void onHandleNotFound () {String message = "Hindi Natagpuan ang File / n / n"; mensahe + = "URI:"; mensahe + = server.uri (); mensahe + = "\ nPamamaraan:"; mensahe + = (server.method () == HTTP_GET)? "GET": "POST"; mensahe + = "\ nMga Argumento:"; mensahe + = server.args (); mensahe + = "\ n"; server.send (404, "text / plain", mensahe); } walang bisa muling kumonekta saAPWiFi () {WiFi.mode (WIFI_AP_STA); pagkaantala (100); WiFi.disconnect (); katayuan ng boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); kung (status == true) {Serial.print ("Pagse-set ng soft-AP…"); boolean ap = WiFi.softAP (APssid, APpass); kung (ap == totoo) {Serial.print ("konektado sa: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
Hakbang 6: Pag-setup ng Thingspeak
Ang ThingSpeak ay isang IoT platform. Ang ThingSpeak ay isang libreng serbisyo sa web na hinahayaan kang mangolekta at mag-store ng data ng sensor sa cloud.
Sa Hakbang na ito, bibigyan kita ng isang maikling pamamaraan upang mai-set up ang iyong Thing Speak account
- Mag-sign up para sa bagong User Account sa ThingSpeak
- Lumikha ng isang bagong Channel sa pamamagitan ng pagpili ng Mga Channel, Aking Mga Channel, at pagkatapos ay Bagong Channel
- I-edit ang iyong mga patlang
- Ang mga patlang na ito ay naglalaman ng iyong data ng sensor
- Tandaan ang Isulat ang API Key at Channel ID
- Sa iyong Arduino sketch, maaari mong gamitin ang ThingSpeak library para sa Arduino o maaari mong direktang I-POST ang data sa ThingSpeak API
- ang susunod na hakbang ay nagpapaliwanag tungkol sa pag-post ng nilalaman sa Thing Speak API
Hakbang 7: Code para sa Pag-post ng Data sa Thing Speak
Narito namin nai-post ang mga pagbabasa ng sensor sa Thing Speak. ang mga sumusunod na hakbang ay kinakailangan upang makumpleto ang gawaing ito-
- Lumikha ng iyong account sa isang bagay na nagsasalita Lumikha ng mga channel at patlang upang maiimbak ang iyong data ng sensor
- maaari naming makuha at mai-post ang data mula sa ESP patungo sa thingSpeak at vice versa gamit ang mga kahilingan sa GET at POST sa api.
- maaari naming mai-post ang aming data sa ThingSpeak tulad ng sumusunod
id taskWiFiCallback () {WiFiClient wifiClient; kung (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (mahalumigmig); postStr + = "& field2 ="; postStr + = String (tempC); postStr + = "& field3 ="; postStr + = String (tempF); postStr + = "\ r / n / r / n"; wifiClient.print ("POST / update HTTP / 1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Koneksyon: isara / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); wifiClient.print ("Uri ng Nilalaman: application / x-www-form-urlencoded / n"); wifiClient.print ("Haba ng Nilalaman:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Hakbang 8: Pangkalahatang Code
Magagamit ang pangkalahatang code sa aking Repository ng GitHub
Hakbang 9: Mga Kredito
- Arduino JSON
- ESP826WebServer
- Tagapag-iskedyul ng Gawain
- SHT 31
- I2C Scan
- Tutorial na itinuturo ng HIH6130
- Kawad
- NCD.io
Inirerekumendang:
Lumilikha ng Mga Alerto sa Email ng NCD Wireless Temperature at Humidity Sensor Gamit ang Node-Red: 22 Hakbang
Lumilikha ng Mga Alerto sa Email ng NCD Wireless Temperature at Humidity Sensor Gamit ang Node-Red: Gumagamit kami dito ng sensor ng Temperatura at Humidity ng NCD, ngunit ang mga hakbang ay mananatiling pantay para sa alinman sa ncd na produkto, kaya't kung mayroon kang iba pang mga ncd wireless sensor, maranasang libre sa obserbahan sa tabi bukod. Sa pamamagitan ng paghinto ng teksto na ito, kailangan mong
Remote na Temperatura at Pagmamanman ng Humidity Sa ESP8266 at Blynk App: 15 Mga Hakbang
Remote na Temperatura at Pagmamanman ng Humidity Sa ESP8266 at Blynk App: Ito ang aking unang proyekto sa ESP8266 chip. Nagtayo lang ako ng isang bagong greenhouse malapit sa aking bahay at ito ay kagiliw-giliw para sa akin kung ano ang nangyayari doon sa isang araw? Ibig kong sabihin kung paano nagbabago ang temperatura at halumigmig? Sapat na ang bentilasyon ng greenhouse? Kaya't ako ay nag-dec
Kontroladong Wi-Fi Robot Gamit ang Wemos D1 ESP8266, Arduino IDE at Blynk App: 11 Mga Hakbang (na may Mga Larawan)
Kontroladong Wi-Fi Robot Gamit ang Wemos D1 ESP8266, Arduino IDE at Blynk App: Sa tutorial na ito ipinapakita ko sa iyo kung paano gumawa ng isang Wi-Fi na kinokontrol na robotic tank na kinokontrol mula sa isang smartphone gamit ang Blynk App. Sa proyektong ito isang ESP8266 Wemos D1 board ang ginamit, ngunit ang ibang mga modelo ng plate ay maaari ding magamit (NodeMCU, Firebeetle, atbp.), At ang pr
Temperatura, Kamag-anak na Humidity, Atmospheric Pressure Logger Gamit ang Raspberry Pi at TE Connectivity MS8607-02BA01: 22 Mga Hakbang (na may Mga Larawan)
Temperatura, Kamag-anak na Humidity, Atmospheric Pressure Logger Gamit ang Raspberry Pi at TE Connectivity MS8607-02BA01: Panimula: Sa proyektong ito ipapakita ko sa iyo kung paano bumuo ng pag-set up sa pamamagitan ng hakbang ng isang sistema ng pag-log para sa temperatura ng halumigmig at presyon ng atmospera. Ang proyektong ito ay batay sa Raspberry Pi 3 Model B at TE Connectivity environment sensor chip MS8607-02BA
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c