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

(IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах: 5 алхам
(IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах: 5 алхам

Видео: (IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах: 5 алхам

Видео: (IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах: 5 алхам
Видео: Как запрограммировать модуль реле Wi-Fi ESP8266 ESP-01 2024, Арваннэгдүгээр
Anonim
(IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах
(IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах

Энэхүү зааварчилгаанд бид хотынхоо цаг агаарын мэдээг openweather.com/api -аас авах, боловсруулах програм хангамж ашиглан харуулах энгийн IOT төслийг бүтээх гэж байна.

Хангамж:

  1. Ардуино
  2. ESP8266 эсвэл бусад esp модуль
  3. Arduino IDE
  4. Боловсруулах програм хангамж
  5. Талхны самбар
  6. Jumperwires нь эрэгтэй, эрэгтэй, эрэгтэй, эмэгтэй

Алхам 1: Openweather.org -оос API түлхүүр болон URL авах

Openweather.org -оос API түлхүүр болон URL авах
Openweather.org -оос API түлхүүр болон URL авах
Openweather.org -оос API түлхүүр болон URL авах
Openweather.org -оос API түлхүүр болон URL авах
Openweather.org -оос API түлхүүр болон URL авах
Openweather.org -оос API түлхүүр болон URL авах
  1. Https://openweathermap.org дээр данс үүсгэх (Зураг 1)
  2. Нэвтэрсний дараа API түлхүүрүүд рүү очвол зураг дээр үзүүлсэн шиг API түлхүүрийг авах болно. (Зураг 2)
  3. API түлхүүрийг хуулж, тэмдэглэлийн дэвтэрт хадгална уу. (Зураг 3)
  4. API сонголт руу очно уу (Зураг 4)
  5. Зураг дээр үзүүлсэн шиг API doc сонголт руу очно уу (Зураг 5)
  6. Үзүүлсэн болон үзүүлсэн URL хаягийг хуулж, тэмдэглэлийн дэвтэрт хадгална уу (Зураг 6)

Алхам 2: Холболтын диаграм

Холболтын диаграм
Холболтын диаграм

Алхам 3: Arduino код

Энэ кодыг Arduino руу хуулахаасаа өмнө ESP8266 самбарыг arduino ide руу Boards Manager ашиглан татаж авсан эсэхээ шалгаарай.

#оруулах

#include #include #include const char* ssid = "Таны SSID"; const char* password = "Таны SSID Нууц үг"; // URL -ийн замтай таны домэйн нэр эсвэл String openWeatherMapApiKey = "API түлхүүрээ энд буулгана уу"; // Улс орны код, хотыг String city = "Mumbai" гэж орлуулах; String countryCode = "ДАХЬ"; String өгөгдөл [16]; // ЗОРИЛГООГ ТЕХИЖҮҮЛЭХИЙН 10 СЕКУНДИЙГ ТОГТООЖ БАЙГАА // Төгсгөлийн програмын хувьд API -ийн дуудлагын хязгаарыг цаг/минут тутамд шалгаж, гарын үсэг зурахаас зайлсхийхийн тулд урт/удаан хугацаагаарTTIM = 0; // Таймерыг 10 минутанд тохируулсан (600000) // гарын үсэг зураагүй урт таймерDelay = 600000; // Таймерыг 10 секундэд тохируулах (10000) гарын үсэг зураагүй урт таймерDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, нууц үг); //Serial.println("Холбож байна "); while (WiFi.status ()! = WL_CONNECTED) {саатал (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("IP хаягтай WiFi сүлжээнд холбогдсон:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Таймерыг 10 секундэд тохируулсан (timerDelay хувьсагч), эхний уншилтыг нийтлэхээс өмнө 10 секунд шаардагдана."); } void loop () {// ((millis () - lastTime)> timerDelay) бол HTTP GET хүсэлт илгээх {// WiFi холболтын статусыг шалгана уу (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + хот +", " + улсКод +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & нэгж = хэмжигдэхүүн "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) -ийг var хэлбэрийг авахад ашиглаж болно, хэрэв (JSON.typeof (myObject) == "тодорхойгүй") {//Serial.println("Парс оруулах оролт амжилтгүй боллоо! "); буцах; } // Serial.print ("JSON объект ="); // Serial.println (myObject); // Serial.print ("Температур:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Даралт:"); // Serial.println (myObject ["үндсэн"] ["даралт"]); // Serial.print ("Чийгшил:"); // Serial.println (myObject ["үндсэн"] ["чийгшил"]); // Serial.print ("Салхины хурд:"); // Serial.println (myObject ["салхи"] ["хурд"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["үндсэн"] ["даралт"]; int humid = myObject ["үндсэн"] ["чийгшил"]; int wind = myObject ["салхи"] ["хурд"]; String улс = JSON.stringify (myObject ["sys"] ["улс"]); String хот1 = JSON.stringify (myObject ["нэр"]); String цаг агаар = JSON.stringify (myObject ["цаг агаар"] [0] ["тайлбар"]); String дүрс = JSON.stringify (myObject ["цаг агаар"] [0] ["дүрс"]); өгөгдөл [0] = String (temp); өгөгдөл [1] = "/"; өгөгдөл [2] = String (pres); өгөгдөл [3] = "/"; өгөгдөл [4] = Мөр (чийглэг); өгөгдөл [5] = "/"; өгөгдөл [6] = Мөр (салхи); өгөгдөл [7] = "/"; өгөгдөл [8] = улс; өгөгдөл [9] = "/"; өгөгдөл [10] = хот1; өгөгдөл [11] = "/"; өгөгдөл [12] = цаг агаар; өгөгдөл [13] = "/"; өгөгдөл [14] = дүрс; өгөгдөл [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP хариултын код:"); // Serial.println (httpResponseCode); ачаалал = http.getString (); } өөр {Serial.print ("Алдааны код:"); Serial.println (httpResponseCode); } // Үнэгүй эх сурвалж http.end (); буцах ачаа; }

Алхам 4: Код боловсруулах

Код боловсруулж байна
Код боловсруулж байна
Код боловсруулж байна
Код боловсруулж байна
Код боловсруулж байна
Код боловсруулж байна

Энэ кодыг ажиллуулахын өмнө цаг агаарын байдлыг харуулахын тулд өгөгдсөн дүрсийг татаж аваарай. Мөн зураг, кодыг нэг хавтсанд хадгална уу.

импорт боловсруулах.сериал.*;

Цуваа myPort; PI зураг img; PI зураг img2; PI зураг img3; PI зураг img4; PI зураг img5; PI зураг img6; PI зураг img7; PI зураг img8; PI зураг img9; PI зураг img10; PI зураг img11; PI зураг img12; PI зураг img13; PI зураг img14; PI зураг img15; PI зураг img16; PI зураг img17; PI зураг img18; int температур; int pres; чийгтэй; салхи; String хот = ""; String country = ""; Цаг агаарын цаг агаар = ""; String дүрс = ""; void setup () {size (500, 500); myPort = шинэ цуваа (энэ нь "COM3", 115200); img = loadImage ("01d.png"); img2 = loadImage ("01n.png"); img3 = loadImage ("02d.png"); img4 = loadImage ("02n.png"); img5 = loadImage ("03d.png"); img6 = loadImage ("03n.png"); img7 = loadImage ("04d.png"); img8 = loadImage ("04n.png"); img9 = loadImage ("09d.png"); img10 = loadImage ("09n.png"); img11 = loadImage ("10d.png"); img12 = loadImage ("10n.png"); img13 = loadImage ("11d.png"); img14 = loadImage ("11n.png"); img15 = loadImage ("13d.png"); img16 = loadImage ("13n.png"); img17 = loadImage ("50d.png"); img18 = loadImage ("50n.png"); } void draw () {background (72, 209, 204); textSize (22); дүүргэх (54, 69, 79); текст ("Температур:", 25, 100); текст (температур +"° C", 200, 100); текст ("Даралт:", 25, 150); текст (pres + "hpa", 200, 150); текст ("Чийгшил:", 25, 200); текст (чийглэг+" %", 200, 200); текст ("Салхи:", 25, 250); текст (салхи+"м/с", 200, 250); текст ("Улс/Хот:", 25, 300); текст (улс + "-" + хот, 200, 300); текст ("Цаг агаар:", 25, 350); текст (цаг агаар, 200, 350); if (icon.contains ("01d")) {image (img, 380, 15); } if if (icon.contains ("01n")) {image (img2, 380, 15); } if if (icon.contains ("02d")) {image (img3, 380, 15); } else if (icon.contains ("02n")) {image (img4, 380, 15); } if if (icon.contains ("03d")) {image (img5, 380, 15); } if if (icon.contains ("03n")) {image (img6, 380, 15); } else if (icon.contains ("04d")) {image (img7, 380, 15); } if if (icon.contains ("04n")) {image (img8, 380, 15); } if if (icon.contains ("09d")) {image (img9, 380, 15); } if if (icon.contains ("09n")) {image (img10, 380, 15); } if if (icon.contains ("10d")) {image (img11, 380, 15); } if if (icon.contains ("10n")) {image (img12, 380, 15); } else if (icon.contains ("11d")) {image (img13, 380, 15); } if if (icon.contains ("11n")) {image (img14, 380, 15); } if if (icon == "13d") {image (img15, 380, 15); } if if (icon.contains ("13n")) {image (img16, 380, 15); } if if (icon.contains ("50d")) {image (img17, 380, 15); } if if (icon.contains ("50n")) {image (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); if (data! = null) {data = trim (data); String зүйлс = хуваах (өгөгдөл, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (зүйл [1]); чийгтэй = int (зүйл [2]); салхи = int (зүйл [3]); хот = эд зүйлс [4].хайруулах ("\" "," "); улс = эд зүйлс [5].хайруулах (" / "", ""); цаг агаар = зүйлс [6].хайруулах ("\" "," "); дүрс = зүйлүүд [7].хайруулах (" / "", ""); }}}}

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