![(IOT loyihasi) ESP8266 va Openweather API yordamida ob -havo ma'lumotlarini oling: 5 qadam (IOT loyihasi) ESP8266 va Openweather API yordamida ob -havo ma'lumotlarini oling: 5 qadam](https://i.howwhatproduce.com/images/001/image-61-11-j.webp)
Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
![(IOT loyihasi) ESP8266 va Openweather API yordamida ob -havo ma'lumotlarini oling (IOT loyihasi) ESP8266 va Openweather API yordamida ob -havo ma'lumotlarini oling](https://i.howwhatproduce.com/images/001/image-61-12-j.webp)
Bu yo'riqnomada biz oddiy IOT loyihasini qurmoqchimiz, unda openweather.com/api saytidan shahrimiz ob -havo ma'lumotlarini olish va uni ishlov berish dasturi yordamida ko'rsatish.
Ta'minot:
- Arduino
- ESP8266 yoki boshqa har qanday esp moduli
- Arduino IDE
- Qayta ishlash dasturi
- Non paneli
- Jumper simlari erkakdan erkakgacha va erkakdan ayolgacha
1 -qadam: Openweather.org saytidan API kaliti va URL manzilini oling
![Openweather.org saytidan API kaliti va URL manzilini oling Openweather.org saytidan API kaliti va URL manzilini oling](https://i.howwhatproduce.com/images/001/image-61-13-j.webp)
![Openweather.org saytidan API kaliti va URL manzilini oling Openweather.org saytidan API kaliti va URL manzilini oling](https://i.howwhatproduce.com/images/001/image-61-14-j.webp)
![Openweather.org saytidan API kaliti va URL manzilini oling Openweather.org saytidan API kaliti va URL manzilini oling](https://i.howwhatproduce.com/images/001/image-61-15-j.webp)
- Https://openweathermap.org saytida hisob yarating (1 -rasm)
- Kirishdan so'ng API kalitlariga o'ting va rasmda ko'rsatilgandek API kalitini olasiz. (2 -rasm)
- API kalitini nusxa ko'chiring va uni bloknot fayliga saqlang. (3 -rasm)
- API variantiga o'ting (4 -rasm)
- Rasmda ko'rsatilgandek API doc variantiga o'ting (5 -rasm)
- Ko'rsatilgan va ko'rsatilgandan urlni nusxalash va bloknot fayliga saqlash (6 -rasm)
2 -qadam: ulanish diagrammasi
![Ulanish diagrammasi Ulanish diagrammasi](https://i.howwhatproduce.com/images/001/image-61-16-j.webp)
3 -qadam: Arduino kodi
Ushbu kodni Arduino -ga nusxalashdan oldin, ESP8266 kartasini taxtalar menejeri yordamida arduino ide -ga yuklaganingizga ishonch hosil qiling.
#qo'shing
#include #include #include const char* ssid = "Sizning SSID"; const char* password = "Sizning SSID parolingiz"; // URL yo'lli domen nomingiz yoki yo'lli IP -manzil String openWeatherMapApiKey = "API kalitingizni bu erga joylashtiring"; // Mamlakat kodi va shahar bilan almashtiring String city = "Mumbay"; String countryCode = "IN"; String ma'lumotlari [16]; // MAKSADLARNI TESTLASH UCHUN 10 DEBUNIYa BOSHLANGAN TAYMER o'rnatildi // Oxirgi dastur uchun, bloklanmagan yoki taqiqlanmagan, uzoq vaqt davomida API qo'ng'iroqlar chegarasini tekshiring/lastTime = 0; // Taymer 10 daqiqaga o'rnatildi (600000) // imzosiz uzun taymerDelay = 600000; // Taymerni 10 soniyaga o'rnating (10000) belgisiz uzun taymerDelay = 10000; JsonBuffer satri; void setup () {Serial.begin (115200); WiFi.begin (ssid, parol); //Serial.println("Ulanish"); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("IP -manzil bilan WiFi tarmog'iga ulangan:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Taymer 10 soniyaga o'rnatildi (timerDelay o'zgaruvchisi), birinchi o'qishni e'lon qilish uchun 10 soniya kerak bo'ladi."); } void loop () {// HTTP GET so'rovini yuboring, agar ((millis () - lastTime)> timerDelay) {// Wi -Fi ulanish holatini tekshiring, agar (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + shahar +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & birliklar = metrik "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); Var turini olish uchun // JSON.typeof (jsonVar) dan foydalanish mumkin, agar (JSON.typeof (myObject) == "aniqlanmagan") {//Serial.println("Tashkil etilmadi! "); qaytish; } // Serial.print ("JSON obyekti ="); // Serial.println (myObject); // Serial.print ("Harorat:"); // Serial.println (myObject ["asosiy"] ["temp"]); // Serial.print ("Bosim:"); // Serial.println (myObject ["asosiy"] ["bosim"]); // Serial.print ("Namlik:"); // Serial.println (myObject ["asosiy"] ["namlik"]); // Serial.print ("Shamol tezligi:"); // Serial.println (myObject ["shamol"] ["tezlik"]); int temp = myObject ["asosiy"] ["temp"]; long pres = myObject ["asosiy"] ["bosim"]; int humid = myObject ["asosiy"] ["namlik"]; int shamol = myObject ["shamol"] ["tezlik"]; String mamlakat = JSON.stringify (myObject ["sys"] ["mamlakat"]); String city1 = JSON.stringify (myObject ["nomi"]); String ob -havo = JSON.stringify (myObject ["ob -havo"] [0] ["tavsif"]); String belgisi = JSON.stringify (myObject ["ob -havo"] [0] ["belgi"]); ma'lumotlar [0] = String (temp); ma'lumotlar [1] = "/"; ma'lumotlar [2] = String (pres); ma'lumotlar [3] = "/"; ma'lumotlar [4] = String (nam); ma'lumotlar [5] = "/"; ma'lumotlar [6] = Ip (shamol); ma'lumotlar [7] = "/"; ma'lumotlar [8] = mamlakat; ma'lumotlar [9] = "/"; ma'lumotlar [10] = shahar1; ma'lumotlar [11] = "/"; ma'lumotlar [12] = ob -havo; ma'lumotlar [13] = "/"; ma'lumotlar [14] = belgi; ma'lumotlar [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP javob kodi:"); // Serial.println (httpResponseCode); yuk = http.getString (); } else {Serial.print ("Xato kodi:"); Serial.println (httpResponseCode); } // Bepul resurslar http.end (); yukni qaytarish; }
4 -qadam: kodni qayta ishlash
![Kodni qayta ishlash Kodni qayta ishlash](https://i.howwhatproduce.com/images/001/image-61-17-j.webp)
![Kodni qayta ishlash Kodni qayta ishlash](https://i.howwhatproduce.com/images/001/image-61-18-j.webp)
![Kodni qayta ishlash Kodni qayta ishlash](https://i.howwhatproduce.com/images/001/image-61-19-j.webp)
Ushbu kodni ishga tushirishdan oldin ob -havoni ko'rsatish uchun ishlatiladigan tasvir tasvirini yuklab oling. Va rasm va kodni bitta papkada saqlang.
importni qayta ishlash.serial.*;
Seriyali myPort; PI tasvir img; Img2 tasviri; PImg img3; PImg img4; PImg img5; PImg img6; PImg img7; PImg img8; Img9 tasviri; Img10 tasviri; PImg img11; PImg img12; PImg img13; PImg img14; Img15 tasviri; Img16 tasviri; Rasm img17; Img18 tasviri; int temp; int pres; nam nam; kuchli shamol; String shahar = ""; String mamlakat = ""; Qattiq ob -havo = ""; String belgisi = ""; void setup () {size (500, 500); myPort = yangi seriyali (bu, "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); to'ldirish (54, 69, 79); matn ("Harorat:", 25, 100); matn (temp +"° C", 200, 100); matn ("Bosim:", 25, 150); matn (pres + "hpa", 200, 150); matn ("Namlik:", 25, 200); matn (nam+" %", 200, 200); matn ("Shamol:", 25, 250); matn (shamol+"m/s", 200, 250); matn ("Mamlakat/shahar:", 25, 300); matn (mamlakat + "-" + shahar, 200, 300); matn ("Ob -havo:", 25, 350); matn (ob -havo, 200, 350); if (icon.contains ("01d")) {tasvir (img, 380, 15); } if if (icon.contains ("01n")) {image (img2, 380, 15); } if if (icon.contains ("02d")) {image (img3, 380, 15); } if 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); } if 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); } if 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 (ma'lumotlar! = null) {ma'lumotlar = trim (ma'lumotlar); String elementlari = ajratish (ma'lumotlar, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (elementlar [1]); nam = int (elementlar [2]); shamol = int (elementlar [3]); shahar = punktlar [4].jozib ("\" "," "); mamlakat = elementlar [5].rash (" / "", ""); ob -havo = elementlar [6].jozib ("\" "," "); ikonka = elementlar [7].rash (" / "", ""); }}}}
Tavsiya:
Dasturni yozib oling va uni yozib oling: 8 qadam
![Dasturni yozib oling va uni yozib oling: 8 qadam Dasturni yozib oling va uni yozib oling: 8 qadam](https://i.howwhatproduce.com/images/004/image-11093-j.webp)
O'qish dasturini yaratish uchun dasturni yaratish kerakmi ?: O'yin dasturining oxirgi versiyasi Texnologiyaning eng so'nggi bosqichi bo'lib o'tdi, shuning uchun u o'z dasturini yaratdi. Python va kutubxonachilarning vazifasi shundaki, ular hech qanday dasturga ega emas
IoT: Node-RED yordamida yorug'lik sensori ma'lumotlarini vizualizatsiya qilish: 7 qadam
![IoT: Node-RED yordamida yorug'lik sensori ma'lumotlarini vizualizatsiya qilish: 7 qadam IoT: Node-RED yordamida yorug'lik sensori ma'lumotlarini vizualizatsiya qilish: 7 qadam](https://i.howwhatproduce.com/images/006/image-15630-j.webp)
IoT: Node-RED yordamida yorug'lik sensori ma'lumotlarini vizualizatsiya qilish: Bu ko'rsatmada siz Internetga ulangan sensorni qanday yaratishni o'rganasiz! Men bu namoyish uchun tashqi yorug'lik sensori (TI OPT3001) dan foydalanaman, lekin siz tanlagan har qanday sensor (harorat, namlik, potansiyometr va boshqalar) ishlaydi. Sensor qiymatlari
ESP32 ma'lumotlarini NTP vaqt tamg'asi yordamida IoT bulutiga qanday nashr qilish kerak: 5 qadam
![ESP32 ma'lumotlarini NTP vaqt tamg'asi yordamida IoT bulutiga qanday nashr qilish kerak: 5 qadam ESP32 ma'lumotlarini NTP vaqt tamg'asi yordamida IoT bulutiga qanday nashr qilish kerak: 5 qadam](https://i.howwhatproduce.com/images/010/image-29385-j.webp)
NTP vaqt tamg'asi yordamida ESP32 ma'lumotlarini IoT Cloud -da qanday chop etish kerak: Ko'pgina ilovalarda foydalanuvchilar o'z ma'lumotlarini yuklanish vaqtida AskSensors IoT bulutiga yuboriladigan qiymatlarning mahalliy vaqt tamg'asi bilan birga yuborishlari kerak. Vaqt tamg'asi formati - UNIX davrining vaqti: Yanvadan beri o'tgan millisekundlar soni
Arduino loyihasi uchun yuk o'lchagichidan osilgan vazn sensori oling: 4 qadam
![Arduino loyihasi uchun yuk o'lchagichidan osilgan vazn sensori oling: 4 qadam Arduino loyihasi uchun yuk o'lchagichidan osilgan vazn sensori oling: 4 qadam](https://i.howwhatproduce.com/images/003/image-6742-67-j.webp)
Arduino loyihasi uchun yuk o'lchagichidan osilgan vazn o'lchagichini oling: Ushbu qo'llanmada men sizga Arduino loyihasi uchun osilgan vazn o'lchagichini arzon, keng tarqalgan bagaj/baliq ovlagichidan va tez -tez ishlatiladigan HX711 ADC modulidan qanday olishni ko'rsataman. Ma'lumot: Loyiha uchun menga ma'lum bir vaznni o'lchash uchun sensor kerak edi
EISE4 loyihasi: Ovozli modulyatsiyani qanday amalga oshirishni bilib oling: 6 qadam (rasmlar bilan)
![EISE4 loyihasi: Ovozli modulyatsiyani qanday amalga oshirishni bilib oling: 6 qadam (rasmlar bilan) EISE4 loyihasi: Ovozli modulyatsiyani qanday amalga oshirishni bilib oling: 6 qadam (rasmlar bilan)](https://i.howwhatproduce.com/images/003/image-7854-31-j.webp)
EISE4 loyihasi: Ovozli modulyatsiya qurilmasini qanday amalga oshirishni bilib oling: Ushbu yo'riqnomada siz ovoz effektlarini qo'shadigan qurilmani (kechikish va aks -sado) amalga oshirish uchun har xil bosqichlardan o'tasiz. Bu qurilma asosan mikrofon, DE0 Nano SoC platasi, karnay, ekran va infraqizil sensordan iborat. D