Talaan ng mga Nilalaman:
- Hakbang 1: Kumuha ng API Key at URL Mula sa Openweather.org
- Hakbang 2: Diagram ng Koneksyon
- Hakbang 3: Arduino Code
- Hakbang 4: Code ng Pagproseso
Video: (IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API: 5 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
Sa pagtuturo na ito magtatayo kami ng isang simpleng proyekto ng IOT kung saan kukunin ang data ng panahon ng aming lungsod mula sa openweather.com/api at ipakita ito gamit ang Pagproseso ng software.
Mga Pantustos:
- Arduino
- ESP8266 o anumang iba pang module ng esp
- Arduino IDE
- Pagproseso ng software
- Breadboard
- Jumperwires Lalaki hanggang Lalaki at Lalaki sa Babae
Hakbang 1: Kumuha ng API Key at URL Mula sa Openweather.org
- Lumikha ng account sa https://openweathermap.org (Larawan 1)
- Pagkatapos mong mag-login pumunta sa mga API key at makukuha mo ang API key tulad ng ipinakita sa imahe. (Larawan 2)
- Kopyahin ang API key at i-save ito sa isang notepad file. (Larawan 3)
- Pumunta sa pagpipilian sa API (Larawan 4)
- Pumunta sa opsyon sa API doc tulad ng ipinapakita sa imahe (Larawan 5)
- Kopyahin ang url mula sa at ipinakita at i-save ito sa isang notepad file (Larawan 6)
Hakbang 2: Diagram ng Koneksyon
Hakbang 3: Arduino Code
Bago kopyahin ang code na ito sa Arduino tiyaking na-download mo ang board ng ESP8266 sa arduino ide gamit ang Boards manager.
# isama
#include #include #include const char * ssid = "Iyong SSID"; const char * password = "Iyong SSID PASSWORD"; // Ang iyong pangalan ng Domain na may path ng URL o IP address na may path na String openWeatherMapApiKey = "I-paste ang iyong API key dito"; // Palitan ng iyong country code at city String city = "Mumbai"; String countryCode = "IN"; String data [16]; // THE DEFAULT TIMER IS SET TO 10 SECONDS FOR TESTING PURPOSES // Para sa isang pangwakas na aplikasyon, suriin ang mga limitasyon sa tawag sa API bawat oras / minuto upang maiwasan ang ma-block / pinagbawalan na hindi pinirmahan matagal na lastTime = 0; // Timer set to 10 minutes (600000) // unsigned long timerDelay = 600000; // Set timer to 10 segundo (10000) unsigned long timerDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, password); //Serial.println("Connect "); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Nakakonekta sa WiFi network na may IP Address:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Itakda ang timer sa 10 segundo (timerDelay variable), tatagal ng 10 segundo bago mai-publish ang unang pagbasa."); } void loop () {// Magpadala ng isang kahilingan sa HTTP GET kung ((millis () - lastTime)> timerDelay) {// Suriin ang katayuan ng koneksyon sa WiFi kung (WiFi.status () == WL_CONNected) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= "+ city +", "+ countryCode +" & APPID = "+" d5b56fd07988143ae141503ed9d81742 "+" & unit = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) ay maaaring magamit upang makuha ang uri ng var kung (JSON.typeof (myObject) == "hindi natukoy") {//Serial.println(" Nabigo ang pag-input ng pag-input! "); bumalik; } // Serial.print ("JSON object ="); // Serial.println (myObject); // Serial.print ("Temperatura:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Pressure:"); // Serial.println (myObject ["main"] ["pressure"]); // Serial.print ("Humidity:"); // Serial.println (myObject ["main"] ["halumigmig"]); // Serial.print ("Bilis ng Hangin:"); // Serial.println (myObject ["hangin"] ["bilis"]); int temp = myObject ["main"] ["temp"]; mahabang pres = myObject ["main"] ["pressure"]; int mahal = myObject ["pangunahing"] ["kahalumigmigan"]; int wind = myObject ["hangin"] ["bilis"]; String country = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["pangalan"]); String panahon = JSON.stringify (myObject ["panahon"] [0] ["paglalarawan"]); String icon = JSON.stringify (myObject ["panahon"] [0] ["icon"]); data [0] = String (temp); data [1] = "/"; data [2] = String (pres); data [3] = "/"; data [4] = String (mahalumigmig); data [5] = "/"; data [6] = String (hangin); data [7] = "/"; data [8] = bansa; data [9] = "/"; data [10] = city1; data [11] = "/"; data [12] = panahon; data [13] = "/"; data [14] = icon; data [15] = "\ n"; para sa (int i = 0; i0) {// Serial.print ("HTTP Response code:"); // Serial.println (httpResponseCode); payload = http.getString (); } iba pa {Serial.print ("Error code:"); Serial.println (httpResponseCode); } // Libreng mapagkukunan http.end (); ibalik ang kargamento; }
Hakbang 4: Code ng Pagproseso
Bago patakbuhin ang code na ito i-download ang mga ibinigay na mga imahe ng icon na magagamit upang ipakita ang panahon. At panatilihin ang mga imahe at code sa parehong folder.
pagproseso ng pag-import.serial. *;
Serial myPort; Img ng larawan; 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; int mahalumigmig; int hangin; String city = ""; String country = ""; String panahon = ""; String icon = ""; walang bisa ang pag-setup () {laki (500, 500); myPort = bagong Serial (ito, "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"); } walang bisa na pagguhit () {background (72, 209, 204); textSize (22); punan (54, 69, 79); teksto ("Temperatura:", 25, 100); teksto (temp + "° C", 200, 100); teksto ("Presyon:", 25, 150); teksto (pres + "hpa", 200, 150); teksto ("Humidity:", 25, 200); teksto (mahalumigmig + "%", 200, 200); teksto ("Hangin:", 25, 250); teksto (hangin + "m / s", 200, 250); teksto ("Bansa / Lungsod:", 25, 300); teksto (bansa + "-" + lungsod, 200, 300); teksto ("Panahon:", 25, 350); teksto (panahon, 200, 350); kung (icon.contains ("01d")) {imahe (img, 380, 15); } iba pa kung (icon.contains ("01n")) {imahe (img2, 380, 15); } iba pa kung (icon.contains ("02d")) {imahe (img3, 380, 15); } iba pa kung (icon.contains ("02n")) {imahe (img4, 380, 15); } iba pa kung (icon.contains ("03d")) {imahe (img5, 380, 15); } iba pa kung (icon.contains ("03n")) {imahe (img6, 380, 15); } iba pa kung (icon.contains ("04d")) {imahe (img7, 380, 15); } iba pa kung (icon.contains ("04n")) {imahe (img8, 380, 15); } iba pa kung (icon.contains ("09d")) {imahe (img9, 380, 15); } iba pa kung (icon.contains ("09n")) {imahe (img10, 380, 15); } iba pa kung (icon.contains ("10d")) {imahe (img11, 380, 15); } iba pa kung (icon.contains ("10n")) {imahe (img12, 380, 15); } iba pa kung (icon.contains ("11d")) {imahe (img13, 380, 15); } iba pa kung (icon.contains ("11n")) {imahe (img14, 380, 15); } iba pa kung (icon == "13d") {imahe (img15, 380, 15); } iba pa kung (icon.contains ("13n")) {imahe (img16, 380, 15); } iba pa kung (icon.contains ("50d")) {imahe (img17, 380, 15); } iba pa kung (icon.contains ("50n")) {imahe (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); kung (data! = null) {data = trim (data); Mga item sa string |] = split (data, '/'); kung (items.length> 1) {temp = int (item [0]); pres = int (mga item [1]); mahalumigmig = int (mga item [2]); hangin = int (mga item [3]); city = item [4].replace ("\" "," "); country = item [5].replace (" / "", ""); panahon = mga item [6].replace ("\" "," "); icon = item [7].replace (" / "", ""); }}}}
Inirerekumendang:
Kumuha ng Mahusay na Mga Larawan Gamit ang isang IPhone: 9 Mga Hakbang (na may Mga Larawan)
Kumuha ng Mahusay na Larawan Gamit ang isang IPhone: Karamihan sa atin ay nagdadala ng isang smartphone sa amin saanman sa mga araw na ito, kaya mahalagang malaman kung paano gamitin ang iyong smartphone camera upang kumuha ng magagandang larawan! Mayroon lamang akong isang smartphone sa loob ng ilang taon, at gustung-gusto kong magkaroon ng isang disenteng kamera upang idokumento ang mga bagay na '
IoT ESP8266-Batay sa Panahon ng Panahon: 6 Mga Hakbang
IoT ESP8266-Batay sa Panahon ng Panahon: Nais na bumuo ng isang proyekto ng istasyon ng panahon nang hindi gumagamit ng anumang sensor, at makakuha ng mga impormasyong tungkol sa panahon mula sa buong mundo? Gamit ang OpenWeatherMap, magiging isang tunay na gawain ito
Paano Gumawa ng isang Device ng IoT upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: 5 Mga Hakbang
Paano Gumawa ng isang IoT Device upang Makontrol ang Mga Kagamitan at Subaybayan ang Panahon Gamit ang Esp8266: Ang Internet ng mga bagay (IoT) ay ang inter-networking ng mga pisikal na aparato (tinukoy din bilang " mga konektadong aparato " at " mga smart device "), mga gusali, at iba pang mga item - naka-embed sa electronics, software, sensor, actuators, at
Acurite 5 in 1 Weather Station Paggamit ng isang Raspberry Pi at Weewx (iba pang Mga Panahon ng Panahon ay Tugma): 5 Mga Hakbang (na may Mga Larawan)
Acurite 5 in 1 Weather Station Paggamit ng isang Raspberry Pi at Weewx (iba pang Mga Weather Stations ay Tugma): Nang binili ko ang Acurite 5 sa 1 istasyon ng panahon nais kong masuri ang lagay ng panahon sa aking bahay habang wala ako. Nang makauwi ako at naayos ko ito napagtanto ko na dapat kong magkaroon ng display na konektado sa isang computer o bumili ng kanilang smart hub,
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c