Sisällysluettelo:

(IOT -projekti) Hae säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla: 5 vaihetta
(IOT -projekti) Hae säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla: 5 vaihetta

Video: (IOT -projekti) Hae säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla: 5 vaihetta

Video: (IOT -projekti) Hae säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla: 5 vaihetta
Video: Во время похорон пёс пришёл попрощаться с хозяином. Дальше произошло невероятное! 2024, Heinäkuu
Anonim
(IOT -projekti) Hanki säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla
(IOT -projekti) Hanki säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla

Tässä ohjeessa rakennamme yksinkertaisen IOT -projektin, jossa haemme kaupunkimme säätiedot osoitteesta openweather.com/api ja näytämme ne prosessointiohjelmiston avulla.

Tarvikkeet:

  1. Arduino
  2. ESP8266 tai mikä tahansa muu esp -moduuli
  3. Arduino IDE
  4. Käsittelyohjelmisto
  5. Leipälauta
  6. Jumperwires uros uros ja uros naaras

Vaihe 1: Hanki API -avain ja URL -osoite Openweather.org -sivustolta

Hanki API -avain ja URL -osoite Openweather.org -sivustolta
Hanki API -avain ja URL -osoite Openweather.org -sivustolta
Hanki API -avain ja URL -osoite Openweather.org -sivustolta
Hanki API -avain ja URL -osoite Openweather.org -sivustolta
Hanki API -avain ja URL -osoite Openweather.org -sivustolta
Hanki API -avain ja URL -osoite Openweather.org -sivustolta
  1. Luo tili osoitteessa https://openweathermap.org (Kuva 1)
  2. Kun olet kirjautunut sisään, siirry API -avaimiin ja saat API -avaimen kuvan mukaisesti. (Kuva 2)
  3. Kopioi sovellusliittymäavain ja tallenna se muistilehden tiedostoon. (Kuva 3)
  4. Siirry sovellusliittymävaihtoehtoon (kuva 4)
  5. Siirry API -dokumenttivaihtoehtoon kuvan mukaisesti (kuva 5)
  6. Kopioi URL -osoite kuvasta ja ja tallenna se muistilehtiö tiedostoon (kuva 6)

Vaihe 2: Liitäntäkaavio

Liitäntäkaavio
Liitäntäkaavio

Vaihe 3: Arduino -koodi

Ennen kuin kopioit tämän koodin Arduinoon, varmista, että olet ladannut ESP8266 -kortin arduino ide -sovellukseen Boards managerilla.

#sisältää

#include #include #include const char* ssid = "SSID -tunnuksesi"; const char* password = "Sinun SSID -SALASANASI"; // Verkkotunnuksesi nimi URL -polulla tai IP -osoite polulla String openWeatherMapApiKey = "Liitä API -avaimesi tähän"; // Korvaa maakoodilla ja kaupungilla String city = "Mumbai"; Merkkijono countryCode = "IN"; Merkkijonotiedot [16]; // OLETUSAJASTIN on asetettu 10 sekunniksi testaustarkoituksiin // Lopullisessa sovelluksessa tarkista sovellusliittymän puhelurajat tunnissa/minuutissa, jotta et estäisi/estäisi allekirjoittamaton pitkä lastTime = 0; // Ajastin asetettu 10 minuuttiin (600000) // allekirjoittamaton pitkä ajastinDelay = 600000; // Aseta ajastimeen 10 sekuntia (10000) unsigned long timerDelay = 10000; Jono jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, salasana); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {delay (500); // Serial.print ("."); } // Sarja.println (""); // Serial.print ("Yhdistetty WiFi -verkkoon IP -osoitteella:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Ajastin asetettu 10 sekunniksi (timerDelay -muuttuja), kestää 10 sekuntia ennen kuin ensimmäinen lukema julkaistaan."); } void loop () {// Lähetä HTTP GET -pyyntö, jos ((millis () - lastTime)> timerDelay) {// Tarkista WiFi -yhteyden tila, jos (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. palata; } // Serial.print ("JSON object ="); // Sarja.println (myObject); // Serial.print ("Lämpötila:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Paine:"); // Serial.println (myObject ["main"] ["paine"]); // Serial.print ("Kosteus:"); // Serial.println (myObject ["main"] ["kosteus"]); // Serial.print ("Tuulen nopeus:"); // Serial.println (myObject ["tuuli"] ["nopeus"]); int temp = myObject ["main"] ["temp"]; pitkä pres = myObject ["main"] ["paine"]; int kostea = myObject ["main"] ["kosteus"]; int tuuli = myObject ["tuuli"] ["nopeus"]; Merkkijono maa = JSON.stringify (myObject ["sys"] ["maa"]); Merkkijono kaupunki1 = JSON.stringify (myObject ["name"]); Jousisää = JSON.stringify (myObject ["sää"] [0] ["kuvaus"]); String icon = JSON.stringify (myObject ["sää"] [0] ["kuvake"]); data [0] = Jono (lämpötila); tiedot [1] = "/"; data [2] = Jono (esivalinta); data [3] = "/"; data [4] = Jono (kostea); tiedot [5] = "/"; data [6] = Jono (tuuli); tiedot [7] = "/"; tiedot [8] = maa; tiedot [9] = "/"; data [10] = kaupunki1; tiedot [11] = "/"; data [12] = sää; tiedot [13] = "/"; data [14] = kuvake; tiedot [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP -vastauskoodi:"); // Sarja.println (httpResponseCode); hyötykuorma = http.getString (); } else {Serial.print ("Virhekoodi:"); Serial.println (httpResponseCode); } // Ilmaiset resurssit http.end (); palauttaa hyötykuorman; }

Vaihe 4: Käsittelykoodi

Käsittelykoodi
Käsittelykoodi
Käsittelykoodi
Käsittelykoodi
Käsittelykoodi
Käsittelykoodi

Ennen kuin käytät tätä koodia, lataa annetut kuvakekuvat, joita käytetään sään näyttämiseen. Ja säilytä kuvat ja koodi samassa kansiossa.

tuonti käsittely. sarja.*;

Sarja 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; sisäinen lämpötila; int pres; int kostea; int tuuli; Merkkijono kaupunki = ""; Merkkijono maa = ""; Merkkijono = ""; Merkkijonokuvake = ""; void setup () {koko (500, 500); myPort = uusi sarja (tämä, "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 draw () {tausta (72, 209, 204); textSize (22); täyttö (54, 69, 79); teksti ("Lämpötila:", 25, 100); teksti (lämpötila +"° C", 200, 100); teksti ("Paine:", 25, 150); teksti (pres + "hpa", 200, 150); teksti ("Kosteus:", 25, 200); teksti (kostea+" %", 200, 200); teksti ("Tuuli:", 25, 250); teksti (tuuli+"m/s", 200, 250); text ("Maa/kaupunki:", 25, 300); teksti (maa + "-" + kaupunki, 200, 300); teksti ("Sää:", 25, 350); teksti (sää, 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 (icon == "13d") {image (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 (data! = null) {data = trim (data); Merkkijonokohteet = split (data, '/'); if (items.length> 1) {temp = int (kohteet [0]); pres = int (kohteet [1]); kostea = int (kohteet [2]); tuuli = int (kohteet [3]); kaupunki = kohteet [4]. korvata ("\" "," "); maa = kohteet [5]. korvata (" / "", ""); sää = kohteet [6]. korvata ("\" "," "); kuvake = kohteet [7]. korvata (" / "", ""); }}}}

Suositeltava: