INHOUDSOPGAWE:

(IOT -projek) Kry weerdata met behulp van ESP8266 en Openweather API: 5 stappe
(IOT -projek) Kry weerdata met behulp van ESP8266 en Openweather API: 5 stappe

Video: (IOT -projek) Kry weerdata met behulp van ESP8266 en Openweather API: 5 stappe

Video: (IOT -projek) Kry weerdata met behulp van ESP8266 en Openweather API: 5 stappe
Video: Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! 2024, November
Anonim
(IOT -projek) Kry weerdata met behulp van ESP8266 en Openweather API
(IOT -projek) Kry weerdata met behulp van ESP8266 en Openweather API

In hierdie instruksies gaan ons 'n eenvoudige IOT -projek bou waarin die weerdata van ons stad op openweather.com/api gehaal word en dit met behulp van verwerkingsprogrammatuur kan vertoon.

Benodighede:

  1. Arduino
  2. ESP8266 of enige ander esp -module
  3. Arduino IDE
  4. Sagteware verwerk
  5. Broodbord
  6. Jumperwires Man tot man en man tot vrou

Stap 1: Verkry API -sleutel en URL van Openweather.org

Kry API -sleutel en URL van Openweather.org
Kry API -sleutel en URL van Openweather.org
Kry API -sleutel en URL van Openweather.org
Kry API -sleutel en URL van Openweather.org
Kry API -sleutel en URL van Openweather.org
Kry API -sleutel en URL van Openweather.org
  1. Skep 'n rekening op https://openweathermap.org (prent 1)
  2. Nadat u aangemeld het, gaan na API -sleutels en u kry die API -sleutel soos in die prentjie getoon. (Prent 2)
  3. Kopieer die API -sleutel en stoor dit in 'n notaboek -lêer. (Prent 3)
  4. Gaan na die API -opsie (prent 4)
  5. Gaan na die API -dokumentopsie soos in die prentjie getoon (prent 5)
  6. Kopieer die url van die en vertoon en stoor dit in 'n notaboekie (prent 6)

Stap 2: Verbindingsdiagram

Verbindingsdiagram
Verbindingsdiagram

Stap 3: Arduino -kode

Voordat u hierdie kode na Arduino kopieer, moet u seker maak dat u die bord ESP8266 in die arduino -ide afgelaai het met behulp van Boards manager.

#insluit

#include #include #include const char* ssid = "Jou SSID"; const char* password = "Your SSID PASSWORD"; // U domeinnaam met URL -pad of IP -adres met pad String openWeatherMapApiKey = "Plak u API -sleutel hier"; // Vervang deur u landkode en stad String city = "Mumbai"; String countryCode = "IN"; Stringdata [16]; // Die standaard tydsduur is op 10 sekondes gestel vir die toets van doeleindes // Timer ingestel op 10 minute (600000) // ongetekende lang timerDelay = 600000; // Stel timer op 10 sekondes (10000) ongetekende lang timerDelay = 10000; String jsonBuffer; ongeldige opstelling () {Serial.begin (115200); WiFi.begin (ssid, wagwoord); //Serial.println("Koppel "); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Gekoppel aan WiFi -netwerk met IP -adres:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Timer ingestel op 10 sekondes (timerDelay veranderlike), dit sal 10 sekondes neem voordat die eerste lesing gepubliseer word."); } leemte -lus () {// Stuur 'n HTTP GET -versoek indien ((millis () - lastTime)> timerDelay) {// Gaan die WiFi -verbindingstatus na as (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + stad +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & units = metrieke "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) kan gebruik word om die tipe var te kry as (JSON.typeof (myObject) == "ongedefinieerd") {//Serial.println("Parsing -invoer misluk! "); terugkeer; } // Serial.print ("JSON object ="); // Serial.println (myObject); // Serial.print ("Temperatuur:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Druk:"); // Serial.println (myObject ["main"] ["pressure"]); // Serial.print ("Humiditeit:"); // Serial.println (myObject ["main"] ["humiditeit"]); // Serial.print ("Windsnelheid:"); // Serial.println (myObject ["wind"] ["spoed"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["pressure"]; int humid = myObject ["main"] ["humiditeit"]; int wind = myObject ["wind"] ["spoed"]; String country = JSON.stringify (myObject ["sys"] ["country"]); String city1 = JSON.stringify (myObject ["naam"]); String weer = JSON.stringify (myObject ["weer"] [0] ["beskrywing"]); String -ikoon = JSON.stringify (myObject ["weer"] [0] ["ikoon"]); data [0] = String (temp); data [1] = "/"; data [2] = String (pres); data [3] = "/"; data [4] = String (vogtig); data [5] = "/"; data [6] = String (wind); data [7] = "/"; data [8] = land; data [9] = "/"; data [10] = stad1; data [11] = "/"; data [12] = weer; data [13] = "/"; data [14] = ikoon; data [15] = "\ n"; vir (int i = 0; i0) {// Serial.print ("HTTP -antwoordkode:"); // Serial.println (httpResponseCode); loonvrag = http.getString (); } anders {Serial.print ("Foutkode:"); Serial.println (httpResponseCode); } // Gratis hulpbronne http.end (); laai vrag terug; }

Stap 4: Verwerkingskode

Verwerkingskode
Verwerkingskode
Verwerkingskode
Verwerkingskode
Verwerkingskode
Verwerkingskode

Laai die gegewe ikoonbeelde af voordat u hierdie kode gebruik om weer te wys. En hou die beelde en kode in dieselfde gids.

invoerverwerking.reeks.*;

Seriële myPort; Beeld img; Beeld img2; Beeld img3; PImage img4; Beeld img5; Beeld img6; Beeld img7; Beeld img8; Beeld img9; Beeld img10; Beeld img11; Beeld img12; PImage img13; Beeld img14; PImage img15; Beeld img16; PImage img17; Beeld img18; int temp; int pres; int vogtig; int wind; String stad = ""; String country = ""; Stringweer = ""; String -ikoon = ""; ongeldige opstelling () {grootte (500, 500); myPort = new Serial (hierdie, "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"); } leegte trek () {agtergrond (72, 209, 204); textSize (22); fill (54, 69, 79); teks ("Temperatuur:", 25, 100); teks (temp +"° C", 200, 100); teks ("Druk:", 25, 150); teks (pres + "hpa", 200, 150); teks ("Humiditeit:", 25, 200); teks (humid+" %", 200, 200); teks ("Wind:", 25, 250); teks (wind+"m/s", 200, 250); teks ("Land/Stad:", 25, 300); teks (land + "-" + stad, 200, 300); teks ("Weer:", 25, 350); teks (weer, 200, 350); if (icon.contains ("01d")) {image (afb, 380, 15); } anders as (icon.contains ("01n")) {image (img2, 380, 15); } anders as (icon.contains ("02d")) {image (img3, 380, 15); } anders as (icon.contains ("02n")) {image (img4, 380, 15); } anders as (icon.contains ("03d")) {image (img5, 380, 15); } anders as (icon.contains ("03n")) {image (img6, 380, 15); } anders as (icon.contains ("04d")) {image (img7, 380, 15); } anders as (icon.contains ("04n")) {image (img8, 380, 15); } anders as (icon.contains ("09d")) {image (img9, 380, 15); } anders as (icon.contains ("09n")) {image (img10, 380, 15); } anders as (icon.contains ("10d")) {image (img11, 380, 15); } anders as (icon.contains ("10n")) {image (img12, 380, 15); } anders as (icon.contains ("11d")) {image (img13, 380, 15); } anders as (icon.contains ("11n")) {image (img14, 380, 15); } anders if (icon == "13d") {image (img15, 380, 15); } anders as (icon.contains ("13n")) {image (img16, 380, 15); } anders as (icon.contains ("50d")) {image (img17, 380, 15); } anders as (icon.contains ("50n")) {image (img18, 380, 15); }} ongeldig serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); as (data! = null) {data = trim (data); Stringitems = split (data, '/'); as (items.length> 1) {temp = int (items [0]); pres = int (items [1]); humid = int (items [2]); wind = int (items [3]); stad = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); weer = items [6].replace ("\" "," "); ikoon = items [7].replace (" / "", ""); }}}}

Aanbeveel: