Sisukord:

(IOT projekt) Ilmateabe hankimine ESP8266 ja Openweather API abil: 5 sammu
(IOT projekt) Ilmateabe hankimine ESP8266 ja Openweather API abil: 5 sammu

Video: (IOT projekt) Ilmateabe hankimine ESP8266 ja Openweather API abil: 5 sammu

Video: (IOT projekt) Ilmateabe hankimine ESP8266 ja Openweather API abil: 5 sammu
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, November
Anonim
(IOT projekt) Hankige ilmaandmeid ESP8266 ja Openweather API abil
(IOT projekt) Hankige ilmaandmeid ESP8266 ja Openweather API abil

Selles juhendis ehitame üles lihtsa IOT -projekti, mille käigus toome meie linna ilmaandmed saidilt openweather.com/api ja kuvame need töötlemistarkvara abil.

Tarvikud:

  1. Arduino
  2. ESP8266 või mõni muu esp -moodul
  3. Arduino IDE
  4. Töötlustarkvara
  5. Leivalaud
  6. Jumperwires meestele ja meestele naistele

Samm: hankige API -võti ja URL saidilt Openweather.org

Hankige API võti ja URL saidilt Openweather.org
Hankige API võti ja URL saidilt Openweather.org
Hankige API võti ja URL saidilt Openweather.org
Hankige API võti ja URL saidilt Openweather.org
Hankige API võti ja URL saidilt Openweather.org
Hankige API võti ja URL saidilt Openweather.org
  1. Looge konto saidil https://openweathermap.org (pilt 1)
  2. Pärast sisselogimist avage API võtmed ja saate API võtme, nagu on näidatud pildil. (Pilt 2)
  3. Kopeerige API võti ja salvestage see märkmiku faili. (Pilt 3)
  4. Avage API valik (pilt 4)
  5. Minge API dokumendi valikule, nagu on näidatud pildil (pilt 5)
  6. Kopeerige URL näidatud ja ja salvestage see märkmiku faili (joonis 6)

Samm: ühendusskeem

Ühendusskeem
Ühendusskeem

Samm: Arduino kood

Enne selle koodi Arduinosse kopeerimist veenduge, et olete tahvlite halduri abil ESP8266 tahvli arduino ide alla laadinud.

#kaasake

#include #include #include const char* ssid = "Sinu SSID"; const char* password = "Sinu SSID PASSWORD"; // Sinu domeeninimi URL -i teega või IP -aadress koos teega String openWeatherMapApiKey = "Kleebi oma API võti siia"; // Asenda oma riigi koodi ja linnaga String city = "Mumbai"; String countryCode = "IN"; Stringiandmed [16]; // DEFAULT TIMER on seadistatud 10 sekundiks testimiseesmärkide jaoks // Viimase rakenduse puhul kontrollige API kõne piiranguid tunnis/minutis, et vältida blokeeritud/keelatud allkirjata long lastTime = 0; // Taimer on seatud 10 minutile (600000) // allkirjata pikk taimerDelay = 600000; // Määra taimer 10 sekundiks (10000) signatuurita taimerDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, parool); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {delay (500); // Seeria.print ("."); } // Serial.println (""); // Serial.print ("Ühendatud WiFi -võrku IP -aadressiga:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Taimer on seatud 10 sekundile (muutuja timerDelay), esimese lugemise avaldamiseks kulub 10 sekundit."); } void loop () {// Saatke HTTP GET -päring, kui ((millis () - lastTime)> timerDelay) {// Kontrollige WiFi -ühenduse olekut, kui (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + city +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & units = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) saab kasutada var -tüübi saamiseks, kui (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input failed! "); tagasipöördumine; } // Serial.print ("JSON objekt ="); // Serial.println (myObject); // Serial.print ("Temperatuur:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Rõhk:"); // Serial.println (myObject ["main"] ["surve"]); // Serial.print ("Niiskus:"); // Serial.println (myObject ["main"] ["niiskus"]); // Serial.print ("Tuule kiirus:"); // Serial.println (myObject ["tuul"] ["kiirus"]); int temp = myObject ["peamine"] ["temp"]; pikk pres = myObject ["main"] ["surve"]; int niiske = myObject ["peamine"] ["niiskus"]; int tuul = myObject ["tuul"] ["kiirus"]; String riik = JSON.stringify (myObject ["sys"] ["riik"]); String city1 = JSON.stringify (myObject ["nimi"]); String ilm = JSON.stringify (myObject ["weather"] [0] ["description"]); String icon = JSON.stringify (myObject ["ilm"] [0] ["ikoon"]); andmed [0] = string (temp); andmed [1] = "/"; andmed [2] = string (eel); andmed [3] = "/"; andmed [4] = string (niiske); andmed [5] = "/"; andmed [6] = string (tuul); andmed [7] = "/"; andmed [8] = riik; andmed [9] = "/"; andmed [10] = linn1; andmed [11] = "/"; andmed [12] = ilm; andmed [13] = "/"; andmed [14] = ikoon; andmed [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP vastuse kood:"); // Serial.println (httpResponseCode); kasulik koormus = http.getString (); } else {Serial.print ("Veakood:"); Serial.println (httpResponseCode); } // Tasuta ressursid http.end (); tagastada kasulik koormus; }

Samm: koodi töötlemine

Töötlemise kood
Töötlemise kood
Töötlemise kood
Töötlemise kood
Töötlemise kood
Töötlemise kood

Enne selle koodi käivitamist laadige alla antud ikoonipildid, mida kasutatakse ilma kuvamiseks. Ja hoidke pilte ja koodi samas kaustas.

impordi töötlemine.seriaalne.*;

Seeria 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; int niiske; int tuul; String linn = ""; String riik = ""; String ilm = ""; Stringi ikoon = ""; void setup () {suurus (500, 500); myPort = uus seeria (see, "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"); } tühine viik () {taust (72, 209, 204); textSize (22); täitke (54, 69, 79); tekst ("Temperatuur:", 25, 100); tekst (temp +"° C", 200, 100); tekst ("Rõhk:", 25, 150); tekst (pres + "hpa", 200, 150); tekst ("Niiskus:", 25, 200); tekst (niiske+" %", 200, 200); tekst ("Tuul:", 25, 250); tekst (tuul+"m/s", 200, 250); tekst ("Riik/linn:", 25, 300); tekst (riik + "-" + linn, 200, 300); tekst ("Ilm:", 25, 350); tekst (ilm, 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 (ikoon == "13d") {pilt (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 (andmed! = null) {andmed = trim (andmed); Stringüksused = split (andmed, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (üksused [1]); niiske = int (kirjed [2]); tuul = int (üksused [3]); linn = üksused [4].asend ("\" "," "); riik = üksused [5].asend (" / "", ""); ilm = esemed [6].asend ("\" "," "); ikoon = esemed [7].asend (" / "", ""); }}}}

Soovitan: