Përmbajtje:
- Hapi 1: Merrni çelësin API dhe URL nga Openweather.org
- Hapi 2: Diagrami i lidhjes
- Hapi 3: Kodi Arduino
- Hapi 4: Kodi i përpunimit
Video: (Projekti IOT) Merrni të dhënat e motit duke përdorur ESP8266 dhe Openweather API: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
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:
- Arduino
- ESP8266 ose ndonjë modul tjetër esp
- Arduino IDE
- Softueri i përpunimit
- Breadboard
- Jumperwires Mashkull për Mashkull dhe Mashkull për Femër
Hapi 1: Merrni çelësin API dhe URL nga Openweather.org
- Krijoni llogari në https://openweathermap.org (Imazhi 1)
- Pasi të identifikoheni, shkoni te çelësat API dhe do të merrni çelësin API siç tregohet në imazh. (Imazhi 2)
- Kopjoni çelësin API dhe ruajeni në një skedar shënimesh. (Imazhi 3)
- Shkoni te opsioni API (Figura 4)
- Shkoni te opsioni i API doc siç tregohet në imazh (Imazhi 5)
- Kopjoni url -në nga ajo e treguar dhe ruajeni në një skedar shënimesh (Imazhi 6)
Hapi 2: 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
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:
Bëni komplote të bukura nga të dhënat e drejtpërdrejta të Arduino (dhe ruani të dhënat në Excel): 3 hapa
Bëni komplote të bukura nga të dhënat e drejtpërdrejta të Arduino (dhe ruani të dhënat në Excel): Të gjithëve na pëlqen të luajmë me funksionin tonë të lotarisë P … në Arduino IDE. Megjithatë, ndërsa mund të jetë e dobishme për aplikacionet bazë, të dhënat fshihen sa më shumë shtohen pikë dhe nuk është veçanërisht e këndshme për sytë. Komploti i Arduino IDE nuk
ESP8266 Nodemcu Monitorimi i Temperaturës Duke Përdorur DHT11 në një Server të Lokale - Merrni temperaturën dhe lagështinë e dhomës në shfletuesin tuaj: 6 hapa
ESP8266 Nodemcu Monitorimi i Temperaturës Duke Përdorur DHT11 në një Server të Lokale | Merrni temperaturën dhe lagështinë e dhomës në shfletuesin tuaj: Përshëndetje djema sot ne do të bëjmë një lagështi & sistemi i monitorimit të temperaturës duke përdorur ESP 8266 NODEMCU & Sensori i temperaturës DHT11. Temperatura dhe lagështia do të merren nga Sensori DHT11 & mund të shihet në një shfletues, cila faqe në internet do të menaxhohet
Të dhënat e motit duke përdorur Google Sheets dhe Google Script: 7 hapa
Të dhënat e motit duke përdorur Google Sheets dhe Google Script: Në këtë Blogtut, ne do të dërgojmë leximet e sensorit SHT25 në fletët e Google duke përdorur Adafruit huzzah ESP8266 i cili ndihmon në dërgimin e të dhënave në internet. Dërgimi i të dhënave në qelizën e fletëve të Google është shumë i dobishëm dhe mënyra themelore që ruan të dhënat në
Regjistroni të dhënat dhe hartoni një grafik në internet duke përdorur NodeMCU, MySQL, PHP dhe Chartjs.org: 4 hapa
Regjistroni të dhënat dhe hartoni një grafik në internet duke përdorur NodeMCU, MySQL, PHP dhe Chartjs.org: Ky udhëzues përshkruan se si mund të përdorim bordin Node MCU për të mbledhur të dhëna nga sensorë të shumtë, t'i dërgojmë këto të dhëna në një skedar PHP të pritur i cili më pas i shton të dhënat një bazë të dhënash MySQL. Të dhënat mund të shihen në internet si një grafik, duke përdorur tabelën.js.A ba
Stacioni i motit Acurite 5 në 1 duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): 5 hapa (me fotografi)
Stacioni i motit Acurite 5 në 1 Duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): Kur kisha blerë stacionin e motit Acurite 5 në 1 doja të isha në gjendje të kontrolloja motin në shtëpinë time ndërsa isha larg. Kur mbërrita në shtëpi dhe e vendosa, kuptova se ose duhej ta kisha ekranin të lidhur me një kompjuter ose të blija shpërndarësin e tyre të zgjuar,