Obsah:

(Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků
(Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků

Video: (Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků

Video: (Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků
Video: Build Your Own AI Assistant Part 4 - Weather Skill 2024, Listopad
Anonim
(Projekt IOT) Získejte údaje o počasí pomocí ESP8266 a Openweather API
(Projekt IOT) Získejte údaje o počasí pomocí ESP8266 a Openweather API

V tomto pokynu vytvoříme jednoduchý projekt IOT, ve kterém načteme data o počasí našeho města z openweather.com/api a zobrazíme je pomocí softwaru pro zpracování.

Zásoby:

  1. Arduino
  2. ESP8266 nebo jakýkoli jiný modul esp
  3. Arduino IDE
  4. Software pro zpracování
  5. Prkénko
  6. Propojovací vodiče od muže k muži a od muže k ženě

Krok 1: Získejte klíč API a adresu URL z Openweather.org

Získejte klíč API a adresu URL z Openweather.org
Získejte klíč API a adresu URL z Openweather.org
Získejte klíč API a adresu URL z Openweather.org
Získejte klíč API a adresu URL z Openweather.org
Získejte klíč API a adresu URL z Openweather.org
Získejte klíč API a adresu URL z Openweather.org
  1. Vytvořte si účet na https://openweathermap.org (obrázek 1)
  2. Poté, co se přihlásíte, přejděte na klíče API a získáte klíč API, jak je znázorněno na obrázku. (Obrázek 2)
  3. Zkopírujte klíč API a uložte jej do souboru poznámkového bloku. (Obrázek 3)
  4. Přejděte na možnost API (obrázek 4)
  5. Přejděte na možnost API doc, jak je znázorněno na obrázku (obrázek 5)
  6. Zkopírujte adresu URL z obrázku a uložte ji do souboru poznámkového bloku (obrázek 6)

Krok 2: Schéma připojení

Schéma připojení
Schéma připojení

Krok 3: Arduino kód

Před zkopírováním tohoto kódu do Arduina se ujistěte, že jste desku ESP8266 stáhli do arduino ide pomocí Správce desek.

#zahrnout

#include #include #include const char* ssid = "Vaše SSID"; const char* heslo = "Vaše SSID HESLO"; // Vaše doménové jméno s URL adresou nebo IP adresou s cestou String openWeatherMapApiKey = "Sem vložte klíč API"; // Nahraďte kódem země a městem String city = "Mumbai"; Řetězec countryCode = "IN"; Řetězcová data [16]; // VÝCHOZÍ ČASOVAČ JE NASTAVEN NA 10 SEKUND PRO TESTOVACÍ ÚČELY // Pro konečnou aplikaci zkontrolujte limity volání API za hodinu/minutu, abyste se vyhnuli blokování/blokování bez znaménka long lastTime = 0; // Časovač nastaven na 10 minut (600000) // nepodepsaný dlouhý časovačDelay = 600000; // Nastavit časovač na 10 sekund (10 000) bez znaménka dlouhý časovač Zpoždění = 10 000; Řetězec jsonBuffer; neplatné nastavení () {Serial.begin (115200); WiFi.begin (ssid, heslo); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {zpoždění (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Připojeno k WiFi síti s IP adresou:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Časovač nastaven na 10 sekund (proměnná timerDelay), publikování prvního čtení bude trvat 10 sekund."); } void loop () {// Odeslání požadavku HTTP GET if ((millis () - lastTime)> timerDelay) {// Kontrola stavu připojení 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 ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) lze použít k získání typu var if (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input failed! "); vrátit se; } // Serial.print ("objekt JSON ="); // Serial.println (myObject); // Serial.print ("Teplota:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Tlak:"); // Serial.println (myObject ["hlavní"] ["tlak"]); // Serial.print ("Vlhkost:"); // Serial.println (myObject ["hlavní"] ["vlhkost"]); // Serial.print ("Rychlost větru:"); // Serial.println (myObject ["vítr"] ["rychlost"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["hlavní"] ["tlak"]; int humid = myObject ["main"] ["vlhkost"]; int wind = myObject ["vítr"] ["rychlost"]; Řetězec země = JSON.stringify (myObject ["sys"] ["země"]); Řetězec city1 = JSON.stringify (myObject ["name"]); Řetězec počasí = JSON.stringify (myObject ["počasí"] [0] ["popis"]); Ikona řetězce = JSON.stringify (myObject ["počasí"] [0] ["ikona"]); data [0] = řetězec (temp); data [1] = "/"; data [2] = String (pres); data [3] = "/"; data [4] = String (vlhký); data [5] = "/"; data [6] = String (vítr); data [7] = "/"; data [8] = země; data [9] = "/"; data [10] = city1; data [11] = "/"; data [12] = počasí; data [13] = "/"; data [14] = ikona; data [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("Kód odpovědi HTTP:"); // Serial.println (httpResponseCode); užitečné zatížení = http.getString (); } else {Serial.print ("Kód chyby:"); Serial.println (httpResponseCode); } // Zdarma zdroje http.end (); vrátit užitečné zatížení; }

Krok 4: Zpracování kódu

Zpracování kódu
Zpracování kódu
Zpracování kódu
Zpracování kódu
Zpracování kódu
Zpracování kódu

Před spuštěním tohoto kódu si stáhněte dané obrázky ikon, které budou použity k zobrazení počasí. A obrázky a kód uchovávejte ve stejné složce.

zpracování importu.sériové.*;

Sériový myPort; PImage obrázek; 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 vlhký; vnitřní vítr; String city = ""; Řetězec země = ""; Řetězcové počasí = ""; Ikona řetězce = ""; neplatné nastavení () {velikost (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 () {pozadí (72, 209, 204); textSize (22); výplň (54, 69, 79); text ("Teplota:", 25, 100); text (teplota +"° C", 200, 100); text ("Tlak:", 25, 150); text (pres + "hpa", 200, 150); text ("Vlhkost:", 25, 200); text (vlhký+" %", 200, 200); text ("Vítr:", 25, 250); text (vítr+"m/s", 200, 250); text („Země/město:“, 25, 300); text (země + "-" + město, 200, 300); text ("Počasí:", 25, 350); text (počasí, 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 (ikona == "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 (data! = null) {data = trim (data); Řetězcové položky = rozdělení (data, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (položky [1]); humid = int (položky [2]); vítr = int (položky [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); počasí = položky [6].replace ("\" "," "); ikona = položky [7].replace (" / "", ""); }}}}

Doporučuje: