Innholdsfortegnelse:

(IOT Project) Få værdata ved hjelp av ESP8266 og Openweather API: 5 trinn
(IOT Project) Få værdata ved hjelp av ESP8266 og Openweather API: 5 trinn

Video: (IOT Project) Få værdata ved hjelp av ESP8266 og Openweather API: 5 trinn

Video: (IOT Project) Få værdata ved hjelp av ESP8266 og Openweather API: 5 trinn
Video: Concept of LoRa Transmitter, BME280 Sensor and WiFi Webserver based on Arduino ESP32 (EP07) 2024, November
Anonim
(IOT Project) Få værdata ved hjelp av ESP8266 og Openweather API
(IOT Project) Få værdata ved hjelp av ESP8266 og Openweather API

I denne instruksen skal vi bygge et enkelt IOT -prosjekt der vi henter værdataene fra byen vår fra openweather.com/api og viser dem ved hjelp av behandlingsprogramvare.

Rekvisita:

  1. Arduino
  2. ESP8266 eller annen esp -modul
  3. Arduino IDE
  4. Behandler programvare
  5. Brødbrett
  6. Jumperwires Mann til Mann og Mann til Kvinne

Trinn 1: Skaff API -nøkkel og URL fra Openweather.org

Skaff API -nøkkel og URL fra Openweather.org
Skaff API -nøkkel og URL fra Openweather.org
Skaff API -nøkkel og URL fra Openweather.org
Skaff API -nøkkel og URL fra Openweather.org
Skaff API -nøkkel og URL fra Openweather.org
Skaff API -nøkkel og URL fra Openweather.org
  1. Opprett konto på https://openweathermap.org (Bilde 1)
  2. Etter at du har logget inn, gå til API -nøkler, og du får API -nøkkelen som vist på bildet. (Bilde 2)
  3. Kopier API -nøkkelen og lagre den i en notisblokkfil. (Bilde 3)
  4. Gå til API -alternativet (Bilde 4)
  5. Gå til API -dokumentalternativet som vist på bildet (Bilde 5)
  6. Kopier nettadressen fra og vist og lagre den i en notisblokkfil (Bilde 6)

Trinn 2: Tilkoblingsdiagram

Tilkoblingsdiagram
Tilkoblingsdiagram

Trinn 3: Arduino -kode

Før du kopierer denne koden til Arduino, må du kontrollere at du har lastet ned ESP8266 -kortet til arduino ide ved å bruke Boards manager.

#inkludere

#include #include #include const char* ssid = "Din SSID"; const char* password = "SSID PASSWORD"; // Ditt domenenavn med URL -sti eller IP -adresse med bane String openWeatherMapApiKey = "Lim inn API -nøkkelen din her"; // Erstatt med landskode og by String city = "Mumbai"; String countryCode = "IN"; Strengdata [16]; // STANDARDTIMEREN ER STILT TIL 10 SECONDS FOR TESTING FORMÅL // For en siste applikasjon, sjekk API -anropsgrensene per time/minutt for å unngå å bli blokkert/utestengt usignert long lastTime = 0; // Timer satt til 10 minutter (600000) // usignert lang timerDelay = 600000; // Still timeren til 10 sekunder (10000) usignert lang timerDelay = 10000; String jsonBuffer; ugyldig oppsett () {Serial.begin (115200); WiFi.begin (ssid, passord); //Serial.println("Connecting "); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Koblet til WiFi -nettverk med IP -adresse:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Timer satt til 10 sekunder (timerDelay variabel), det vil ta 10 sekunder før den første lesingen publiseres."); } void loop () {// Send en HTTP GET -forespørsel hvis ((millis () - lastTime)> timerDelay) {// Kontroller WiFi -tilkoblingsstatus hvis (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) kan brukes til å få typen var hvis (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input mislyktes! "); komme tilbake; } // Serial.print ("JSON -objekt ="); // Serial.println (myObject); // Serial.print ("Temperatur:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Trykk:"); // Serial.println (myObject ["main"] ["press"]); // Serial.print ("Fuktighet:"); // Serial.println (myObject ["main"] ["fuktighet"]); // Serial.print ("Vindhastighet:"); // Serial.println (myObject ["wind"] ["speed"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["press"]; int fuktig = myObject ["main"] ["fuktighet"]; int wind = myObject ["wind"] ["speed"]; String country = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["navn"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); String icon = JSON.stringify (myObject ["weather"] [0] ["icon"]); data [0] = String (temp); data [1] = "/"; data [2] = String (pres); data [3] = "/"; data [4] = String (fuktig); data [5] = "/"; data [6] = String (vind); data [7] = "/"; data [8] = land; data [9] = "/"; data [10] = by1; data [11] = "/"; data [12] = vær; data [13] = "/"; data [14] = ikon; data [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP -svarskode:"); // Serial.println (httpResponseCode); nyttelast = http.getString (); } annet {Serial.print ("Feilkode:"); Serial.println (httpResponseCode); } // Gratis ressurser http.end (); retur nyttelast; }

Trinn 4: Behandler kode

Behandlingskode
Behandlingskode
Behandlingskode
Behandlingskode
Behandlingskode
Behandlingskode

Last ned de oppgitte ikonbildene som skal brukes til å vise været før du kjører denne koden. Og behold bildene og koden i samme mappe.

import behandling. serie.*;

Seriell 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 fuktig; int vind; String city = ""; String country = ""; Strengevær = ""; Stringikon = ""; ugyldig oppsett () {størrelse (500, 500); myPort = new Serial (dette, "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 () {bakgrunn (72, 209, 204); textSize (22); fyll (54, 69, 79); tekst ("Temperatur:", 25, 100); tekst (temp +"° C", 200, 100); tekst ("Trykk:", 25, 150); tekst (pres + "hpa", 200, 150); tekst ("Fuktighet:", 25, 200); tekst (fuktig+" %", 200, 200); tekst ("Vind:", 25, 250); tekst (vind+"m/s", 200, 250); tekst ("Land/by:", 25, 300); tekst (land + "-" + by, 200, 300); tekst ("Vær:", 25, 350); tekst (vær, 200, 350); if (icon.contains ("01d")) {image (img, 380, 15); } annet hvis (icon.contains ("01n")) {image (img2, 380, 15); } annet hvis (ikon. inneholder ("02d")) {image (img3, 380, 15); } annet hvis (ikon. inneholder ("02n")) {image (img4, 380, 15); } annet hvis (ikon. inneholder ("03d")) {image (img5, 380, 15); } annet hvis (ikon. inneholder ("03n")) {image (img6, 380, 15); } annet hvis (icon.contains ("04d")) {image (img7, 380, 15); } annet hvis (icon.contains ("04n")) {image (img8, 380, 15); } annet hvis (ikon. inneholder ("09d")) {image (img9, 380, 15); } annet hvis (ikon. inneholder ("09n")) {image (img10, 380, 15); } annet hvis (ikon. inneholder ("10d")) {image (img11, 380, 15); } annet hvis (ikon. inneholder ("10n")) {image (img12, 380, 15); } annet hvis (icon.contains ("11d")) {image (img13, 380, 15); } annet hvis (icon.contains ("11n")) {image (img14, 380, 15); } annet hvis (ikon == "13d") {image (img15, 380, 15); } annet hvis (ikon. inneholder ("13n")) {image (img16, 380, 15); } annet hvis (ikon. inneholder ("50d")) {image (img17, 380, 15); } annet hvis (icon.contains ("50n")) {image (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); hvis (data! = null) {data = trim (data); Stringelementer = delt (data, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (elementer [1]); fuktig = int (elementer [2]); vind = int (elementer [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); weather = items [6].replace ("\" "," "); icon = items [7].replace (" / "", ""); }}}}

Anbefalt: