Mündəricat:
- Addım 1: Openweather.org -dan API Açarı və URL əldə edin
- Addım 2: Bağlantı Şeması
- Addım 3: Arduino Kodu
- Addım 4: Kodun işlənməsi
Video: (IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Bu təlimatda şəhərimizin hava məlumatlarını openweather.com/api saytından əldə etmək və Qenerasiya proqramından istifadə edərək göstərmək üçün sadə bir IOT layihəsi hazırlayacağıq.
Təchizat:
- Arduino
- ESP8266 və ya hər hansı digər esp modulu
- Arduino IDE
- Emal proqramı
- Çörək lövhəsi
- Jumper telləri kişidən kişiyə və kişidən qadına
Addım 1: Openweather.org -dan API Açarı və URL əldə edin
- Https://openweathermap.org saytında hesab yaradın (Şəkil 1)
- Giriş etdikdən sonra API düymələrinə keçin və şəkildə göstərildiyi kimi API açarını əldə edəcəksiniz. (Şəkil 2)
- API açarını kopyalayın və notepad faylında saxlayın. (Şəkil 3)
- API seçiminə keçin (Şəkil 4)
- Şəkildə göstərildiyi kimi API doc seçiminə keçin (Şəkil 5)
- Url'yi göstəriləndən və göstəriləndən kopyalayın və notepad faylında saxlayın (Şəkil 6)
Addım 2: Bağlantı Şeması
Addım 3: Arduino Kodu
Bu kodu Arduinoya kopyalamadan əvvəl, Boards menecerindən istifadə edərək ESP8266 lövhəsini arduino ide -yə yüklədiyinizə əmin olun.
#daxil edin
#include #include #include const char* ssid = "Sizin SSID"; const char* password = "SSID ŞİFRİNİZ"; // URL yolu və ya IP ünvanı olan Domain adınız String openWeatherMapApiKey = "API açarınızı bura yapışdırın"; // Ölkənizin kodu və şəhəri ilə əvəz edin String city = "Mumbai"; String countryCode = "IN"; String məlumatları [16]; // VARSAYILAN ZAMANLAYICI MƏQSƏDLƏRİN TƏSDİF EDİLMƏSİ ÜÇÜN 10 SƏNİYYƏDƏ QURULMUŞDUR // Son tətbiq üçün, bloklanmaması/imzalanmaması üçün uzun müddət ərzində API zəng limitlərini yoxlayın/imzalanmamış uzun lastTime = 0; // Taymer 10 dəqiqəyə təyin edildi (600000) // işarəsiz uzun taymerDelay = 600000; // Taymeri 10 saniyəyə təyin edin (10000) işarəsiz uzun timerDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, parol); //Serial.println("Bağlanır "); while (WiFi.status ()! = WL_CONNECTED) {gecikmə (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("IP ünvanı ilə WiFi şəbəkəsinə qoşuldu:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Taymer 10 saniyəyə təyin edilib (timerDelay dəyişən), ilk oxunuşu dərc etmədən 10 saniyə çəkəcək."); } void loop () {// ((millis () - lastTime)> timerDelay) əgər HTTP GET sorğusu göndərin {// WiFi bağlantısı vəziyyətini yoxlayın (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + şəhər +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & ədəd = metrik "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) var tipini əldə etmək üçün istifadə edilə bilər, əgər (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input failed! "); qayıtmaq; } // Serial.print ("JSON obyekti ="); // Serial.println (myObject); // Serial.print ("Temperatur:"); // Serial.println (myObject ["əsas"] ["temp"]); // Serial.print ("Təzyiq:"); // Serial.println (myObject ["əsas"] ["təzyiq"]); // Serial.print ("Rütubət:"); // Serial.println (myObject ["əsas"] ["rütubət"]); // Serial.print ("Külək Sürəti:"); // Serial.println (myObject ["külək"] ["sürət"]); int temp = myObject ["əsas"] ["temp"]; uzun pres = myObject ["əsas"] ["təzyiq"]; int humid = myObject ["əsas"] ["rütubət"]; int külək = myObject ["külək"] ["sürət"]; String ölkəsi = JSON.stringify (myObject ["sys"] ["ölkə"]); String şəhər1 = JSON.stringify (myObject ["ad"]); String hava = JSON.stringify (myObject ["hava"] [0] ["təsvir"]); String simgesi = JSON.stringify (myObject ["hava"] [0] ["simge"]); data [0] = String (temp); məlumatlar [1] = "/"; data [2] = String (pres); məlumatlar [3] = "/"; data [4] = String (nəmli); məlumatlar [5] = "/"; data [6] = Simli (külək); məlumatlar [7] = "/"; data [8] = ölkə; məlumatlar [9] = "/"; məlumatlar [10] = şəhər1; məlumatlar [11] = "/"; data [12] = hava; məlumatlar [13] = "/"; data [14] = simge; məlumatlar [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP Cavab kodu:"); // Serial.println (httpResponseCode); yük = http.getString (); } başqa {Serial.print ("Hata kodu:"); Serial.println (httpResponseCode); } // Pulsuz mənbələr http.end (); geri qaytarma yükü; }
Addım 4: Kodun işlənməsi
Bu kodu işə salmadan əvvəl havanı göstərmək üçün istifadə olunacaq verilən şəkilləri yükləyin. Və şəkilləri və kodu eyni qovluqda saxlayın.
idxal emalı.serial.*;
Serial myPort; PI görüntü img; PI görüntü img2; PI görüntü img3; PI görüntü img4; PI görüntü img5; PI görüntü img6; PI görüntü img7; PI görüntü img8; Şəkil img9; PI görüntü img10; PI görüntü img11; PI görüntü img12; PI görüntü img13; Şəkil img14; Şəkil img15; PI görüntü img16; Şəkil img17; Şəkil img18; int tempi; int pres; nəmli; külək; String şəhəri = ""; String ölkə = ""; String hava = ""; Sətir nişanı = ""; void setup () {size (500, 500); myPort = yeni Serial (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); doldurun (54, 69, 79); mətn ("Temperatur:", 25, 100); mətn (temp +"° C", 200, 100); mətn ("Təzyiq:", 25, 150); mətn (pres + "hpa", 200, 150); mətn ("Rütubət:", 25, 200); mətn (nəm+" %", 200, 200); mətn ("Külək:", 25, 250); mətn (külək+"m/s", 200, 250); mətn ("Ölkə/Şəhər:", 25, 300); mətn (ölkə + "-" + şəhər, 200, 300); mətn ("Hava:", 25, 350); mətn (hava, 200, 350); if (icon.contains ("01d")) {image (img, 380, 15); } else if (icon.contains ("01n")) {image (img2, 380, 15); } else if (icon.contains ("02d")) {image (img3, 380, 15); } else if (icon.contains ("02n")) {image (img4, 380, 15); } else if (icon.contains ("03d")) {image (img5, 380, 15); } else if (icon.contains ("03n")) {image (img6, 380, 15); } else if (icon.contains ("04d")) {image (img7, 380, 15); } else if (icon.contains ("04n")) {image (img8, 380, 15); } else if (icon.contains ("09d")) {image (img9, 380, 15); } else if (icon.contains ("09n")) {image (img10, 380, 15); } else if (icon.contains ("10d")) {image (img11, 380, 15); } else if (icon.contains ("10n")) {image (img12, 380, 15); } else if (icon.contains ("11d")) {image (img13, 380, 15); } else if (icon.contains ("11n")) {image (img14, 380, 15); } başqa if (icon == "13d") {image (img15, 380, 15); } else if (icon.contains ("13n")) {image (img16, 380, 15); } else if (icon.contains ("50d")) {image (img17, 380, 15); } else 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 maddələri = split (data, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (maddələr [1]); humid = int (maddələr [2]); külək = int (maddələr [3]); şəhər = maddələr [4].yeri ("\" "," "); ölkə = maddələr [5].yeri (" / "", ""); hava = maddələr [6].dəyişmə ("\" "," "); icon = maddələr [7].dəyişmə (" / "", ""); }}}}
Tövsiyə:
ESP8266 Nodemcu Yerli Web Serverdə DHT11 istifadə edərək İstilik Monitorinqi - Brauzerinizdə Otaq İstiliyi və Rütubəti əldə edin: 6 addım
ESP8266 Nodemcu Yerli Web Serverdə DHT11 istifadə edərək İstilik Monitorinqi | Brauzerinizdə Otaq İstiliyi və Rütubət əldə edin: Salam uşaqlar bu gün nəmləndirəcəyik & ESP 8266 NODEMCU & DHT11 temperatur sensoru. İstilik və rütubət DHT11 Sensor & hansı veb səhifənin idarə olunacağını bir brauzerdə görmək olar
ESP8266 istifadə edərək İnternetdən vaxt əldə etmək - ESP8266 Nodemcu ilə NTP Saat Layihəsi: 5 addım
ESP8266 istifadə edərək İnternetdən vaxt əldə etmək | ESP8266 Nodemcu ilə NTP Saat Layihəsi: Bu təlimatda Arduino IDE ilə ESP8266/nodemcu istifadə edərək necə vaxt qazanacağımızı görəcəyik. Vaxt əldə etmək, oxunuşlarınızı zaman damgası ilə qeyd etmək üçün xüsusilə faydalıdır. ESP8266 layihənizin İnternetə çıxışı varsa, Network T istifadə edərək vaxt qazana bilərsiniz
Visuino - NodeMCU istifadə edərək İnternet NIST Serverindən dəqiq vaxt əldə edin: 8 addım
Visuino - İnternet NIST Serverindən NodeMCU istifadə edərək dəqiq vaxt əldə edin: Bu təlimatda NIST Server -dən Lcd -də canlı internet vaxtını göstərmək üçün NodeMCU Mini, OLED Lcd və Visuinodan istifadə edəcəyik. Bir nümayiş videosuna baxın. İlhamın krediti youtube istifadəçisi " Ciprian Balalau "
Raspberry Pi və Arduino UNO -dan istifadə edərək DHT11 məlumatlarını tərtib edin: 7 addım
DHT11 Məlumatlarını Raspberry Pi və Arduino UNO -dan istifadə edərək tərtib edin: Bu təlimat, Arduino Uno və Raspberry Pi istifadə edərək DHT11 temperatur sensoru məlumatlarını necə qurduğumu izah edir. Bu vəziyyətdə sensor Arduino Uno ilə, Arduino Uno isə Raspberry Pi ilə ardıcıl olaraq bağlanır. Raspberry Pi Side -də matplotli
Arduino Layihəsi: Nodejs + SQL Veritabanı və Veb Saytı istifadə edərək İnternet üzərindən Elektronikaya Nəzarət Edin .: 6 Addım
Arduino Layihəsi: Nodejs + SQL Veritabanı və Veb Saytı istifadə edərək İnternet üzərindən Elektronikaya Nəzarət .: Layihə Müəllifi: Mahmed.tech Tarix: 14 İyul 2017 Çətinlik Səviyyə: Bəzi proqramlaşdırma biliklərinə sahib olan. Avadanlıq Tələbi: - Arduino Uno, Nano, Mega (serial bağlantısı olan MCU -nun çoxunun işləyəcəyini düşünürəm) - Tək LED & Cari məhdudlaşdıran res