Sisällysluettelo:
- Vaihe 1: Hanki API -avain ja URL -osoite Openweather.org -sivustolta
- Vaihe 2: Liitäntäkaavio
- Vaihe 3: Arduino -koodi
- Vaihe 4: Käsittelykoodi
Video: (IOT -projekti) Hae säätiedot ESP8266: n ja Openweather -sovellusliittymän avulla: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Tässä ohjeessa rakennamme yksinkertaisen IOT -projektin, jossa haemme kaupunkimme säätiedot osoitteesta openweather.com/api ja näytämme ne prosessointiohjelmiston avulla.
Tarvikkeet:
- Arduino
- ESP8266 tai mikä tahansa muu esp -moduuli
- Arduino IDE
- Käsittelyohjelmisto
- Leipälauta
- Jumperwires uros uros ja uros naaras
Vaihe 1: Hanki API -avain ja URL -osoite Openweather.org -sivustolta
- Luo tili osoitteessa https://openweathermap.org (Kuva 1)
- Kun olet kirjautunut sisään, siirry API -avaimiin ja saat API -avaimen kuvan mukaisesti. (Kuva 2)
- Kopioi sovellusliittymäavain ja tallenna se muistilehden tiedostoon. (Kuva 3)
- Siirry sovellusliittymävaihtoehtoon (kuva 4)
- Siirry API -dokumenttivaihtoehtoon kuvan mukaisesti (kuva 5)
- Kopioi URL -osoite kuvasta ja ja tallenna se muistilehtiö tiedostoon (kuva 6)
Vaihe 2: 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
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:
ESP8266 OLED - Hae aika ja päivämäärä Internetistä: 8 vaihetta
ESP8266 OLED - Hae aika ja päivämäärä Internetistä: Tässä opetusohjelmassa opimme päivämäärän ja kellonajan saamisen NIST TIME -palvelimelta ESP8266 OLED- ja Visuino -tekniikan avulla. Katso esittelyvideo
Useiden ESP-keskustelujen tekeminen ESP-NOW: n avulla ESP32: n ja ESP8266: n avulla: 8 vaihetta
Useiden ESP-keskustelujen tekeminen ESP-NYT: n avulla ESP32: n ja ESP8266: n avulla: Käynnissä olevassa projektissani tarvitsen useita ESP: itä puhuakseni keskenään ilman reititintä. Tätä varten käytän ESP-NOW-ohjelmaa langattoman viestinnän tekemiseen keskenään ilman ESP: n reititintä
Hae aika ja päivämäärä Internetistä - opetusohjelma: 9 vaihetta
Hae aika ja päivämäärä Internetistä - opetusohjelma: Tässä opetusohjelmassa opimme päivämäärän ja kellonajan saamisen NIST TIME -palvelimelta M5Stack StickC: n ja Visuinon avulla. Katso esittelyvideo
Säätiedot Google Sheetsin ja Google Scriptin avulla: 7 vaihetta
Säätiedot Google Sheetsin ja Google Scriptin avulla: Tässä Blogtutissa aiomme lähettää SHT25 -anturin lukemat Google -arkeille Adafruit huzzah ESP8266: n avulla, joka auttaa lähettämään tiedot Internetiin. ja yksinkertainen tapa tallentaa tiedot
ESP8266 NODEMCU BLYNK IOT -opetusohjelma - Esp8266 IOT Blunkin ja Arduino IDE: n avulla - LEDien ohjaus Internetin kautta: 6 vaihetta
ESP8266 NODEMCU BLYNK IOT -opetusohjelma | Esp8266 IOT Blunkin ja Arduino IDE: n avulla | LEDien ohjaus Internetin kautta: Hei kaverit, tässä oppaassa opimme käyttämään IOT: tä ESP8266: n tai Nodemcun kanssa. Käytämme siihen blynk -sovellusta.Siksi käytämme esp8266/nodemcu -ohjelmaa LED -valojen ohjaamiseen Internetin kautta. Joten Blynk -sovellus yhdistetään esp8266- tai Nodemcu -laitteeseemme