Sadržaj:
- Korak 1: Nabavite API ključ i URL s Openweather.org
- Korak 2: Dijagram povezivanja
- Korak 3: Arduino kod
- Korak 4: Obrada koda
Video: (IOT projekt) Dobivanje vremenskih podataka pomoću ESP8266 i Openweather API -ja: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
U ovom ćemo uputstvu izgraditi jednostavan IOT projekt u kojem će dohvatiti vremenske podatke našeg grada s openweather.com/api i prikazati ih pomoću softvera za obradu.
Pribor:
- Arduino
- ESP8266 ili bilo koji drugi esp modul
- Arduino IDE
- Softver za obradu
- Oglasna ploča
- Jumperwires muški na muški i muški na ženski
Korak 1: Nabavite API ključ i URL s Openweather.org
- Napravite račun na https://openweathermap.org (Slika 1)
- Nakon što se prijavite, idite na API ključeve i dobit ćete API ključ kao što je prikazano na slici. (Slika 2)
- Kopirajte API ključ i spremite ga u datoteku bilježnice. (Slika 3)
- Idite na opciju API (Slika 4)
- Idite na opciju API doc kao što je prikazano na slici (Slika 5)
- Kopirajte url iz prikazanog i prikazanog i spremite ga u datoteku bilježnice (slika 6)
Korak 2: Dijagram povezivanja
Korak 3: Arduino kod
Prije kopiranja ovog koda u Arduino provjerite jeste li preuzeli ploču ESP8266 u arduino ide pomoću upravitelja ploča.
#uključi
#include #include #include const char* ssid = "Vaš SSID"; const char* password = "Vaša lozinka SSID -a"; // Naziv vaše domene s URL stazom ili IP adresom s putom String openWeatherMapApiKey = "Zalijepite svoj API ključ ovdje"; // Zamijenite šifrom svoje zemlje i gradom String city = "Mumbai"; String countryCode = "IN"; Podaci o nizovima [16]; // TAJMER NA ZADOVOLJSTVO JE POSTAVLJEN NA 10 SEKUNDA ZA TESTIRANJE SVRHA // Za konačnu aplikaciju provjerite ograničenja API poziva po satu/minuti kako biste izbjegli blokiranje/zabranu nepotpisanog long lastTime = 0; // Mjerač vremena postavljen na 10 minuta (600000) // bezznačni dugi timerDelay = 600000; // Postavite mjerač vremena na 10 sekundi (10000) nepotpisani dugi timerDelay = 10000; Niz jsonBuffer; void setup () {Serial.begin (115200); WiFi.započni (ssid, lozinka); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Povezano s WiFi mrežom s IP adresom:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Timer postavljen na 10 sekundi (varijabla timerDelay), proći će 10 sekundi prije objavljivanja prvog čitanja."); } void loop () {// Pošaljite HTTP GET zahtjev if ((millis () - lastTime)> timerDelay) {// Provjerite status WiFi veze if (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) se može koristiti za dobivanje vrste var if (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input failed! "); povratak; } // Serial.print ("JSON objekt ="); // Serial.println (mojObjekt); // Serial.print ("Temperatura:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Tlak:"); // Serial.println (myObject ["main"] ["pressure"]); // Serial.print ("Vlažnost:"); // Serial.println (myObject ["main"] ["vlažnost"]); // Serial.print ("Brzina vjetra:"); // Serial.println (myObject ["wind"] ["speed"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["pressure"]; int humid = myObject ["glavni"] ["vlažnost"]; int wind = myObject ["vjetar"] ["brzina"]; String country = JSON.stringify (myObject ["sys"] ["država"]); String city1 = JSON.stringify (myObject ["ime"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); Ikona niza = JSON.stringify (myObject ["vrijeme"] [0] ["ikona"]); data [0] = String (temp); podaci [1] = "/"; podaci [2] = niz (pres); podaci [3] = "/"; podaci [4] = Niz (vlažan); podaci [5] = "/"; podaci [6] = niz (vjetar); podaci [7] = "/"; podaci [8] = zemlja; podaci [9] = "/"; podaci [10] = grad1; podaci [11] = "/"; podaci [12] = vrijeme; podaci [13] = "/"; podaci [14] = ikona; podaci [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("Kod odgovora HTTP -a:"); // Serial.println (httpResponseCode); korisni teret = http.getString (); } else {Serial.print ("Kôd pogreške:"); Serial.println (httpResponseCode); } // Besplatni resursi http.end (); povratni teret; }
Korak 4: Obrada koda
Prije pokretanja ovog koda preuzmite zadane slike ikona koje će se koristiti za prikaz vremena. I slike i kôd držite u istoj mapi.
uvoz obrada.serial.*;
Serijski 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 vlažan; int vjetar; Grad niza = ""; Država niza = ""; String weather = ""; Ikona niza = ""; void setup () {veličina (500, 500); myPort = novi serijski (ovo, "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 () {background (72, 209, 204); textSize (22); ispuniti (54, 69, 79); tekst ("Temperatura:", 25, 100); tekst (temp +"° C", 200, 100); tekst ("Tlak:", 25, 150); tekst (pres + "hpa", 200, 150); tekst ("Vlažnost:", 25, 200); tekst (vlažan+" %", 200, 200); tekst ("Vjetar:", 25, 250); tekst (vjetar+"m/s", 200, 250); tekst ("Država/grad:", 25, 300); tekst (zemlja + "-" + grad, 200, 300); text ("Vrijeme:", 25, 350); tekst (vrijeme, 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 (podaci! = null) {podaci = trim (podaci); String items = split (podaci, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (stavke [1]); humid = int (stavke [2]); vjetar = int (stavke [3]); grad = stavke [4].replace ("\" "," "); zemlja = stavke [5].replace (" / "", ""); weather = items [6].replace ("\" "," "); icon = items [7].replace (" / "", ""); }}}}
Preporučeni:
Kako napraviti snimač podataka o vlažnosti i temperaturi u stvarnom vremenu s Arduino UNO i SD karticom - DHT11 Simulator zapisivača podataka u Proteusu: 5 koraka
Kako napraviti snimač podataka o vlažnosti i temperaturi u stvarnom vremenu s Arduino UNO i SD karticom | Simulacija DHT11 zapisničara u Proteusu: Uvod: Bok, ovdje Liono Maker, ovdje je veza na YouTube. Radimo na kreativnom projektu s Arduinom i radimo na ugrađenim sustavima. Zapisnik podataka: Zapisnik podataka (ujedno i zapisnik podataka ili snimač podataka) je elektronički uređaj koji bilježi podatke tijekom vremena s
Dobivanje vremena s interneta pomoću ESP8266 - Projekt NTP sata sa ESP8266 Nodemcu: 5 koraka
Dobivanje vremena s interneta pomoću ESP8266 | Projekt NTP sata sa ESP8266 Nodemcu: U ovom ćemo vodiču vidjeti kako dobiti vrijeme koristeći ESP8266/nodemcu s Arduino IDE -om. Dobivanje vremena osobito je korisno pri bilježenju podataka radi vremenske oznake vaših očitanja. Ako vaš projekt ESP8266 ima pristup internetu, možete dobiti vrijeme koristeći Network T
Jednostavan način za dobivanje podataka iz vašeg vozila: 4 koraka
Jednostavan način za dobivanje podataka iz vašeg vozila: Ovdje predstavljamo jednostavan način za dobivanje podataka iz OBD-II konektora vašeg vozila, kao i GPS podataka. OBD-II, druga dijagnostika na vozilu, automobilski je izraz koji se odnosi na sposobnost samodijagnostike i izvješćivanja vozila. OBD sustavi daju
Arduino projekt: Upravljajte elektronikom putem interneta pomoću Nodejs + SQL baze podataka i web stranice .: 6 koraka
Arduino projekt: Upravljajte elektronikom putem Interneta koristeći Nodejs + SQL bazu podataka i web lokaciju .: Projekt Napisao: Mahmed.techDatum izrade: 14. srpnja 2017. Razina poteškoće: Početnik s nekim programerskim znanjem. Hardverski zahtjevi: - Arduino Uno, Nano, Mega (mislim da će većina MCU -a sa serijskom vezom raditi) - Jedna LED & Ograničavanje struje
IoT Made Easy: Snimanje udaljenih vremenskih podataka: UV i zrak Temperatura i vlažnost: 7 koraka
IoT Made Easy: Snimanje udaljenih vremenskih podataka: UV i temperatura zraka i vlažnost: U ovom ćemo vodiču snimiti udaljene podatke kao UV (ultraljubičasto zračenje), temperaturu zraka i vlagu. Ti će podaci biti vrlo važni i koristit će se u budućoj kompletnoj meteorološkoj postaji. Blok dijagram prikazuje što ćemo dobiti na kraju