Mundarija:

ESP8266: THINGSPEAK TEMPERATURE AND HAMIDITY APP: 9 qadam
ESP8266: THINGSPEAK TEMPERATURE AND HAMIDITY APP: 9 qadam

Video: ESP8266: THINGSPEAK TEMPERATURE AND HAMIDITY APP: 9 qadam

Video: ESP8266: THINGSPEAK TEMPERATURE AND HAMIDITY APP: 9 qadam
Video: Air Pollution Monitoring using Arduino and ESP8266 Wi-Fi | MQ135 | MQ2 | MQ4 | MQ7 2024, Noyabr
Anonim
ESP8266 yordamida THINGSPEAK TEMPERATURE AND HAMIDITY APP
ESP8266 yordamida THINGSPEAK TEMPERATURE AND HAMIDITY APP

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

Uskuna kerak
Uskuna kerak
Uskuna kerak
Uskuna kerak
Uskuna kerak
Uskuna kerak

Ushbu vazifani bajarish uchun ishlatiladigan uskunalar:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C adapteri
  4. I2C kabeli

2 -qadam: Uskuna ulanishlari

Uskuna ulanishlari
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.

  1. 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.
  2. bitta sim Vcc uchun, ikkinchisi GND uchun, ikkinchisi esa SDA va SCL uchun mos keladi
  3. I2C adapteriga ko'ra, ESP8266 kartasining pin2 va pin 14 mos ravishda SDA va SCL sifatida ishlatiladi.

3 -qadam: Vazifalarni rejalashtirish kodi

Vazifalarni rejalashtirish kodi
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

Harorat va namlik qiymatlarini o'qish kodi
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

Veb -serverni joylashtirish kodi
Veb -serverni joylashtirish kodi
Veb -serverni joylashtirish kodi
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 sozlamalari
Thingspeak sozlamalari
Thingspeak sozlamalari
Thingspeak sozlamalari
Thingspeak sozlamalari
Thingspeak sozlamalari

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

Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish kodi
Gapirishga ma'lumot yuborish 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: