Բովանդակություն:

(IOT նախագիծ) Եղանակի տվյալներ ստացեք ՝ օգտագործելով ESP8266 և Openweather API ՝ 5 քայլ
(IOT նախագիծ) Եղանակի տվյալներ ստացեք ՝ օգտագործելով ESP8266 և Openweather API ՝ 5 քայլ

Video: (IOT նախագիծ) Եղանակի տվյալներ ստացեք ՝ օգտագործելով ESP8266 և Openweather API ՝ 5 քայլ

Video: (IOT նախագիծ) Եղանակի տվյալներ ստացեք ՝ օգտագործելով ESP8266 և Openweather API ՝ 5 քայլ
Video: ESP8266 ESP01 DHT11 ջերմաստիճանի խոնավության ցուցիչի մոդուլի ծրագրավորում | RemoteXY | FLProg 2024, Նոյեմբեր
Anonim
(IOT նախագիծ) Եղանակի տվյալներ ձեռք բերեք ESP8266- ի և Openweather API- ի միջոցով
(IOT նախագիծ) Եղանակի տվյալներ ձեռք բերեք ESP8266- ի և Openweather API- ի միջոցով

Այս ուսանելի ծրագրում մենք պատրաստվում ենք կառուցել մի պարզ IOT նախագիծ, որի միջոցով openweather.com/api- ից կբերենք մեր քաղաքի եղանակի տվյալները և կցուցադրենք դրանք Processing ծրագրաշարի միջոցով:

Պարագաներ:

  1. Արդուինո
  2. ESP8266 կամ ցանկացած այլ esp մոդուլ
  3. Arduino IDE
  4. Մշակման ծրագրակազմ
  5. Breadboard
  6. Jumperwires Male to Male եւ Male to Female

Քայլ 1: Ստացեք 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- ը Openweather.org- ից
  1. Ստեղծեք հաշիվ https://openweathermap.org կայքում (Պատկեր 1)
  2. Մուտք գործելուց հետո գնացեք API ստեղներ և կստանաք API բանալին, ինչպես ցույց է տրված նկարում: (Պատկեր 2)
  3. Պատճենեք API ստեղնը և պահեք այն նոթատետրում: (Պատկեր 3)
  4. Գնալ դեպի API տարբերակ (Պատկեր 4)
  5. Գնացեք API փաստաթղթի տարբերակ, ինչպես ցույց է տրված նկարում (Պատկեր 5)
  6. Պատճենեք url- ը և ցուցադրվածից և պահեք այն նոթատետրում (Պատկեր 6)

Քայլ 2: Միացման դիագրամ

Միացման դիագրամ
Միացման դիագրամ

Քայլ 3: Arduino կոդ

Նախքան այս կոդը Arduino- ում պատճենելը, համոզվեք, որ ներբեռնել եք ESP8266 տախտակը arduino ide- ում ՝ օգտագործելով Տախտակների կառավարիչը:

#ներառում

#include #include #include const char* ssid = "Your SSID"; const char* password = "Your SSID PASSWORD"; // Your Domain name with URL path or IP address with path String openWeatherMapApiKey = "Տեղադրեք ձեր API բանալին այստեղ"; // Փոխարինեք ձեր երկրի ծածկագրով և քաղաքով Լարային քաղաք = "Մումբայ"; Լարային երկրի Կոդ = "IN"; Լարային տվյալներ [16]; // EFԱՄԱՆԱԿԱՎՈՐ IMԱՄԱՆԱԿԸ ՏԵՍԱԿԱԳՈՐՎՈ 10Մ Է 10 ՎԱՅՔ // Վերջնական հայտի համար ժամում/րոպեում ստուգեք API- ի զանգերի սահմանաչափերը `երկար արգելափակված/արգելված չստորագրված երկար ժամանակ = 0; // erամաչափը սահմանվել է 10 րոպե (600000) // անստորագիր երկարաժամկետՀետաձգում = 600000; // timամաչափը սահմանել 10 վայրկյան (10000) անստորագիր երկարաժամկետՀետաձգում = 10000; Լարային jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, գաղտնաբառ); //Serial.println("Connecting)); while (WiFi.status ()! = WL_CONNECTED) {ուշացում (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Միացված է WiFi ցանցին IP հասցեով"); // Serial.println (WiFi.localIP ()); // // Serial.println («erամաչափը սահմանվել է 10 վայրկյան (timerDelay փոփոխական), առաջին ընթերցումը հրապարակելուց առաջ կտևի 10 վայրկյան»); } void loop () {// Ուղարկեք HTTP GET հարցում, եթե ((millis () - lastTime)> timerDelay) {// Ստուգեք WiFi կապի կարգավիճակը, եթե (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + քաղաք +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & units = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) - ը կարող է օգտագործվել var- ի տեսակը ստանալու համար, եթե (JSON.typeof (myObject) == "undefined") {//Serial.println("Arming input sparing! "); վերադարձ; } // Serial.print ("JSON օբյեկտ ="); // Serial.println (myObject); // Serial.print ("Temերմաստիճանը."); // Serial.println (myObject ["հիմնական"] ["temp"]); // Serial.print ("ureնշում."); // Serial.println (myObject ["հիմնական"] ["ճնշում"]); // Serial.print ("Խոնավություն."); // Serial.println (myObject ["հիմնական"] ["խոնավություն"]); // Serial.print ("Քամու արագություն."); // Serial.println (myObject ["քամի"] ["արագություն"]); int temp = myObject ["հիմնական"] ["temp"]; երկար pres = myObject ["հիմնական"] ["ճնշում"]; int խոնավ = myObject ["հիմնական"] ["խոնավություն"]; int քամի = myObject ["քամի"] ["արագություն"]; Լարային երկիր = JSON.stringify (myObject ["sys"] ["country"]); Լարային քաղաք 1 = JSON.stringify (myObject ["name"]); Լարային եղանակ = JSON.stringify (myObject ["weather"] [0] ["description"]); Լարերի պատկերակ = JSON.stringify (myObject ["weather"] [0] ["icon"]); տվյալներ [0] = Լար (ջերմաստիճան); տվյալներ [1] = "/"; տվյալներ [2] = Լարային (նախնական); տվյալներ [3] = "/"; տվյալներ [4] = Լարային (խոնավ); տվյալներ [5] = "/"; տվյալներ [6] = Լար (քամի); տվյալներ [7] = "/"; տվյալներ [8] = երկիր; տվյալներ [9] = "/"; տվյալներ [10] = քաղաք 1; տվյալներ [11] = "/"; տվյալներ [12] = եղանակ; տվյալներ [13] = "/"; տվյալներ [14] = պատկերակ; տվյալներ [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP Response code:"); // Serial.println (httpResponseCode); բեռնվածություն = http.getString (); } else {Serial.print ("Սխալի կոդը."); Serial.println (httpResponseCode); } // Անվճար ռեսուրսներ http.end (); վերադարձ բեռնվածություն; }

Քայլ 4: Մշակման ծածկագիր

Մշակման ծածկագիր
Մշակման ծածկագիր
Մշակման ծածկագիր
Մշակման ծածկագիր
Մշակման ծածկագիր
Մշակման ծածկագիր

Այս կոդը գործարկելուց առաջ ներբեռնեք տվյալ պատկերակի պատկերները, որոնք կօգտագործվեն եղանակը ցույց տալու համար: Եվ պահեք պատկերներն ու ծածկագիրը նույն թղթապանակում:

ներմուծման մշակում. սերիա:*;

Սերիական myPort; PImage img; PImage img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImage img10; PImage img11; PImage img12; PImage img13; PImage img14; PImage img15; PImage img16; PImage img17; PImage img18; int ջերմաստիճան; int pres; int խոնավ; int քամի; Լարային քաղաք = ""; Լարային երկիր = ""; Լարային եղանակ = ""; Լարի պատկերակ = ""; void setup () {չափը (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); տեքստ («Temերմաստիճանը.», 25, 100); տեքստ (ջերմաստիճան +"° C", 200, 100); տեքստ («ureնշում.», 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); } 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); } else if (պատկերակ == "13d") {պատկեր (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); Լարային տարրեր = պառակտում (տվյալներ, '/'); if (items.length> 1) {temp = int (տարրեր [0]); pres = int (կետեր [1]); խոնավ = int (նյութեր [2]); քամին = int (նյութեր [3]); քաղաք = տարրեր [4].փոխարինել ("\" "," "); երկիր = իրեր [5]. փոխարինել (" / "", ""); եղանակ = տարրեր [6].փոխարինել ("\" "," "); պատկերակ = իրեր [7]. փոխարինել (" / "", ""); }}}}

Խորհուրդ ենք տալիս: