Talaan ng mga Nilalaman:

(IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API: 5 Mga Hakbang
(IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API: 5 Mga Hakbang

Video: (IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API: 5 Mga Hakbang

Video: (IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API: 5 Mga Hakbang
Video: ApaITU I2C? ESP01 I2C Hack (Subtittled) 2024, Nobyembre
Anonim
(IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API
(IOT Project) Kumuha ng Data ng Panahon Gamit ang ESP8266 at Openweather API

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:

  1. Arduino
  2. ESP8266 o anumang iba pang module ng esp
  3. Arduino IDE
  4. Pagproseso ng software
  5. Breadboard
  6. Jumperwires Lalaki hanggang Lalaki at Lalaki sa Babae

Hakbang 1: Kumuha ng API Key at URL Mula sa Openweather.org

Kumuha ng API Key at URL Mula sa Openweather.org
Kumuha ng API Key at URL Mula sa Openweather.org
Kumuha ng API Key at URL Mula sa Openweather.org
Kumuha ng API Key at URL Mula sa Openweather.org
Kumuha ng API Key at URL Mula sa Openweather.org
Kumuha ng API Key at URL Mula sa Openweather.org
  1. Lumikha ng account sa https://openweathermap.org (Larawan 1)
  2. Pagkatapos mong mag-login pumunta sa mga API key at makukuha mo ang API key tulad ng ipinakita sa imahe. (Larawan 2)
  3. Kopyahin ang API key at i-save ito sa isang notepad file. (Larawan 3)
  4. Pumunta sa pagpipilian sa API (Larawan 4)
  5. Pumunta sa opsyon sa API doc tulad ng ipinapakita sa imahe (Larawan 5)
  6. Kopyahin ang url mula sa at ipinakita at i-save ito sa isang notepad file (Larawan 6)

Hakbang 2: Diagram ng Koneksyon

Diagram ng Koneksyon
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

Code ng Pagproseso
Code ng Pagproseso
Code ng Pagproseso
Code ng Pagproseso
Code ng Pagproseso
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: