Taula de continguts:
- Pas 1: obteniu la clau de l'API i l'URL d'Openweather.org
- Pas 2: diagrama de connexió
- Pas 3: Codi Arduino
- Pas 4: processament del codi
Vídeo: (Projecte IOT) Obteniu dades meteorològiques mitjançant ESP8266 i Openweather API: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
En aquest instructiu, anem a construir un projecte IOT senzill en el qual obtenir les dades meteorològiques de la nostra ciutat des de openweather.com/api i mostrar-les mitjançant el programari de processament.
Subministraments:
- Arduino
- ESP8266 o qualsevol altre mòdul esp
- IDE Arduino
- Programari de processament
- Taula de pa
- Jumperwires masculí a masculí i masculí a femení
Pas 1: obteniu la clau de l'API i l'URL d'Openweather.org
- Crea un compte a https://openweathermap.org (imatge 1)
- Després d'iniciar la sessió, aneu a les claus de l'API i obtindreu la clau de l'API tal com es mostra a la imatge. (Imatge 2)
- Copieu la clau API i deseu-la en un fitxer de bloc de notes. (Imatge 3)
- Aneu a l'opció API (imatge 4)
- Aneu a l'opció de document API tal com es mostra a la imatge (imatge 5)
- Copieu l'URL des de i mostrat i deseu-lo en un fitxer de bloc de notes (imatge 6)
Pas 2: diagrama de connexió
Pas 3: Codi Arduino
Abans de copiar aquest codi a Arduino, assegureu-vos que heu descarregat la placa ESP8266 a arduino ide mitjançant el gestor de plaques.
#incloure
#include #include #include const char * ssid = "El vostre SSID"; const char * password = "Contrasenya SSID"; // El vostre nom de domini amb ruta URL o adreça IP amb ruta String openWeatherMapApiKey = "Enganxeu aquí la vostra clau API"; // Substitueix pel codi de país i la ciutat String city = "Mumbai"; Cadena countryCode = "IN"; Dades de cadenes [16]; // EL TEMPORITZADOR DEFAULT ESTÀ FIXAT A 10 SEGONS PER PROBAR ELS PROPESSITS // Per a una aplicació final, comproveu els límits de trucades de l'API per hora / minut per evitar el bloqueig / prohibició sense signar long last Time = 0; // Temporitzador definit a 10 minuts (600000) // Temporitzador llarg sense signar Retard = 600000; // Estableix el temporitzador a 10 segons (10000) temporitzador llarg sense signar Retard = 10000; String jsonBuffer; configuració nul·la () {Serial.begin (115200); WiFi.begin (ssid, contrasenya); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {demora (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Connectat a una xarxa WiFi amb adreça IP:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("El temporitzador s'ha definit a 10 segons (variable timerDelay), trigarà 10 segons a publicar la primera lectura."); } void loop () {// Envieu una sol·licitud GET HTTP si ((millis () - lastTime)> timerDelay) {// Comproveu l'estat de la connexió WiFi si (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) es pot utilitzar per obtenir el tipus de var si (JSON.typeof (myObject) == "undefined") {//Serial.println("Entrada paral·lela fallida! "); tornar; } // Serial.print ("objecte JSON ="); // Serial.println (myObject); // Serial.print ("Temperatura:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Pressió:"); // Serial.println (myObject ["principal"] ["pressió"]); // Serial.print ("Humitat:"); // Serial.println (myObject ["principal"] ["humitat"]); // Serial.print ("Velocitat del vent:"); // Serial.println (myObject ["vent"] ["velocitat"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["pressure"]; int humid = myObject ["main"] ["humity"]; int wind = myObject ["vent"] ["velocitat"]; String country = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["name"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); Icona de cadena = JSON.stringify (myObject ["weather"] [0] ["icon"]); dades [0] = Cadena (temp); dades [1] = "/"; dades [2] = Cadena (pres); dades [3] = "/"; dades [4] = Cadena (humida); dades [5] = "/"; dades [6] = Corda (vent); dades [7] = "/"; dades [8] = país; dades [9] = "/"; dades [10] = ciutat1; dades [11] = "/"; dades [12] = temps; dades [13] = "/"; dades [14] = icona; dades [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("Codi de resposta HTTP:"); // Serial.println (httpResponseCode); càrrega útil = http.getString (); } else {Serial.print ("Codi d'error:"); Serial.println (httpResponseCode); } // Recursos gratuïts http.end (); retorn de la càrrega útil; }
Pas 4: processament del codi
Abans d'executar aquest codi, descarregueu les imatges de la icona que s'utilitzaran per mostrar el temps. I guardeu les imatges i el codi a la mateixa carpeta.
processament de la importació. sèrie. *;
MyPort en sèrie; PImage img; PImatge img2; PImatge img3; PImatge img4; PImatge img5; PImatge img6; PImatge img7; PImatge img8; PImatge img9; PImatge img10; PImatge img11; PImatge img12; PImatge img13; PImatge img14; PImatge img15; PImatge img16; PImatge img17; PImatge img18; int temp; int pres; int humit; vent int; String city = ""; String country = ""; String weather = ""; Icona de cadena = ""; void setup () {mida (500, 500); myPort = new Serial (this, "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 () {fons (72, 209, 204); textSize (22); farcit (54, 69, 79); text ("Temperatura:", 25, 100); text (temperatura + "° C", 200, 100); text ("Pressió", 25, 150); text (pres + "hpa", 200, 150); text ("Humitat:", 25, 200); text (humit + "%", 200, 200); text ("Vent:", 25, 250); text (vent + "m / s", 200, 250); text ("País / Ciutat:", 25, 300); text (país + "-" + ciutat, 200, 300); text ("Temps:", 25, 350); text (temps, 200, 350); if (icon.contains ("01d")) {imatge (img, 380, 15); } else if (icon.contains ("01n")) {imatge (img2, 380, 15); } else if (icon.contains ("02d")) {imatge (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")) {imatge (img9, 380, 15); } else if (icon.contains ("09n")) {imatge (img10, 380, 15); } else if (icon.contains ("10d")) {imatge (img11, 380, 15); } else if (icon.contains ("10n")) {imatge (img12, 380, 15); } else if (icon.contains ("11d")) {imatge (img13, 380, 15); } else if (icon.contains ("11n")) {imatge (img14, 380, 15); } else if (icona == "13d") {imatge (img15, 380, 15); } else if (icon.contains ("13n")) {imatge (img16, 380, 15); } else if (icon.contains ("50d")) {imatge (img17, 380, 15); } else if (icon.contains ("50n")) {imatge (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {Cadena de dades = myPort.readStringUntil ('\ n'); if (dades! = nul) {dades = retallar (dades); Elements de cadena = divisió (dades, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (elements [1]); humid = int (ítems [2]); wind = int (ítems [3]); ciutat = elements [4].replace ("\" "," "); país = elements [5].replace (" / "", ""); weather = items [6].replace ("\" "," "); icon = items [7].replace (" / "", ""); }}}}
Recomanat:
ESP8266 Monitorització de temperatura Nodemcu mitjançant DHT11 en un servidor web local - Obteniu la temperatura i la humitat de l'habitació al navegador: 6 passos
ESP8266 Monitorització de temperatura Nodemcu mitjançant DHT11 en un servidor web local | Obteniu la temperatura i la humitat de l'habitació al vostre navegador: Hola nois, avui farem una humitat i un amp; sistema de control de temperatura que utilitza ESP 8266 NODEMCU & Sensor de temperatura DHT11. La temperatura i la humitat s’obtindran del sensor DHT11 & es pot veure en un navegador quina pàgina web es gestionarà
Dades meteorològiques mitjançant Fulls de càlcul i Google Script: 7 passos
Dades meteorològiques mitjançant Google Sheets i Google Script: en aquest Blogtut, enviarem les lectures del sensor SHT25 a fulls de google mitjançant Adafruit huzzah ESP8266, que ajuda a enviar les dades a Internet. L’enviament de dades a la cel·la de full de google és molt útil. i forma bàsica que guarda les dades a
Introducció a ESP32 CAM - Reproducció de vídeo mitjançant ESP CAM mitjançant Wifi - Projecte de càmera de seguretat ESP32: 8 passos
Introducció a ESP32 CAM | Reproducció de vídeo mitjançant ESP CAM a través de Wifi | Projecte de càmera de seguretat ESP32: Avui aprendrem a utilitzar aquesta nova placa ESP32 CAM i com podem codificar-la i utilitzar-la com a càmera de seguretat i obtenir un vídeo en streaming per wifi
L’IoT és fàcil: captura de dades meteorològiques remotes: temperatura i humitat de l’aire i dels raigs ultraviolats: 7 passos
Facilitat de l’IoT: captura de dades meteorològiques remotes: temperatura i humitat de l’aire i dels raigs ultraviolats: en aquest tutorial capturarem dades remotes com a radiació ultraviolada (UV), temperatura i humitat de l’aire. Aquestes dades seran molt importants i s’utilitzaran en una futura estació meteorològica completa. El diagrama de blocs mostra el que obtindrem al final
Obteniu un sensor de pes penjat d’una escala d’equipatge per al vostre projecte Arduino: 4 passos
Obtingueu un sensor de pes penjat d’una balança d’equipatge per al vostre projecte Arduino: en aquest tutorial us mostro com obtenir un sensor de pes penjat per a un projecte Arduino d’una bàscula d’equipatge / pesca habitual i barata i del mòdul HX711 ADC, que s’utilitza sovint. Antecedents: per a un projecte, necessitava un sensor per mesurar un pes determinat que ha