Përmbajtje:

(Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: 5 hapa
(Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: 5 hapa

Video: (Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: 5 hapa

Video: (Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: 5 hapa
Video: Глобальные тренды 2020 — от Agile до IoT / Java Tech Talk 2024, Nëntor
Anonim
(Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API
(Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API

Në këtë udhëzues ne do të ndërtojmë një projekt të thjeshtë IOT në të cilin do të marrim të dhënat e motit të qytetit tonë nga openweather.com/api dhe do t'i shfaqim duke përdorur softuerin e përpunimit.

Furnizimet:

  1. Arduino
  2. ESP8266 ose ndonjë modul tjetër esp
  3. Arduino IDE
  4. Softueri i përpunimit
  5. Breadboard
  6. Jumperwires Mashkull për Mashkull dhe Mashkull për Femër

Hapi 1: Merrni çelësin API dhe URL nga Openweather.org

Merrni çelësin API dhe URL nga Openweather.org
Merrni çelësin API dhe URL nga Openweather.org
Merrni çelësin dhe URL -në API nga Openweather.org
Merrni çelësin dhe URL -në API nga Openweather.org
Merrni çelësin API dhe URL nga Openweather.org
Merrni çelësin API dhe URL nga Openweather.org
  1. Krijoni llogari në https://openweathermap.org (Imazhi 1)
  2. Pasi të identifikoheni, shkoni te çelësat API dhe do të merrni çelësin API siç tregohet në imazh. (Imazhi 2)
  3. Kopjoni çelësin API dhe ruajeni në një skedar shënimesh. (Imazhi 3)
  4. Shkoni te opsioni API (Figura 4)
  5. Shkoni te opsioni i API doc siç tregohet në imazh (Imazhi 5)
  6. Kopjoni url -në nga ajo e treguar dhe ruajeni në një skedar shënimesh (Imazhi 6)

Hapi 2: Diagrami i lidhjes

Diagrami i lidhjes
Diagrami i lidhjes

Hapi 3: Kodi Arduino

Para se të kopjoni këtë kod në Arduino sigurohuni që keni shkarkuar tabelën ESP8266 në arduino ide duke përdorur bordet menaxher.

#përfshi

#include #include #include const char* ssid = "SSID -i juaj"; const char* fjalëkalimi = "Fjalëkalimi juaj SSID"; // Emri i domenit tuaj me shtegun URL ose adresën IP me shteg String openWeatherMapApiKey = "Ngjiteni çelësin tuaj API këtu"; // Zëvendësoni me kodin e vendit tuaj dhe qytetin Qyteti i vargut = "Mumbai"; String countryCode = "IN"; Të dhënat e vargut [16]; // KOHSORI I PARASHYRS ISSHT I NDRYSHM P 10R QURLLIMET E TESTIMIT // Për një aplikim përfundimtar, kontrolloni kufijtë e thirrjeve të API në orë/minutë për të shmangur bllokimin/ndalimin e pa firmosur për një kohë të gjatë LastTime = 0; // Kohëmatësi i vendosur në 10 minuta (600000) // kohëmatësi i gjatë i panënshkruarVonesë = 600000; // Vendosni kohëmatësin në 10 sekonda (10000) kohëmatës të gjatë të panënshkruarVonesë = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.filloni (ssid, fjalëkalim); //Serial.println("Lidhja "); ndërsa (WiFi.status ()! = WL_CONNECTED) {vonesë (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("I lidhur me rrjetin WiFi me Adresën IP:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Kohëmatësi i vendosur në 10 sekonda (variabli i kohëmatësit), do të duhen 10 sekonda para publikimit të leximit të parë."); } void loop () {// Dërgoni një kërkesë HTTP GET nëse ((millis () - lastTime)> timerDelay) {// Kontrolloni statusin e lidhjes WiFi nëse (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + qytet +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & njësi = metrikë "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) mund të përdoret për të marrë llojin e var nëse (JSON.typeof (myObject) == "i papërcaktuar") {//Serial.println("Parsimi i hyrjes dështoi! "); kthim; } // Serial.print ("JSON object ="); // Serial.println (myObject); // Serial.print ("Temperatura:"); // Serial.println (myObject ["kryesore"] ["temp"]); // Serial.print ("Presioni:"); // Serial.println (myObject ["kryesore"] ["presion"]); // Serial.print ("Lagështia:"); // Serial.println (myObject ["kryesore"] ["lagështia"]); // Serial.print ("Shpejtësia e erës:"); // Serial.println (myObject ["era"] ["shpejtësia"]); int temp = myObject ["kryesore"] ["temp"]; pres i gjatë = myObject ["kryesor"] ["presion"]; int i lagësht = myObject ["kryesore"] ["lagështia"]; int era = myObject ["era"] ["shpejtësia"]; Vendi i vargut = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["emri"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); Ikona e vargut = JSON.stringify (myObject ["mot"] [0] ["icon"]); të dhëna [0] = String (temp); të dhëna [1] = "/"; të dhëna [2] = String (pres); të dhëna [3] = "/"; të dhëna [4] = Varg (i lagësht); të dhëna [5] = "/"; të dhëna [6] = Vargu (era); të dhëna [7] = "/"; të dhëna [8] = vend; të dhëna [9] = "/"; të dhënat [10] = qyteti1; të dhëna [11] = "/"; të dhënat [12] = moti; të dhëna [13] = "/"; të dhëna [14] = ikonë; të dhëna [15] = "\ n"; për (int i = 0; i0) {// Serial.print ("Kodi i përgjigjes HTTP:"); // Serial.println (httpResponseCode); ngarkesë = http.getString (); } else {Serial.print ("Kodi i gabimit:"); Serial.println (httpResponseCode); } // Burime falas http.end (); ngarkesa e kthimit; }

Hapi 4: Kodi i përpunimit

Kodi i përpunimit
Kodi i përpunimit
Kodi i përpunimit
Kodi i përpunimit
Kodi i përpunimit
Kodi i përpunimit

Para se të ekzekutoni këtë kod, shkarkoni imazhet e ikonave të dhëna të cilat do të përdoren për të treguar motin. Dhe mbani imazhet dhe kodin në të njëjtën dosje.

përpunimi i importit.serial.*;

Seriali 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 temp; int pres; në lagështirë; int era; Qyteti i vargjeve = ""; Vendi i vargut = ""; Moti i stuhishëm = ""; Ikona e vargut = ""; void setup () {madhësia (500, 500); myPort = Serial i ri (kjo, "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 barazim () {sfond (72, 209, 204); madhësia e tekstit (22); mbush (54, 69, 79); tekst ("Temperatura:", 25, 100); tekst (temp +"° C", 200, 100); tekst ("Presioni:", 25, 150); tekst (pres + "hpa", 200, 150); tekst ("Lagështia:", 25, 200); tekst (i lagësht+" %", 200, 200); tekst ("Era:", 25, 250); tekst (era+"m/s", 200, 250); tekst ("Vendi/Qyteti:", 25, 300); tekst (vendi + "-" + qytet, 200, 300); tekst ("Moti:", 25, 350); tekst (moti, 200, 350); if (icon.përmban ("01d")) {image (img, 380, 15); } tjetër if (icon.përmban ("01n")) {image (img2, 380, 15); } tjetër if (icon.përmban ("02d")) {image (img3, 380, 15); } tjetër if (icon.përmban ("02n")) {image (img4, 380, 15); } tjetër if (icon.përmban ("03d")) {image (img5, 380, 15); } tjetër if (icon.përmban ("03n")) {image (img6, 380, 15); } tjetër if (icon.përmban ("04d")) {image (img7, 380, 15); } tjetër if (icon.përmban ("04n")) {image (img8, 380, 15); } tjetër if (icon.përmban ("09d")) {image (img9, 380, 15); } tjetër if (icon.përmban ("09n")) {image (img10, 380, 15); } tjetër if (icon.përmban ("10d")) {image (img11, 380, 15); } tjetër if (icon.përmban ("10n")) {image (img12, 380, 15); } tjetër if (icon.përmban ("11d")) {image (img13, 380, 15); } tjetër if (icon.përmban ("11n")) {image (img14, 380, 15); } else if (ikona == "13d") {imazhi (img15, 380, 15); } tjetër if (icon.përmban ("13n")) {image (img16, 380, 15); } tjetër if (icon.përmban ("50d")) {image (img17, 380, 15); } tjetër if (icon.përmban ("50n")) {image (img18, 380, 15); }} void serialEvent (Seriali myPort) {if (myPort.available ()> 0) {Të dhënat e vargut = myPort.readStringUntil ('\ n'); nëse (të dhëna! = null) {të dhëna = shkurto (të dhëna); Artikujt e vargut = ndarja (të dhënat, '/'); if (artikujt.gjatësia> 1) {temp = int (artikujt [0]); pres = int (artikujt [1]); i lagësht = int (artikujt [2]); era = int (artikujt [3]); qyteti = artikujt [4].zëvendësimi ("\" "," "); vendi = artikujt [5].zëvendësimi (" / "", ""); moti = artikujt [6].zëvendësimi ("\" "," "); ikona = artikujt [7].zëvendësimi (" / "", ""); }}}}

Recommended: