Агуулгын хүснэгт:
- Алхам 1: Openweather.org -оос API түлхүүр болон URL авах
- Алхам 2: Холболтын диаграм
- Алхам 3: Arduino код
- Алхам 4: Код боловсруулах
Видео: (IOT төсөл) ESP8266 болон Openweather API ашиглан цаг агаарын мэдээллийг авах: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Энэхүү зааварчилгаанд бид хотынхоо цаг агаарын мэдээг openweather.com/api -аас авах, боловсруулах програм хангамж ашиглан харуулах энгийн IOT төслийг бүтээх гэж байна.
Хангамж:
- Ардуино
- ESP8266 эсвэл бусад esp модуль
- Arduino IDE
- Боловсруулах програм хангамж
- Талхны самбар
- Jumperwires нь эрэгтэй, эрэгтэй, эрэгтэй, эмэгтэй
Алхам 1: Openweather.org -оос API түлхүүр болон URL авах
- Https://openweathermap.org дээр данс үүсгэх (Зураг 1)
- Нэвтэрсний дараа API түлхүүрүүд рүү очвол зураг дээр үзүүлсэн шиг API түлхүүрийг авах болно. (Зураг 2)
- API түлхүүрийг хуулж, тэмдэглэлийн дэвтэрт хадгална уу. (Зураг 3)
- API сонголт руу очно уу (Зураг 4)
- Зураг дээр үзүүлсэн шиг API doc сонголт руу очно уу (Зураг 5)
- Үзүүлсэн болон үзүүлсэн 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].хайруулах (" / "", ""); }}}}
Зөвлөмж болгож буй:
AWS ба ESP32 ашиглан цаг агаарын болон чийгшлийн дохиолол: 11 алхам
AWS ба ESP32 ашиглан температур, чийгшлийн сэрэмжлүүлэг: Энэхүү зааварчилгаанд бид температур, чийгшлийн өөр өөр температур, чийгшлийн өгөгдлийг хэмжих болно. Та мөн энэ өгөгдлийг AWS руу хэрхэн илгээх талаар сурах болно
Google Хүснэгт болон Google Script ашиглан цаг агаарын мэдээлэл: 7 алхам
Google Хүснэгт болон Google Скрипт ашиглан цаг агаарын мэдээлэл: Энэхүү Blogtut дээр бид SHT25 мэдрэгчийн уншилтыг интернетэд өгөгдөл илгээхэд тусалдаг Adafruit huzzah ESP8266 ашиглан google хуудас руу илгээх гэж байна. өгөгдлийг хадгалах үндсэн арга
ESP8266 ашиглан интернетээс цаг авах - ESP8266 Nodemcu бүхий NTP цагны төсөл: 5 алхам
ESP8266 ашиглан интернетээс цаг авах | ESP8266 Nodemcu -тэй NTP цагны төсөл: Энэхүү гарын авлагад бид Arduino IDE -тэй ESP8266/nodemcu -ийг хэрхэн ашиглах талаар олж мэдэх болно. Цаг авах нь өгөгдлийг бүртгэхэд уншилтынхаа цагийг тэмдэглэхэд тустай байдаг. Хэрэв таны ESP8266 төсөл интернетэд холбогдсон бол та сүлжээний T -ийг ашиглан цаг авах боломжтой
IoT хялбар болсон: Алсын цаг агаарын мэдээллийг авах: Хэт ягаан туяа ба агаарын температур ба чийгшил: 7 алхам
IoT хялбар болгосон: Цаг агаарын алсын мэдээллийг авах: Хэт ягаан туяа ба агаарын температур ба чийгшил: Энэхүү заавар дээр бид алсын мэдээллийг хэт ягаан туяа (хэт ягаан туяа), агаарын температур, чийгшил болгон авах болно. Эдгээр өгөгдөл нь маш чухал бөгөөд ирээдүйд цаг уурын станцад ашиглагдах болно
Бөөрөлзгөнө Pi болон Weewx ашиглан 5 -аас 1 цаг агаарын станц (бусад цаг агаарын станцууд нийцтэй байдаг): 5 алхам (зурагтай)
Acurite 5 in 1 цаг уурын станц нь Raspberry Pi болон Weewx -ийг ашигладаг (бусад цаг уурын станцууд хоорондоо нийцтэй байдаг): Би Acurite 5 -ийг 1 цаг уурын станц худалдаж аваад би хол байхдаа гэртээ байгаа цаг агаарыг шалгахыг хүсч байсан. Гэртээ ирээд үүнийг тохируулсны дараа би дэлгэцээ компьютерт холбох эсвэл тэдний ухаалаг зангилааг худалдаж авах ёстой гэдгээ ойлгосон