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: Code para sa Pag-post ng Data sa Thing Speak
- Hakbang 7: Pangkalahatang Code
Video: Weather Web App Gamit ang Esp8266: 7 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
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:
1. SHT31
2. Adafruit Huzzah ESP8266
3. adaptor ng ESP8266 I2C
4. 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 pag-timeout ay pinagana ang Gawain 2 at hindi pinagana ang Task1.
- 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 callback na ito
- Sa Gawain 3 inilalagay namin ang pagbabasa ng sensor 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 pag-timeout nito 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.
Tagapag-iskedyul ts;
// Mga gawain para sa i2c, pagho-host ng web server at pag-post sa mga bagay na bagay
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 webserver
- 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.
- kumonekta 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, 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 sensor ng webpage
// static Ip para sa AP
IPAddress 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); }
walang bisa saHandleDataFeed () {
server.send (200, "text / html", PAGE2); }
walang bisa saHandleNotFound () {
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 ang muling pagkonektaAPWiFi () {
WiFi.mode (WIFI_AP_STA);
pagkaantala (100);
WiFi.disconnect ();
katayuan ng boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
kung (status == totoo) {
Serial.print ("Pagtatakda ng malambot-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: 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 pagsasalita ng bagay
- 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
walang bisa ang 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 7: Pangkalahatang Code
Ang pangkalahatang code ay magagamit sa aking repository ng github
Mga Kredito:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Tagapag-iskedyul ng Gawain
- SHT 31
- I2C Scan
- Tutorial na itinuturo ng HIH6130
- Wire Arduino
- NCD.io
Inirerekumendang:
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Internet Clock: Display Date and Time With an OLED Gamit ang ESP8266 NodeMCU With NTP Protocol: Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na magkakaroon ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang nagtatrabaho koneksyon sa internet At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng
Manatiling Ligtas Gamit ang Bikelight na Ito Gamit ang Mga Senyas na Pagliko: 5 Hakbang (na may Mga Larawan)
Manatiling Ligtas Gamit ang Bikelight na Ito Gamit ang Mga Sinyales na Pag-turn: Gustong-gusto kong sumakay ng bisikleta, karaniwang ginagamit ko ito upang makarating sa paaralan. Sa oras ng taglamig, madalas na madilim pa rin sa labas at mahirap para sa ibang mga sasakyan na makita ang mga signal ng aking kamay na lumiliko. Samakatuwid ito ay isang malaking panganib dahil maaaring hindi makita ng mga trak na nais kong
Paano Gumawa ng isang Device ng IoT upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: 5 Mga Hakbang
Paano Gumawa ng isang IoT Device upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: Ang Internet ng mga bagay (IoT) ay ang inter-networking ng mga pisikal na aparato (tinukoy din bilang " mga konektadong aparato " at " mga smart device "), mga gusali, at iba pang mga item - naka-embed sa electronics, software, sensor, actuators, at
Kontrolin ang Mga Kagamitan sa Bahay Gamit ang NodeMCU (ESP8266) at Blynk App: 8 Hakbang (na may Mga Larawan)
Kontrolin ang Mga Home Appliances Gamit ang NodeMCU (ESP8266) at Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at NodeMCU (ESP8266) upang makontrol ang lampara (ang anumang iba pang mga gamit sa bahay ay magiging maayos), ang kombinasyon ay maging sa pamamagitan ng internet. Ang layunin ng pagtuturo na ito ay upang ipakita ang simp
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