Агуулгын хүснэгт:
- Алхам 1: Тоног төхөөрөмж шаардлагатай
- Алхам 2: Тоног төхөөрөмжийн холболт
- Алхам 3: Ажлын хуваарийн код
- Алхам 4: Температур ба чийгшлийн утгыг унших код
- Алхам 5: Вэб серверийг байршуулах код
- Алхам 6: Thing Speak -д өгөгдөл оруулах код
- Алхам 7: Ерөнхий код
Видео: Esp8266: 7 алхамыг ашиглан цаг агаарын вэб апп
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
SHT 31 бол Sensirion -ийн хийсэн температур ба чийгшилийн мэдрэгч юм. SHT31 нь ± 2% RH орчим өндөр нарийвчлалыг өгдөг. Агаарын чийгшил 0-100% хооронд, температурын хүрээ -40-125 ° C хооронд байна. Энэ нь мэдрэгчийн хариу өгөх 8 секундын хугацаанд илүү найдвартай бөгөөд хурдан ажилладаг. Түүний функц нь сайжруулсан дохионы боловсруулалт, I2C нийцтэй байдлыг агуулдаг. Энэ нь эрчим хүчний хэмнэлттэй болгодог өөр өөр горимтой.
Энэхүү гарын авлагад бид SHT 31 -ийг Adafruit Huzzah самбартай холбосон болно. Температур ба чийгшлийн утгыг уншихын тулд бид ESP8266 I2C бамбайг ашигласан. Энэхүү адаптер нь бүх тээглүүрийг хэрэглэгчдэд хүртээмжтэй болгож, хэрэглэгчдэд ээлтэй I2C орчинг санал болгодог.
Алхам 1: Тоног төхөөрөмж шаардлагатай
Энэ даалгаврыг гүйцэтгэхэд ашигладаг тоног төхөөрөмж:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C адаптер
4. I2C кабель
Алхам 2: Тоног төхөөрөмжийн холболт
Энэ алхамд тоног төхөөрөмжийг холбох гарын авлага орно. Энэ хэсэгт үндсэндээ мэдрэгч ба ESP8266 хооронд шаардлагатай утас холболтыг тайлбарласан болно. Холболтууд дараах байдалтай байна.
- SHT31 нь I2C дээр ажилладаг. Дээрх зураг нь ESP8266 ба SHT31 модулийн холболтыг харуулж байна. Бид үүний тулд I2C кабель ашиглаж байгаа бөгөөд 4 F -ээс F холбогч утас ашиглаж болно.
- нэг утсыг Vcc -д, хоёр дахь утсыг GND болон бусад хоёр утсыг SDA ба SCL -д тус тус ашигладаг.
- I2C адаптерийн дагуу ESP8266 хавтангийн pin2 ба pin 14 -ийг SDA ба SCL болгон ашигладаг.
Алхам 3: Ажлын хуваарийн код
Энэхүү гарын авлагад бид гурван үйлдлийг гүйцэтгэж байна
- I2C протокол ашиглан SHT11 дээрх өгөгдлийг уншина уу
- вэб серверийг байршуулж, мэдрэгчийн уншилтыг вэб хуудсанд байршуулна уу
- мэдрэгчийн заалтыг ThingSpeak API -д байршуулах
Үүнийг хийхийн тулд бид TaskScheduler номын санг ашиглаж байна. Бид гурван өөр хяналтын үйл ажиллагаатай холбоотой гурван өөр ажлыг төлөвлөсөн. үүнийг дараах байдлаар хийдэг
- Даалгавар 1 нь мэдрэгчийн утгыг уншихад зориулагдсан бөгөөд энэ даалгавар 10 секундын хугацаа дуусах хүртэл 1 секундын турш ажиллана.
- Task1 хугацаа нь дуусахад Task 2 идэвхжиж, Task1 идэвхгүй болно.
- Бид энэ дуудлагад AP -тэй холбогддог бөгөөд STA ба AP хооронд шилжих асуудлыг шийдэхийн тулд хоёр логик хувьсагчийг авдаг.
- Даалгавар 2 дээр бид вэб серверийг 192.168.1.4 хаягаар байршуулж байна. Энэ даалгавар нь 50 секунд болох хугацаа дуусах хүртэл 5 секунд тутамд ажиллана
- Даалгавар 2 хугацаа дуусахад 3 -р даалгавар идэвхжиж, 2 -р ажил идэвхгүй болно.
- Энэ дуудлагад бид STA (орон нутгийн IP) руу холбогддог
- Даалгавар 3 -т бид үүл ThingSpeak API дээр мэдрэгчийн уншилтыг байршуулж байна
- Даалгавар 3 нь 50 секунд тутамд таван секунд тутамд ажиллана
- Task3 хугацаа дуусахад Task 1 дахин идэвхжиж, Task3 идэвхгүй болно.
- Дахин дуудлага хийгээгүй эсвэл төхөөрөмж сул зогссон тохиолдолд гэрэл унтах горимд шилждэг тул эрчим хүч хэмнэдэг.
Хуваарьлагч ts;
// i2c -ийн даалгавар, вэб сервер байршуулах, зүйл дээр ярих
TI2C даалгавар (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Task tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Даалгавар tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // даалгаврын завсарлага tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // идэвхжүүлэх I2C даалгавар tI2C.enable ();
Алхам 4: Температур ба чийгшлийн утгыг унших код
Бид Wire.h номын санг ашиглан температур, чийгшлийн утгыг уншиж байна. Энэхүү номын сан нь мэдрэгч ба мастер төхөөрөмжийн хооронд i2c холболтыг хөнгөвчилдөг. 0x44 бол SHT31 -ийн I2C хаяг юм.
SHT31 нь өөр өөр горимд ажилладаг. Үүнийг хийхийн тулд та мэдээллийн хуудсыг үзэх боломжтой.
Бид нэг удаагийн үйлдлээр 0x2C ба 0x06 -ийг MSB болон LSB болгон ашиглаж байна.
// I2C даалгаврыг буцааж хүчингүй болгох ажил I2CCallback ()
{Serial.println ("taskI2CStarted"); гарын үсэггүй int root [6]; // 0x44 -ээс дамжуулж эхлэх; Wire.beginTransmission (Addr); // өндөр давтагдах чадвартай нэг удаагийн дамжуулалтын хувьд бид 0x2C (MSB) ба 0x06 (LSB) Wire.write (0x2C) ашигладаг; Wire.write (0x06); // дамжуулалтыг дуусгах Wire.endTransmission (); // 0x44 Wire.beginTransmission (Addr) -аас байт хүсэх; Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// өгөгдөл [0] ба өгөгдөл [1] нь 16 бит температур агуулдаг. root [0] = Wire.read (); root [1] = Wire.read (); // өгөгдөл [2] нь 8 бит CRC root [2] = Wire.read (); // өгөгдөл [3] ба өгөгдөл [4] нь 16 битийн чийгийн үндсийг агуулдаг [3] = Wire.read (); root [4] = Wire.read (); // өгөгдөл [5] нь 8 битийн CRC root [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // MSB -ийг 8 битээр шилжүүлэх нь LSB float cTemp = -45.0 + (175.0 * temp /65535.0) нэмнэ; float fTemp = (cTemp * 1.8) + 32.0; // MSB -ийг 8 битээр сольж, LSB -ийг бүрэн нарийвчлалтайгаар хувааж, хөвөх чийглэгийн хувьд * 100 = (100.0 * ((root [3] * 256.0) + root [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; чийглэг = чийгшил; Serial.print ("C дэх температур: / t"); Serial.println (String (cTemp, 1)); Serial.print ("F -ийн температур: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Чийгшил: / t"); Serial.println (String (чийгшил, 1)); }
Алхам 5: Вэб серверийг байршуулах код
Бид төхөөрөмжөөсөө статик IP дээр вэб сервер байршуулсан.
- ESP8266WebServer номын сан нь вэб серверийг байршуулахад ашиглагддаг
- Эхлээд бид статик IP үүсгэхийн тулд IP хаяг, гарц, дэд сүлжээний маск зарлах хэрэгтэй
- Одоо хандалтын цэгийнхээ ssid болон нууц үгийг мэдэгдэнэ үү.
- ямар ч STA төхөөрөмжөөс хандалтын цэг рүү холбогдох
- серверийг интернет холболтын протоколын үндсэн порт болох 80 порт дээр байрлуулах, гипертекст дамжуулах протокол (HTTP)
- Вэб хөтөч дээрээ 192.168.1.4, вэб хуудсыг үзэхийн тулд 192.168.1.4/ Мэдрэгч вэб хуудсыг унших үнэ цэнийг оруулна уу.
// AP -ийн статик Ip
IPAddress ap_local_IP (192, 168, 1, 4);
IPAddress ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // STA горимд орон нутгийн WiFi -д зориулсан ssid ба AP
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid ба AP -д нэвтрэх
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer сервер (80);
хүчингүй тохиргоо {
server.on ("/", onHandleDataRoot);
server.on ("/Value", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
Void taskAPCallback () {
Serial.println ("taskAP эхэлсэн");
server.handleClient ();
}
хүчингүй onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
хүчингүй onHandleDataFeed () {
server.send (200, "text/html", PAGE2); }
хүчингүй onHandleNotFound () {
String message = "Файл олдсонгүй / n / n";
message += "URI:";
зурвас += server.uri ();
message += "\ nАрга:";
message += (server.method () == HTTP_GET)? "GET": "POST";
message += "\ nАргументууд:";
зурвас += server.args ();
зурвас += "\ n";
server.send (404, "текст/энгийн", зурвас);}
хоосон дахин холбохAPWiFi () {
WiFi горим (WIFI_AP_STA);
саатал (100);
WiFi.disconnect ();
логик төлөв = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
хэрэв (байдал == үнэн) {
Serial.print ("Soft-AP тохируулж байна …");
boolean ap = WiFi.softAP (APssid, APpass);
хэрэв (ap == үнэн) {
Serial.print ("холбогдсон: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Алхам 6: Thing Speak -д өгөгдөл оруулах код
Энд бид Thing Speak -д мэдрэгчийн заалтыг оруулж байна. Энэ ажлыг дуусгахын тулд дараах алхмуудыг хийх шаардлагатай байна.
- Өөрийнхөө дансыг үүсгээрэй
- Мэдрэгчийнхээ өгөгдлийг хадгалах суваг, талбар үүсгэ
- бид GSP болон POST хүсэлтийг ашиглан api руу ESP-ээс өгөгдлийг thingSpeak руу авах, байршуулах боломжтой.
- Бид өөрсдийн мэдээллийг ThingSpeak -д дараах байдлаар оруулах боломжтой
хүчингүй үүрэгWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += мөр (чийглэг); 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 ("Хөтлөгч: api.thingspeak.com / n"); wifiClient.print ("Холболт: хаах / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Агуулгын төрөл: application/x-www-form-urlencoded / n"); wifiClient.print ("Агуулга-Урт:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Алхам 7: Ерөнхий код
Ерөнхий кодыг миний github репозиторид авах боломжтой
Зээл:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Ажлын хуваарьлагч
- SHT 31
- I2C скан хийх
- HIH6130 зааварчилгааны заавар
- Утас Ардуино
- NCD.io
Зөвлөмж болгож буй:
ESP8266: 4 алхамыг ашиглан онлайн цаг агаарын дэлгэцийн виджет
ESP8266 ашиглан цаг агаарын онлайн дэлгэцийн виджет: Хэдэн долоо хоногийн өмнө бид тухайн хотын цаг агаарын мэдээллийг олж, OLED модульд харуулдаг онлайн цаг агаарын дэлгэцийн системийг хэрхэн бүтээх талаар сурсан. Бид Arduino Nano 33 IoT хавтанг уг төсөлд ашигласан бөгөөд энэ нь шинэ самбар юм
ESP8266 Цаг агаарын хяналт вэб сервер (Arduino -гүй): 4 алхам
ESP8266 Цаг агаарын хяналт вэб сервер (Arduino -гүй): "Интернетийн зүйл" (IoT) нь өдрөөс өдөрт өсөн нэмэгдэж буй ярианы сэдэв болж байна. Энэ бол бидний хэрхэн амьдрах, хэрхэн ажиллахад нөлөөлөх чадвартай ойлголт юм. Аж үйлдвэрийн машинаас эхлээд элэгддэг төхөөрөмж хүртэл - барьсан
Вэб дээр суурилсан хяналтын самбар бүхий вэб холболттой SMART LED анимэйшн цаг, синхрончлогдсон цагийн сервер: 11 алхам (зурагтай)
Вэб дээр суурилсан Хяналтын самбар бүхий вэб холболттой SMART LED анимэйшн цаг, синхрончлогдсон цаг: Энэ цагийн түүх 30 гаруй жилийн түүхтэй. Аав маань энэ санааг анх 10 -хан настай байхад, LED хувьсгалаас нэлээд өмнө анх санаачилж байсан юм. Үнэн
IoT хялбар болсон: Алсын цаг агаарын мэдээллийг авах: Хэт ягаан туяа ба агаарын температур ба чийгшил: 7 алхам
IoT хялбар болгосон: Цаг агаарын алсын мэдээллийг авах: Хэт ягаан туяа ба агаарын температур ба чийгшил: Энэхүү заавар дээр бид алсын мэдээллийг хэт ягаан туяа (хэт ягаан туяа), агаарын температур, чийгшил болгон авах болно. Эдгээр өгөгдөл нь маш чухал бөгөөд ирээдүйд цаг уурын станцад ашиглагдах болно
Бөөрөлзгөнө Pi болон Weewx ашиглан 5 -аас 1 цаг агаарын станц (бусад цаг агаарын станцууд нийцтэй байдаг): 5 алхам (зурагтай)
Acurite 5 in 1 цаг уурын станц нь Raspberry Pi болон Weewx -ийг ашигладаг (бусад цаг уурын станцууд хоорондоо нийцтэй байдаг): Би Acurite 5 -ийг 1 цаг уурын станц худалдаж аваад би хол байхдаа гэртээ байгаа цаг агаарыг шалгахыг хүсч байсан. Гэртээ ирээд үүнийг тохируулсны дараа би дэлгэцээ компьютерт холбох эсвэл тэдний ухаалаг зангилааг худалдаж авах ёстой гэдгээ ойлгосон