Мазмұны:

(IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы деректерін алыңыз: 5 қадам
(IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы деректерін алыңыз: 5 қадам

Бейне: (IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы деректерін алыңыз: 5 қадам

Бейне: (IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы деректерін алыңыз: 5 қадам
Бейне: Умный домофон ESP8266 Arduino project ESP-01 2024, Шілде
Anonim
(IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы туралы мәліметтерді алыңыз
(IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы туралы мәліметтерді алыңыз

Бұл нұсқаулықта біз қарапайым IOT жобасын құрамыз, онда openweather.com/api сайтынан біздің қаламыздың ауа райы туралы мәліметтерді алып, оны өңдеу бағдарламалық жасақтамасы арқылы көрсетеміз.

Жабдықтар:

  1. Ардуино
  2. ESP8266 немесе кез келген басқа esp модулі
  3. Arduino IDE
  4. Өңдеуге арналған бағдарламалық қамтамасыз ету
  5. Нан тақтасы
  6. Еркек пен еркектің арасындағы секіру

1 -қадам: Openweather.org сайтынан API кілтін және URL мекенжайын алыңыз

Openweather.org сайтынан API кілті мен URL мекенжайын алыңыз
Openweather.org сайтынан API кілті мен URL мекенжайын алыңыз
Openweather.org сайтынан API кілті мен URL мекенжайын алыңыз
Openweather.org сайтынан API кілті мен URL мекенжайын алыңыз
Openweather.org сайтынан API кілті мен URL мекенжайын алыңыз
Openweather.org сайтынан API кілті мен URL мекенжайын алыңыз
  1. Https://openweathermap.org сайтында тіркелгі жасаңыз (1 -сурет)
  2. Кіргеннен кейін API кілттеріне өтіңіз және суретте көрсетілгендей API кілтін аласыз. (Сурет 2)
  3. API кілтін көшіріп, блокнот файлына сақтаңыз. (3 -сурет)
  4. API опциясына өтіңіз (4 -сурет)
  5. Суретте көрсетілгендей API doc опциясына өтіңіз (5 -сурет)
  6. URL мекенжайын көшірілген және көрсетілген блокнотта сақтаңыз (6 -сурет)

2 -қадам: Қосылу диаграммасы

Қосылу диаграммасы
Қосылу диаграммасы

3 -қадам: Arduino коды

Бұл кодты Arduino -ға көшірмес бұрын, ESP8266 тақтасын Boards Manager көмегімен arduino ide -ге жүктегеніңізге көз жеткізіңіз.

#қосу

#include #include #include const char* ssid = «Сіздің SSID»; const char* password = «Сіздің SSID құпия сөзіңіз»; // URL жолы бар сіздің домен атауыңыз немесе String openWeatherMapApiKey = «API кілтіңізді осында қойыңыз»; // Ел кодымен және қаламен ауыстырыңыз String city = «Мумбай»; String countryCode = «IN»; Жолдық деректер [16]; // ӘДЕПТІ ТАЙМЕР МАҚСАТЫН СЫНАУ ҮШІН 10 СЕКУНДТАРҒА ҚОЙЫЛДЫ // Соңғы қолданба үшін бұғатталмауы/тыйым салынбайтын ұзақ уақытқа созылмауы үшін API/сағат шектеуін тексеріңіз. // Таймер 10 минутқа орнатылды (600000) // unsigned long timerDelay = 600000; // Таймерді 10 секундқа қойыңыз (10000) белгісіз ұзақ таймерDelay = 10000; Жол jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, құпия сөз); //Serial.println("Қосылу «); while (WiFi.status ()! = WL_CONNECTED) {кешіктіру (500); // Serial.print («.»); } // Serial.println («»); // Serial.print («IP -мекен -жайы бар WiFi желісіне қосылған:»); // Serial.println (WiFi.localIP ()); // // Serial.println («Таймер 10 секундқа орнатылды (timerDelay айнымалысы), бірінші оқылымды жариялауға 10 секунд кетеді.»); } void loop () {// HTTP GET сұрауын жіберу, егер ((millis () - lastTime)> timerDelay) {// WiFi байланысының күйін тексеріңіз, егер (WiFi.status () == WL_CONNECTED) {String serverPath = «https://api.openweathermap.org/data/2.5/weather?q= « + қала +», « + елКод +» & APPID = « +» d5b56fd07988143ae141503ed9d81742 « +» & бірліктер = метрикалық «; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) var түрін алу үшін пайдаланылуы мүмкін, егер (JSON.typeof (myObject) == «undefined») {//Serial.println("Арналастыру енгізілмеді! «); қайтару; } // Serial.print («JSON нысаны =»); // Serial.println (myObject); // Serial.print («Температура:»); // Serial.println (myObject [«main»] [«temp»]); // Serial.print («Қысым:»); // Serial.println (myObject [«негізгі»] [«қысым»]); // Serial.print («Ылғалдылық:»); // Serial.println (myObject [«негізгі»] [«ылғалдылық»]); // Serial.print («Желдің жылдамдығы:»); // Serial.println (myObject [«жел»] [«жылдамдық]); int temp = myObject [«main»] [«temp»]; ұзақ pres = myObject [«негізгі»] [«қысым»]; int humid = myObject [«main»] [«ылғалдылық»]; int wind = myObject [«жел»] [«жылдамдық»]; String елі = JSON.stringify (myObject [«sys»] [«ел»]); String city1 = JSON.stringify (myObject [«name»]); Жолдық ауа райы = JSON.stringify (myObject [«ауа райы»] [0] [«сипаттамасы»]); Жол белгішесі = JSON.stringify (myObject [«ауа райы»] [0] [«белгіше»]); деректер [0] = Жол (темп); деректер [1] = «/»; деректер [2] = Жол (прес); деректер [3] = «/»; деректер [4] = Жол (ылғалды); деректер [5] = «/»; деректер [6] = Жол (жел); деректер [7] = «/»; деректер [8] = ел; деректер [9] = «/»; деректер [10] = қала1; деректер [11] = «/»; деректер [12] = ауа райы; деректер [13] = «/»; деректер [14] = белгіше; деректер [15] = «\ n»; for (int i = 0; i0) {// Serial.print («HTTP жауап коды:»); // Serial.println (httpResponseCode); пайдалы жүктеме = http.getString (); } else {Serial.print («Қате коды:»); Serial.println (httpResponseCode); } // Бос ресурстар http.end (); пайдалы жүктемені қайтару; }

4 -қадам: кодты өңдеу

Кодты өңдеу
Кодты өңдеу
Кодты өңдеу
Кодты өңдеу
Кодты өңдеу
Кодты өңдеу

Бұл кодты іске қоспас бұрын ауа райын көрсету үшін қолданылатын белгішелердің суреттерін жүктеңіз. Суреттер мен кодты сол қалтада сақтаңыз.

импортты өңдеу.сериал.*;

Сериялық myPort; PI сурет img; PG сурет img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImg img10; PImage img11; PImage img12; PImage img13; PImage img14; PG сурет img15; PImg img16; PImg img17; PG сурет img18; int temp; int pres; ылғалды; жел; String city = «»; String елі = «»; Ауа райы = «»; Жол белгішесі = «»; void setup () {size (500, 500); myPort = жаңа сериялық (бұл, «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); textSize (22); толтыру (54, 69, 79); мәтін («Температура:», 25, 100); мәтін (temp +«° C», 200, 100); мәтін («Қысым:», 25, 150); мәтін (pres + «hpa», 200, 150); мәтін («Ылғалдылық:», 25, 200); мәтін (ылғалды+« %», 200, 200); мәтін («Жел:», 25, 250); мәтін (жел+«м/с», 200, 250); мәтін («Ел/қала:», 25, 300); мәтін (ел + «-» + қала, 200, 300); мәтін («Ауа райы:», 25, 350); мәтін (ауа райы, 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); } if 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 (data! = null) {data = trim (data); Жол элементтері = бөлу (деректер, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (элементтер [1]); ылғалды = int (элементтер [2]); жел = int (элементтер [3]); қала = пункттер [4].реңдеу («\» «,» «); ел = элементтер [5].резиден (» / «», «»); ауа райы = заттар [6].резеңдеу («\» «,» «); белгіше = элементтер [7].орнату (» / «», «»); }}}}

Ұсынылған: