Агуулгын хүснэгт:

ESP8266 -ийг ашиглан THINGSPEAK -ийн температур, чийгшлийн апп: 9 алхам
ESP8266 -ийг ашиглан THINGSPEAK -ийн температур, чийгшлийн апп: 9 алхам

Видео: ESP8266 -ийг ашиглан THINGSPEAK -ийн температур, чийгшлийн апп: 9 алхам

Видео: ESP8266 -ийг ашиглан THINGSPEAK -ийн температур, чийгшлийн апп: 9 алхам
Видео: Neo6m Gps とか Sim800L を使い方。 2024, Арваннэгдүгээр
Anonim
ESP8266 -ийг ашиглан THINGPEREURE TEMPERATURE AND CHILIDITY APP
ESP8266 -ийг ашиглан THINGPEREURE TEMPERATURE AND CHILIDITY APP

Цахим эдлэлээ үзэж байхдаа вэб дээр суурилсан цаг агаарын програм хийх санаа надад төрсөн. Энэхүү вэб програм нь температур, чийгшлийн бодит мэдээллийг авахын тулд SHT31 мэдрэгчийг ашигладаг. Бид төслөө ESP8266 WiFi модуль дээр байрлуулсан. Онлайн эсвэл офлайн! Санаа зовох хэрэггүй, та онлайн эсвэл офлайн байгаа эсэхээс үл хамааран цаг агаарын мэдээг хаанаас ч, хэзээ ч авах болно. Энэхүү вэб програм нь өгөгдлийг локал вэб сервер болон үүл рүү байршуулдаг. Үүлэн үйлдлийн хувьд бид ThingSpeak API ашиглаж байна. SHT31 нь мэдрэгчээс мэдээлэл авахын тулд I2C -ийг ашигладаг.

SHT 31 бол Sensirion -ийн хийсэн температур ба чийгшилийн мэдрэгч юм. SHT31 нь ± 2% RH орчим өндөр нарийвчлалыг өгдөг. Агаарын чийгшил 0-100% хооронд, температурын хүрээ -40-125 ° C хооронд байна. Энэ нь мэдрэгчийн хариу өгөх 8 секундын хугацаанд илүү найдвартай бөгөөд хурдан ажилладаг. Түүний функц нь сайжруулсан дохионы боловсруулалт, I2C нийцтэй байдлыг агуулдаг. Энэ нь эрчим хүчний хэмнэлттэй болгодог өөр өөр горимтой.

Энэхүү гарын авлагад бид SHT 31 -ийг Adafruit Huzzah самбартай холбосон болно. Температур ба чийгшлийн утгыг уншихын тулд бид ESP8266 I2C бамбайг ашигласан. Энэхүү адаптер нь бүх тээглүүрийг хэрэглэгчдэд хүртээмжтэй болгож, хэрэглэгчдэд ээлтэй I2C орчинг санал болгодог.

Алхам 1: Тоног төхөөрөмж шаардлагатай

Тоног төхөөрөмж шаардлагатай
Тоног төхөөрөмж шаардлагатай
Тоног төхөөрөмж шаардлагатай
Тоног төхөөрөмж шаардлагатай
Тоног төхөөрөмж шаардлагатай
Тоног төхөөрөмж шаардлагатай

Энэ даалгаврыг гүйцэтгэхэд ашигладаг тоног төхөөрөмж:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C адаптер
  4. I2C кабель

Алхам 2: Тоног төхөөрөмжийн холболт

Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт

Энэ алхамд тоног төхөөрөмжийг холбох гарын авлага орно. Энэ хэсэгт үндсэндээ мэдрэгч ба ESP8266 хооронд шаардлагатай утас холболтыг тайлбарласан болно. Холболтууд дараах байдалтай байна.

  1. SHT31 нь I2C дээр ажилладаг. Дээрх зураг нь ESP8266 ба SHT31 модулийн холболтыг харуулж байна. Бид үүний тулд I2C кабель ашиглаж байгаа бөгөөд 4 F -ээс F холбогч утас ашиглаж болно.
  2. нэг утсыг Vcc -д, хоёр дахь утсыг GND болон бусад хоёр утсыг SDA ба SCL -д тус тус ашигладаг
  3. 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 идэвхгүй болно.
  • Дахин дуудлага хийгээгүй эсвэл төхөөрөмж сул зогссон тохиолдолд гэрэл унтах горимд шилждэг тул эрчим хүч хэмнэдэг.

хүчингүй taskI2CCallback ();

void taskI2CDisable (); Void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // i2c, вэб сервер байршуулах, tI2C даалгаврыг нийтлэх даалгаварууд (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); 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 даалгавар буцааж буцаах хүчингүй taskI2CCallback () {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 болон нууц үгийг зарлана уу. Ямар ч СТА төхөөрөмжөөс хандалтын цэг рүү холбогдоно уу
  • Интернет холболтын протоколын үндсэн порт болох 80 порт дээр сервер байрлуулах, Hypertext Transfer Protocol (HTTP) вэб браузер дээрээ 192.168.1.4 гэж оруулаад вэб хуудсыг уншихад 192.168.1.4

// статик Ip for APIPAddress 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 and pass for AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer сервер (80); хүчингүй тохиргоо {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} хоосон taskAPCallback () {Serial.println ("taskAP эхэлсэн"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void 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.mode (WIFI_AP_STA); саатал (100); WiFi.disconnect (); логик төлөв = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Soft-AP тохируулж байна …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("холбогдсон: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Алхам 6: Thingspeak тохиргоо

Thingspeak тохиргоо
Thingspeak тохиргоо
Thingspeak тохиргоо
Thingspeak тохиргоо
Thingspeak тохиргоо
Thingspeak тохиргоо

ThingSpeak бол IoT платформ юм. ThingSpeak бол үүл дээр мэдрэгчийн өгөгдлийг цуглуулах, хадгалах боломжийг олгодог үнэгүй вэб үйлчилгээ юм.

Энэ алхамд би Thing Speak дансаа тохируулах товч журмыг өгөх болно

  • ThingSpeak дээр шинэ хэрэглэгчийн бүртгэлд бүртгүүлнэ үү
  • Сувгууд, Миний сувгууд, дараа нь Шинэ сувгийг сонгож шинэ суваг үүсгэнэ үү
  • Талбаруудаа засах
  • Эдгээр талбарууд нь таны мэдрэгчийн өгөгдлийг агуулдаг
  • Write API түлхүүр ба сувгийн ID -г анхаарна уу
  • Arduino -ийн ноорог дээр та Arduino -д зориулсан ThingSpeak номын санг ашиглах эсвэл өгөгдлийг ThingSpeak API -д шууд байршуулах боломжтой.
  • Дараагийн алхам нь Thing Speak API -д агуулга оруулах талаар нарийвчлан тайлбарласан болно

Алхам 7: Thing Speak -д өгөгдөл оруулах код

Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код
Thing Speak -д өгөгдөл оруулах код

Энд бид Thing Speak -д мэдрэгчийн заалтыг оруулж байна. Энэ ажлыг дуусгахын тулд дараах алхмуудыг хийх шаардлагатай байна.

  • Дансны дансаа үүсгээрэй Мэдрэгчийнхээ өгөгдлийг хадгалахын тулд суваг, талбар үүсгээрэй
  • бид GSP болон POST хүсэлтийг ашиглан api руу ESP-ээс өгөгдлийг thingSpeak руу авах, байршуулах боломжтой.
  • Бид өөрсдийн мэдээллийг ThingSpeak -д дараах байдлаар оруулах боломжтой

id taskWiFiCallback () {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 (); }

Алхам 8: Ерөнхий код

Ерөнхий кодыг миний GitHub репозиторид авах боломжтой

Алхам 9: Зээл

  • Arduino JSON
  • ESP826WebServer
  • Ажлын хуваарьлагч
  • SHT 31
  • I2C скан хийх
  • HIH6130 зааварчилгааны заавар
  • Утас
  • NCD.io

Зөвлөмж болгож буй: