Table des matières:
- Étape 1: Obtenir la clé API et l'URL d'Openweather.org
- Étape 2: Schéma de connexion
- Étape 3: Code Arduino
- Étape 4: Code de traitement
Vidéo: (Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Dans cette instructable, nous allons construire un projet IOT simple dans lequel récupérer les données météorologiques de notre ville à partir d'openweather.com/api et les afficher à l'aide du logiciel de traitement.
Fournitures:
- Arduino
- ESP8266 ou tout autre module esp
- IDE Arduino
- Logiciel de traitement
- Planche à pain
- Cavaliers mâle à mâle et mâle à femelle
Étape 1: Obtenir la clé API et l'URL d'Openweather.org
- Créer un compte sur https://openweathermap.org (Image 1)
- Après vous être connecté, accédez aux clés API et vous obtiendrez la clé API comme indiqué dans l'image. (Image 2)
- Copiez la clé API et enregistrez-la dans un fichier bloc-notes. (Image 3)
- Accédez à l'option API (Image 4)
- Accédez à l'option de documentation de l'API comme indiqué dans l'image (image 5)
- Copiez l'url du et affiché et enregistrez-le dans un fichier bloc-notes (Image 6)
Étape 2: Schéma de connexion
Étape 3: Code Arduino
Avant de copier ce code dans Arduino, assurez-vous d'avoir téléchargé la carte ESP8266 dans arduino ide à l'aide du gestionnaire de cartes.
#comprendre
#include #include #include const char* ssid = "Votre SSID"; const char* password = "Your SSID PASSWORD";// Votre nom de domaine avec chemin URL ou adresse IP avec chemin String openWeatherMapApiKey = "Collez votre clé API ici"; // Remplacez par votre code de pays et votre ville String city = "Mumbai"; Chaîne countryCode = "IN"; Données de chaîne[16]; // LA MINUTERIE PAR DÉFAUT EST RÉGLÉE À 10 SECONDES À DES FINS DE TEST // Pour une application finale, vérifiez les limites d'appels API par heure/minute pour éviter d'être bloqué/interdit non signé longtemps lastTime = 0; // Timer réglé sur 10 minutes (600000) //long timerDelay non signé = 600000; // Régler le temporisateur à 10 secondes (10000) long timerDelay = 10000; Chaîne jsonBuffer; void setup() { Serial.begin(115200); WiFi.begin(ssid, mot de passe); //Série.println("Connexion"); while(WiFi.status() != WL_CONNECTED) { delay(500); // Serial.print("."); } // Serial.println(""); // Serial.print("Connecté au réseau WiFi avec l'adresse IP: "); // Serial.println(WiFi.localIP()); // // Serial.println("Timer réglé sur 10 secondes (variable timerDelay), il faudra 10 secondes avant de publier la première lecture."); } void loop() { // Envoyer une requête HTTP GET if ((millis() - lastTime) > timerDelay) { // Vérifier l'état de la connexion WiFi 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()); //Série.println(jsonBuffer); JSONVar myObject = JSON.parse(jsonBuffer); // JSON.typeof(jsonVar) peut être utilisé pour obtenir le type de la var if (JSON.typeof(myObject) == "undefined") { //Serial.println("L'analyse de l'entrée a échoué !"); revenir; } // Serial.print("JSON object = "); // Serial.println(monObjet); // Serial.print("Température: "); // Serial.println(monObjet["main"]["temp"]); // Serial.print("Pression: "); // Serial.println(monObjet["principal"]["pression"]); // Serial.print("Humidité: "); // Serial.println(monObjet["principal"]["humidité"]); // Serial.print("Vitesse du vent: "); // Serial.println(myObject["wind"]["speed"]); int temp = monObjet["main"]["temp"]; longue pression = monObjet["principal"]["pression"]; int humide = monObjet["principal"]["humidité"]; int vent = monObjet["vent"]["vitesse"]; String country = JSON.stringify(myObject["sys"]["country"]); String city1 = JSON.stringify(myObject["name"]); Chaîne météo = JSON.stringify(myObject["weather"][0]["description"]); Icône de chaîne = JSON.stringify(myObject["weather"][0]["icon"]); data[0]= Chaîne(temp); données[1]= "/"; data[2]= String(pres); données[3]= "/"; data[4]= String(humide); données[5]= "/"; data[6]= Chaîne(vent); données[7]= "/"; données[8]= pays; données[9]= "/"; données[10]= ville1; données[11]= "/"; données[12]= météo; données[13]= "/"; données[14]= icône; données[15]= "\n"; for(int i=0;i0) { // Serial.print("HTTP Response code: "); // Serial.println(httpResponseCode); charge utile = http.getString(); } else { Serial.print("Code d'erreur: "); Serial.println(httpResponseCode); } // Ressources gratuites http.end(); retourner la charge utile; }
Étape 4: Code de traitement
Avant d'exécuter ce code, téléchargez les images d'icônes données qui seront utilisées pour afficher la météo. Et gardez les images et le code dans le même dossier.
import processing.serial.*;
myPort série; Image 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; temp int; int prés; int humide; vent int; Chaîne ville = " "; Chaîne pays = " "; Chaîne météo =" "; Icône de chaîne = " "; void setup(){ size(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(){ background(72, 209, 204); tailletexte(22); remplir (54, 69, 79); text("Température: ", 25, 100); texte(temp +"°C", 200, 100); text("Pression:", 25, 150); texte(pres + " hpa", 200, 150); text("Humidité: ", 25, 200); text(humide+" %", 200, 200); text("Vent: ", 25, 250); texte(vent+" m/s", 200, 250); text("Pays/Ville: ", 25, 300); texte(pays +"-"+ ville, 200, 300); text("Météo: ", 25, 350); texte (météo, 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(données != null){ données = trim(données); Éléments de chaîne = split(data, '/'); if (items.length > 1) { temp = int(items[0]); pres = int(éléments[1]); humide = int(éléments[2]); vent = int(éléments[3]); ville = éléments[4].replace("\"", ""); pays = éléments[5].replace("\"", ""); météo = items[6].replace("\"", ""); icon = items[7].replace("\"", ""); } } } }
Conseillé:
IOT - Publier des données sur Thingspeak à l'aide d'ESP8266 : 3 étapes
IOT | Publier des données sur Thingspeak à l'aide d'ESP8266 : De nos jours, l'IoT est à la mode et de nombreuses machines ont des données à télécharger sur le cloud et à analyser les données. De petits capteurs mettent à jour les données sur le cloud et l'actionneur à une autre extrémité agit dessus. Je vais expliquer celui de l'exemple de l'IoT. J'ai cet article et je
Envoi des données des capteurs de vibrations et de température sans fil vers Excel à l'aide de Node-RED : 25 étapes
Envoi de données de capteur de vibration et de température sans fil vers Excel à l'aide de Node-RED : Présentation du capteur de vibration et de température sans fil industriel IoT à longue portée de NCD, offrant une portée allant jusqu'à 3 km grâce à l'utilisation d'une structure de réseau maillé sans fil. Intégrant un capteur de vibration et de température de précision 16 bits, cet appareil trans
Projet Arduino : Contrôlez l'électronique sur Internet à l'aide de Nodejs + Base de données SQL et site Web : 6 étapes
Projet Arduino : Contrôlez l'électronique sur Internet à l'aide de Nodejs + Base de données SQL et site Web. : Projet de : Mahmed.techDate de création : 14 juillet 2017Niveau de difficulté : débutant avec quelques connaissances en programmation. Configuration matérielle requise : - Arduino Uno, Nano, Mega (je pense que la plupart des MCU avec connexion série fonctionneront) - LED unique et amp; Limitation de courant res
L'IoT en toute simplicité : capture de données météorologiques à distance : UV et température et humidité de l'air : 7 étapes
IoT Made Easy : Capture de données météorologiques à distance : UV et température et humidité de l'air : dans ce didacticiel, nous allons capturer des données à distance sous forme d'UV (rayonnement ultraviolet), de température et d'humidité de l'air. Ces données seront très importantes et seront utilisées dans une future station météo complète. Le schéma fonctionnel montre ce que nous obtiendrons à la fin
Obtenez des vidéos et des jeux Flash gratuits sur n'importe quel site Web : 24 étapes
Obtenez des vidéos gratuites et des jeux Flash sur n'importe quel site Web : -REMARQUE- je ne suis pas responsable des problèmes illégaux ou des problèmes que vous rencontrez en utilisant cette instructable, c'est à titre informatif uniquement ! dans ce instructable, je vais vous montrer comment obtenir des vidéos et des jeux flash sur n'importe quel site sur internet explorer