Mündəricat:

(IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin: 5 addım
(IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin: 5 addım

Video: (IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin: 5 addım

Video: (IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin: 5 addım
Video: Home Assistant - подключаем адресную ленту WS2812B через ESP8266 с прошивкой WLED 2024, Iyul
Anonim
(IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin
(IOT Layihəsi) ESP8266 və Openweather API -dən istifadə edərək Hava Məlumatlarını əldə edin

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:

  1. Arduino
  2. ESP8266 və ya hər hansı digər esp modulu
  3. Arduino IDE
  4. Emal proqramı
  5. Çörək lövhəsi
  6. 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

Openweather.org -dan API Açar və URL əldə edin
Openweather.org -dan API Açar və URL əldə edin
Openweather.org -dan API Açar və URL əldə edin
Openweather.org -dan API Açar və URL əldə edin
Openweather.org -dan API Açar və URL əldə edin
Openweather.org -dan API Açar və URL əldə edin
  1. Https://openweathermap.org saytında hesab yaradın (Şəkil 1)
  2. 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)
  3. API açarını kopyalayın və notepad faylında saxlayın. (Şəkil 3)
  4. API seçiminə keçin (Şəkil 4)
  5. Şəkildə göstərildiyi kimi API doc seçiminə keçin (Şəkil 5)
  6. 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ı

Bağlantı diaqramı
Bağlantı diaqramı

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

Kod emal olunur
Kod emal olunur
Kod emal olunur
Kod emal olunur
Kod emal olunur
Kod emal olunur

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ə: