Mundarija:
- 1 -qadam: Uskuna kerak
- 2 -qadam: Uskuna ulanishlari
- 3 -qadam: Vazifalarni rejalashtirish kodi
- 4 -qadam: Harorat va namlik qiymatlarini o'qish kodi
- 5 -qadam: Veb -serverni joylashtirish kodi
- 6 -qadam: Thingspeak -ni sozlash
- 7 -qadam: Ma'lumotlarni gapirish uchun joylashtirish kodi
- 8 -qadam: Umumiy kod
- 9 -qadam: kreditlar
Video: ESP8266: THINGSPEAK TEMPERATURE AND HAMIDITY APP: 9 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Elektron narsalarimni o'ylab o'tirganimda, men ob-havoga asoslangan veb-ilovasini yaratish g'oyasini oldim. Bu veb-ilova real vaqtda harorat va namlik ma'lumotlarini olish uchun SHT31 sensoridan foydalanadi. Biz loyihamizni ESP8266 WiFi moduliga joylashtirdik. Onlayn yoki oflayn! Xavotirlanishga hojat yo'q, siz Internetda yoki oflaynda bo'lsangiz ham, ob -havo ma'lumotlarini istalgan joydan va istalgan vaqtda olasiz. Ushbu veb -ilova ma'lumotlarni mahalliy veb -serverga va bulutga joylashtiradi. Bulutli operatsiyalar uchun biz ThingSpeak API -dan foydalanmoqdamiz. Sensor ma'lumotlarini olish uchun SHT31 I2C -dan foydalanadi.
SHT 31 - Sensirion tomonidan ishlab chiqarilgan harorat va namlik sensori. SHT31 ± 2% RH atrofida yuqori aniqlik darajasini ta'minlaydi. Uning namlik diapazoni 0 dan 100% gacha, harorat oralig'i -40 dan 125 ° C gacha. Sensorning 8 soniya javob berish vaqti bilan bu ancha ishonchli va tezroq. Uning funksionalligi signallarni qayta ishlashning yaxshilanishi va I2C muvofiqligini o'z ichiga oladi. U turli xil ish rejimlariga ega, bu esa energiyani tejash imkonini beradi.
Ushbu qo'llanmada biz SHT 31 -ni Adafruit Huzzah taxtasi bilan bog'ladik. Harorat va namlik qiymatlarini o'qish uchun biz ESP8266 I2C qalqonidan foydalanganmiz. Ushbu adapter barcha pinlarni foydalanuvchiga kira oladi va foydalanuvchilarga qulay I2C muhitini taklif qiladi.
1 -qadam: Uskuna kerak
Ushbu vazifani bajarish uchun ishlatiladigan uskunalar:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapteri
- I2C kabeli
2 -qadam: Uskuna ulanishlari
Bu qadam apparat ulash qo'llanmasini o'z ichiga oladi. Ushbu bo'lim asosan sensor va ESP8266 o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. Ulanishlar quyidagicha.
- SHT31 I2C ustida ishlaydi. Yuqoridagi rasm ESP8266 va SHT31 moduli o'rtasidagi aloqani ko'rsatadi. Buning uchun biz I2C kabelidan foydalanamiz yoki 4 F dan F gacha o'tish simlaridan foydalanishimiz mumkin.
- bitta sim Vcc uchun, ikkinchisi GND uchun, ikkinchisi esa SDA va SCL uchun mos keladi
- I2C adapteriga ko'ra, ESP8266 kartasining pin2 va pin 14 mos ravishda SDA va SCL sifatida ishlatiladi.
3 -qadam: Vazifalarni rejalashtirish kodi
Ushbu qo'llanmada biz uchta operatsiyani bajaramiz
- I2C protokoli yordamida SHT11 ma'lumotlarini o'qing
- veb -serverni joylashtiring va sensorning o'qilishini veb -sahifaga joylashtiring
- sensor o'qilishini ThingSpeak API -ga joylashtiring
Bunga erishish uchun biz TaskScheduler kutubxonasidan foydalanmoqdamiz. Biz uch xil nazorat operatsiyalari bilan bog'liq uch xil vazifani rejalashtirdik. bu quyidagicha amalga oshiriladi
- Vazifa 1 sensor qiymatini o'qish uchun mo'ljallangan, bu vazifa 10 soniya tugashiga qadar 1 soniya davom etadi.
- Vazifa 1 tugashi bilan Vazifa 2 yoqilgan va Vazifa 1 o'chirilgan.
- Biz ushbu qayta qo'ng'iroqda APga ulanamiz, STA va AP o'rtasidagi almashinuvga e'tibor berish uchun ikkita mantiqiy o'zgaruvchi olinadi.
- 2 -topshiriqda biz 192.168.1.4 da veb -serverni joylashtiramiz. Bu vazifa har 5 sekundda, 50 soniya tugashiga qadar ishlaydi
- Vazifa 2 tugashi bilan vazifa 3 yoqilgan va vazifa 2 o'chirilgan.
-
Biz STA -ga (mahalliy IP) ulanamiz.
- Vazifa 3 har besh soniyada, ya'ni 50 sekundgacha tugaydi
- Vazifa 3 tugashi bilan Vazifa 1 yana yoqiladi va Vazifa 3 o'chiriladi.
- Qayta qo'ng'iroq qilinmasa yoki qurilma ishlamasa, u "Light Sleep" rejimiga o'tadi va shu bilan quvvatni tejaydi.
bo'sh vazifaI2CCallback ();
bo'sh vazifaI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // i2c uchun vazifalar, veb -serverni joylashtirish va tI2C vazifasini yuklash (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); TI2C vazifasi (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); TAP vazifasi (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); TWiFi vazifasi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // tI2C.setTimeout (10 * TASK_SECOND) vazifalari uchun tanaffus; tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // I2C vazifasini yoqish tI2C.enable ();
4 -qadam: Harorat va namlik qiymatlarini o'qish kodi
Biz harorat va namlik qiymatlarini o'qish uchun Wire.h kutubxonasidan foydalanamiz. Bu kutubxona sensor va asosiy qurilma o'rtasida i2c aloqasini osonlashtiradi. 0x44 - SHT31 uchun I2C manzili.
SHT31 boshqa rejimda ishlaydi. Buning uchun ma'lumotlar jadvaliga murojaat qilishingiz mumkin. Biz bir martalik ish uchun mos ravishda MSB va LSB sifatida 0x2C va 0x06 dan foydalanamiz.
// I2C vazifasini qayta chaqirish void taskI2CCallback () {Serial.println ("taskI2CStarted"); imzosiz int root [6]; // uzatishni 0x44 dan boshlang; Wire.beginTransmission (Addr); // yuqori takrorlanishi mumkin bo'lgan bitta o'q uzatish uchun biz 0x2C (MSB) va 0x06 (LSB) Wire.write (0x2C) dan foydalanamiz; Wire.write (0x06); // uzatishni tugatish Wire.endTransmission (); // baytlarni 0x44 Wire.beginTransmission (Addr) dan so'rash; Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// ma'lumotlar [0] va ma'lumotlar [1] 16 bitli haroratni o'z ichiga oladi. root [0] = Wire.read (); root [1] = Wire.read (); // ma'lumotlar [2] 8 bit CRC ildizini o'z ichiga oladi [2] = Wire.read (); // ma'lumotlar [3] va ma'lumotlar [4] 16 bit namlik ildizini o'z ichiga oladi [3] = Wire.read (); root [4] = Wire.read (); // ma'lumotlar [5] 8 bitli CRC ildizidan iborat [5] = Wire.read (); } int temp = (ildiz [0] * 256) + ildiz [1]; // MSBni 8 bitga siljitish LSB float cTemp = -45.0 + (175.0 * temp /65535.0) qo'shing; float fTemp = (cTemp * 1.8) + 32.0; // MSBni 8 bitga siljitish, LSB -ni to'liq aniqlik bilan ajratish va namlik uchun foiz * 100 = (100.0 * ((ildiz [3] * 256.0) + ildiz [4])) /65535.0; tempC = cTemp; tempF = fTemp; nam = namlik; Serial.print ("S harorati: / t"); Serial.println (String (cTemp, 1)); Serial.print ("F harorati: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Namlik: / t"); Serial.println (String (namlik, 1)); }
5 -qadam: Veb -serverni joylashtirish kodi
Biz qurilmamizdan statik IP -da veb -serverni joylashtirdik.
ESP8266WebServer kutubxonasi veb -serverni joylashtirish uchun ishlatiladi
- Birinchidan, biz statik IP -ni yaratish uchun IP -manzilni, shlyuzni va pastki tarmoq niqobini e'lon qilishimiz kerak
- Endi kirish nuqtasi uchun ssid va parolni e'lon qiling. Har qanday STA qurilmasidan kirish nuqtasiga ulaning
- serverni Internet -aloqa protokoli uchun standart port bo'lgan 80 -portda joylashtiring, gipermatnli uzatish protokoli (HTTP) veb -brauzeringizga kirish veb -sahifasi uchun 192.168.1.4 va sensorli veb -sahifani o'qish uchun 192.168.1.4/qiymatini kiriting.
// APIPAddress ap_local_IP uchun statik IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid va AP mahalliy Wi -Fi uchun STA rejimida const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid va pass for AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer serveri (80); bekor qilish {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} bo'sh vazifaAPCallback () {Serial.println ("taskAP boshlandi"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Fayl topilmadi / n / n"; xabar += "URI:"; xabar += server.uri (); xabar += "\ nUsul:"; xabar += (server.method () == HTTP_GET)? "GET": "POST"; xabar += "\ nArgumentlar:"; xabar += server.args (); xabar += "\ n"; server.send (404, "matnli/oddiy", xabar); } qaytadan ulanishAPWiFi () {WiFi.mode (WIFI_AP_STA); kechikish (100); WiFi.disconnect (); mantiqiy holat = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == rost) {Serial.print ("Soft-AP sozlanishi …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == rost) {Serial.print ("ulangan: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
6 -qadam: Thingspeak -ni sozlash
ThingSpeak - bu IoT platformasi. ThingSpeak - bu bulutda sensor ma'lumotlarini to'plash va saqlashga imkon beradigan bepul veb -xizmat.
Ushbu qadamda men sizga Thing Speak hisobini o'rnatishning qisqacha tartibini beraman
- ThingSpeak -da yangi foydalanuvchi hisobiga ro'yxatdan o'ting
- "Kanallar", "Mening kanallarim", keyin "Yangi kanal" ni tanlab, yangi kanal yarating
- Maydonlaringizni tahrir qiling
- Bu maydonlar sensor ma'lumotlarini o'z ichiga oladi
- Write API kaliti va kanal identifikatoriga e'tibor bering
- Arduino eskizida siz Arduino uchun ThingSpeak kutubxonasidan foydalanishingiz mumkin yoki ma'lumotlarni to'g'ridan -to'g'ri ThingSpeak API -ga joylashtirishingiz mumkin.
- Keyingi qadam tarkibni Thing Speak API -ga joylashtirish haqida batafsil ma'lumot beradi
7 -qadam: Ma'lumotlarni gapirish uchun joylashtirish kodi
Bu erda biz sensor o'qilishini Thing Speak -ga joylashtiramiz. Ushbu vazifani bajarish uchun quyidagi qadamlar kerak:
- Hisob qaydnomasini yarating Sensor ma'lumotlarini saqlash uchun kanallar va maydonlarni yarating
- biz GSP va POST so'rovlarini api-ga ishlatib, ma'lumotlarni ESP-dan thingSpeak-ga olishimiz va joylashtirishimiz mumkin.
- ma'lumotlarni ThingSpeak -ga quyidagicha joylashtirishimiz mumkin
id vazifasiWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& maydon1 ="; postStr += String (nam); postStr += "& maydon2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /yangilash HTTP /1.1 / n"); wifiClient.print ("Xost: api.thingspeak.com / n"); wifiClient.print ("Ulanish: yopish / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Kontent turi: application/x-www-form-urlencoded / n"); wifiClient.print ("Kontent-uzunlik:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
8 -qadam: Umumiy kod
Umumiy kod GitHub omborimda mavjud
9 -qadam: kreditlar
- Arduino JSON
- ESP826WebServer
- Vazifalarni rejalashtiruvchi
- SHT 31
- I2C skanerlash
- HIH6130 ko'rsatmalari bo'yicha qo'llanma
- Tel
- NCD.io
Tavsiya:
Elektr va gaz hisoblagichini (Belgiya/Gollandiya) o'qing va Thingspeak -ga yuklang: 5 qadam
Elektr va gaz hisoblagichini (Belgiya/Gollandiya) o'qing va Thingspeak -ga yuklang: Agar siz energiya sarflashdan xavotirlanayotgan bo'lsangiz yoki ozgina asabiy bo'lsangiz, ehtimol siz o'zingizning yangi raqamli hisoblagichingiz ma'lumotlarini smartfoningizda ko'rishni xohlaysiz. loyiha bo'yicha biz joriy ma'lumotlarni Belgiya yoki Gollandiya raqamli elektronidan olamiz
IoT ESP8266 seriyasi: 2- ThingSpeak.com orqali ma'lumotlarni kuzatib boring: 5 qadam
IoT ESP8266 seriyasi: 2- ThingSpeak.com orqali ma'lumotlarni kuzatib boring: bu IoT ESP8266 seriyasining ikkinchi qismi. 1 -qismni ko'rish uchun IoT ESP8266 seriyali ko'rsatmalarga qarang: 1 WIFI routeriga ulaning, bu bo'lim sizga sensorli ma'lumotni mashhur IoT bepul bulutli xizmatlaridan biriga qanday yuborish kerakligini ko'rsatishga qaratilgan https: //thingspeak.com
IOT - ESP8266: 3 qadam yordamida Thingspeak -ga ma'lumotlarni joylashtiring
IOT | ESP8266 yordamida Thingspeak -ga ma'lumotlarni joylashtirish: Hozirgi vaqtda IoT trendda va ko'plab mashinalarda bulut orqali yuklash va ma'lumotlarni tahlil qilish uchun ma'lumotlar mavjud. Kichik datchiklar bulut haqidagi ma'lumotlarni yangilaydi va boshqa uchida harakatlantiruvchi vosita ishlaydi, men IoT misolidan birini tushuntirmoqchiman. Men bu maqolani va men
ThingSpeak yordamida ESP8266: 8 qadam
ThingSpeak ESP8266 yordamida: Bu ESP32 -dan Thing Speak (MQTT Broker) ga ma'lumotlarni yuborish va kuzatilgan ma'lumotlarni ko'rish yoki veb -saytingizdagi ma'lumotlardan foydalanish yoki loyihangizni kengaytirish uchun qo'llanma
ESP8266 Thingspeak va DHT11 qo'llanmasi bilan - Veb -server: 7 qadam
ESP8266 Thingspeak va DHT11 qo'llanmasi bilan | Veb -server: Hey, nima bo'ldi, bolalar! Akarsh bu erda CETech -dan. Bu mening loyiham, MQTT g'oyasi bilan bir qatorda, so'zlar platformasini tushunish, keyin esa Thingspeak -ni ESP8266 bilan ishlatish uchun ko'proq o'quv chizig'idir. Maqolaning oxiriga kelib, biz birgalikda bo'lamiz