Indholdsfortegnelse:

(IOT -projekt) Få vejrdata ved hjælp af ESP8266 og Openweather API: 5 trin
(IOT -projekt) Få vejrdata ved hjælp af ESP8266 og Openweather API: 5 trin

Video: (IOT -projekt) Få vejrdata ved hjælp af ESP8266 og Openweather API: 5 trin

Video: (IOT -projekt) Få vejrdata ved hjælp af ESP8266 og Openweather API: 5 trin
Video: Subnet Mask - Explained 2024, November
Anonim
(IOT -projekt) Få vejrdata ved hjælp af ESP8266 og Openweather API
(IOT -projekt) Få vejrdata ved hjælp af ESP8266 og Openweather API

I denne instruktive vil vi bygge et simpelt IOT -projekt, hvorfra vejrdataene i vores by hentes fra openweather.com/api og vises ved hjælp af Processing -software.

Tilbehør:

  1. Arduino
  2. ESP8266 eller et andet esp -modul
  3. Arduino IDE
  4. Behandlingssoftware
  5. Brødbræt
  6. Jumperwires Mand til Mand og Mand til Kvinde

Trin 1: Hent API -nøgle og URL fra Openweather.org

Hent API -nøgle og URL fra Openweather.org
Hent API -nøgle og URL fra Openweather.org
Hent API -nøgle og URL fra Openweather.org
Hent API -nøgle og URL fra Openweather.org
Hent API -nøgle og URL fra Openweather.org
Hent API -nøgle og URL fra Openweather.org
  1. Opret konto på https://openweathermap.org (billede 1)
  2. Når du har logget ind, skal du gå til API -nøgler, og du får API -nøglen som vist på billedet. (Billede 2)
  3. Kopier API -nøglen, og gem den i en notesblokfil. (Billede 3)
  4. Gå til API -indstillingen (billede 4)
  5. Gå til API doc -indstilling som vist på billedet (billede 5)
  6. Kopier url'en fra og vist, og gem den i en notesblokfil (billede 6)

Trin 2: Tilslutningsdiagram

Tilslutningsdiagram
Tilslutningsdiagram

Trin 3: Arduino -kode

Inden du kopierer denne kode til Arduino, skal du sørge for at have downloadet ESP8266 board til arduino ide ved hjælp af Boards manager.

#omfatte

#include #include #include const char* ssid = "Dit SSID"; const char* password = "Dit SSID PASSWORD"; // Dit domænenavn med URL -sti eller IP -adresse med stien String openWeatherMapApiKey = "Indsæt din API -nøgle her"; // Udskift med din landekode og by String city = "Mumbai"; String countryCode = "IN"; Strengdata [16]; // STANDARDTIMEREN ER INDSTILLET TIL 10 SECONDS TESTING FORMÅL // For en endelig applikation, kontroller API -opkaldsgrænserne pr. Time/minut for at undgå at blive blokeret/udelukket uden signeret lang lastTime = 0; // Timer indstillet til 10 minutter (600000) // usigneret lang timerDelay = 600000; // Indstil timeren til 10 sekunder (10000) usigneret lang timerDelay = 10000; String jsonBuffer; ugyldig opsætning () {Serial.begin (115200); WiFi.begin (ssid, adgangskode); //Serial.println("Connecting "); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Tilsluttet WiFi -netværk med IP -adresse:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Timer indstillet til 10 sekunder (timerDelay -variabel), det vil tage 10 sekunder, før den første læsning udgives."); } void loop () {// Send en HTTP GET -anmodning, hvis ((millis () - lastTime)> timerDelay) {// Kontroller WiFi -forbindelsesstatus, 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 bruges til at få typen var hvis (JSON.typeof (myObject) == "undefined") {//Serial.println("Indlæsning af input mislykkedes! "); Vend tilbage; } // Serial.print ("JSON -objekt ="); // Serial.println (myObject); // Serial.print ("Temperatur:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Tryk:"); // Serial.println (myObject ["main"] ["press"]); // Serial.print ("Fugtighed:"); // Serial.println (myObject ["main"] ["luftfugtighed"]); // Serial.print ("Vindhastighed:"); // Serial.println (myObject ["wind"] ["speed"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["press"]; int fugtigt = myObject ["main"] ["luftfugtighed"]; int wind = myObject ["wind"] ["speed"]; String land = JSON.stringify (myObject ["sys"] ["land"]); String city1 = JSON.stringify (myObject ["navn"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); Stringikon = JSON.stringify (myObject ["weather"] [0] ["icon"]); data [0] = String (temp); data [1] = "/"; data [2] = String (pres); data [3] = "/"; data [4] = String (fugtig); data [5] = "/"; data [6] = String (vind); data [7] = "/"; data [8] = land; data [9] = "/"; data [10] = by1; data [11] = "/"; data [12] = vejr; data [13] = "/"; data [14] = ikon; data [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP -svarskode:"); // Serial.println (httpResponseCode); nyttelast = http.getString (); } else {Serial.print ("Fejlkode:"); Serial.println (httpResponseCode); } // Gratis ressourcer http.end (); returnere nyttelast; }

Trin 4: Behandler kode

Behandlingskode
Behandlingskode
Behandlingskode
Behandlingskode
Behandlingskode
Behandlingskode

Inden du kører denne kode, skal du downloade de givne ikonbilleder, der vil blive brugt til at vise vejret. Og gem billederne og koden i den samme mappe.

import behandling. serie.*;

Seriel 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 fugtigt; int vind; String city = ""; Stringland = ""; Strengvejr = ""; Stringikon = ""; ugyldig opsætning () {størrelse (500, 500); myPort = ny 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 () {baggrund (72, 209, 204); textSize (22); fyld (54, 69, 79); tekst ("Temperatur:", 25, 100); tekst (temp +"° C", 200, 100); tekst ("Tryk:", 25, 150); tekst (pres + "hpa", 200, 150); tekst ("Fugtighed:", 25, 200); tekst (fugtig " %", 200, 200); tekst ("Vind:", 25, 250); tekst (vind+"m/s", 200, 250); tekst ("Land/By:", 25, 300); tekst (land + "-" + by, 200, 300); tekst ("Vejr:", 25, 350); tekst (vejr, 200, 350); if (icon.contains ("01d")) {image (img, 380, 15); } ellers hvis (ikon. indeholder ("01n")) {billede (img2, 380, 15); } ellers hvis (ikon. indeholder ("02d")) {billede (img3, 380, 15); } ellers hvis (ikon. indeholder ("02n")) {billede (img4, 380, 15); } ellers hvis (ikon. indeholder ("03d")) {billede (img5, 380, 15); } ellers hvis (ikon. indeholder ("03n")) {billede (img6, 380, 15); } ellers hvis (ikon. indeholder ("04d")) {billede (img7, 380, 15); } ellers hvis (ikon. indeholder ("04n")) {billede (img8, 380, 15); } ellers hvis (ikon. indeholder ("09d")) {billede (img9, 380, 15); } ellers hvis (ikon. indeholder ("09n")) {billede (img10, 380, 15); } ellers hvis (ikon. indeholder ("10d")) {billede (img11, 380, 15); } ellers hvis (ikon. indeholder ("10n")) {billede (img12, 380, 15); } ellers hvis (ikon. indeholder ("11d")) {billede (img13, 380, 15); } ellers hvis (ikon. indeholder ("11n")) {billede (billede 14, 380, 15); } ellers hvis (ikon == "13d") {billede (img15, 380, 15); } ellers hvis (ikon. indeholder ("13n")) {billede (img16, 380, 15); } ellers hvis (ikon. indeholder ("50d")) {billede (billede 17, 380, 15); } ellers hvis (ikon. indeholder ("50n")) {billede (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); hvis (data! = null) {data = trim (data); Stringelementer = split (data, '/'); hvis (items.length> 1) {temp = int (items [0]); pres = int (varer [1]); fugtigt = int (varer [2]); vind = int (varer [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); vejr = varer [6].replace ("\" "," "); ikon = varer [7].replace (" / "", ""); }}}}

Anbefalede: