Sisukord:
- Samm: hankige API -võti ja URL saidilt Openweather.org
- Samm: ühendusskeem
- Samm: Arduino kood
- Samm: koodi töötlemine
Video: (IOT projekt) Ilmateabe hankimine ESP8266 ja Openweather API abil: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
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:
- Arduino
- ESP8266 või mõni muu esp -moodul
- Arduino IDE
- Töötlustarkvara
- Leivalaud
- Jumperwires meestele ja meestele naistele
Samm: hankige API -võti ja URL saidilt Openweather.org
- Looge konto saidil https://openweathermap.org (pilt 1)
- Pärast sisselogimist avage API võtmed ja saate API võtme, nagu on näidatud pildil. (Pilt 2)
- Kopeerige API võti ja salvestage see märkmiku faili. (Pilt 3)
- Avage API valik (pilt 4)
- Minge API dokumendi valikule, nagu on näidatud pildil (pilt 5)
- Kopeerige URL näidatud ja ja salvestage see märkmiku faili (joonis 6)
Samm: ü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
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:
Simuleeritud EKG signaali hankimine LTSpice abil: 7 sammu
Simuleeritud EKG signaali saamine LTSpice abil: südame võime pumpada on elektrisignaalide funktsioon. Kliinikud saavad neid signaale lugeda EKG -lt, et diagnoosida erinevaid südameprobleeme. Enne kui arst saab signaali korralikult ette valmistada, tuleb see siiski korralikult filtreerida ja võimendada
Põhilise elektrokardiogrammi hankimine, võimendamine ja filtreerimine: 6 sammu
Põhilise elektrokardiogrammi hankimine, võimendamine ja filtreerimine: Selle juhendi täitmiseks on vaja ainult arvutit, Interneti -ühendust ja mõnda simulatsioonitarkvara. Selle disaini jaoks töötatakse kõik ahelad ja simulatsioonid LTspice XVII -l. See simulatsioonitarkvara sisaldab
Tasuta veebisaidi hankimine (TLD, hostimine, SSL): 16 sammu
Tasuta veebisaidi hankimine (TLD, hostimine, SSL): veebisaitidest on saamas suur asi. Varem olid suurtel ettevõtetel, nagu Microsoft, Google jt, oma veebisaidid. Võib -olla tegid seda ka mõned blogijad ja väiksemad ettevõtted. Kuid nüüd, eriti selle COVID-19 pandeemia ajal (jah, ma kirjutan seda aastal 2020)
Kella tegemine M5stick C abil Arduino IDE abil RTC reaalajas kell M5stack M5stick-C abil: 4 sammu
Kella tegemine M5stick C abil, kasutades Arduino IDE | RTC reaalajas kell koos M5stack M5stick-C-ga: Tere, selles juhendis olevad poisid, me õpime, kuidas Arduino IDE abil kella m5stick-C arendusplaadiga teha. Nii kuvab m5stick kuupäeva, kellaaja ja amp; kuunädal ekraanil
WiFi -ühenduse loomine ESP8266 abil ja kohaliku IP -aadressi hankimine: 3 sammu
WiFi -ühenduse loomine ESP8266 abil ja kohaliku IP -aadressi hankimine: Selles õpetuses näeme, kuidas luua WiFi -ühendus ESP8266 WiFi -plaadiga. Ühendame selle kohaliku WiFi -võrguga