Мазмұны:
- 1 -қадам: Openweather.org сайтынан API кілтін және URL мекенжайын алыңыз
- 2 -қадам: Қосылу диаграммасы
- 3 -қадам: Arduino коды
- 4 -қадам: кодты өңдеу
Бейне: (IOT жобасы) ESP8266 және Openweather API көмегімен ауа райы деректерін алыңыз: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:22
Бұл нұсқаулықта біз қарапайым IOT жобасын құрамыз, онда openweather.com/api сайтынан біздің қаламыздың ауа райы туралы мәліметтерді алып, оны өңдеу бағдарламалық жасақтамасы арқылы көрсетеміз.
Жабдықтар:
- Ардуино
- ESP8266 немесе кез келген басқа esp модулі
- Arduino IDE
- Өңдеуге арналған бағдарламалық қамтамасыз ету
- Нан тақтасы
- Еркек пен еркектің арасындағы секіру
1 -қадам: Openweather.org сайтынан API кілтін және URL мекенжайын алыңыз
- Https://openweathermap.org сайтында тіркелгі жасаңыз (1 -сурет)
- Кіргеннен кейін API кілттеріне өтіңіз және суретте көрсетілгендей API кілтін аласыз. (Сурет 2)
- API кілтін көшіріп, блокнот файлына сақтаңыз. (3 -сурет)
- API опциясына өтіңіз (4 -сурет)
- Суретте көрсетілгендей API doc опциясына өтіңіз (5 -сурет)
- 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].орнату (» / «», «»); }}}}
Ұсынылған:
Google Sheets және Google Script көмегімен ауа райы деректері: 7 қадам
Google парақтары мен Google Script көмегімен ауа райы деректері: Бұл Blogtut -та біз SHT25 сенсорының көрсеткіштерін Google парақтарына Adafruit huzzah ESP8266 көмегімен жібереміз, бұл деректерді интернетке жіберуге көмектеседі. және деректерді сақтаудың негізгі әдісі
Dark Sky API көмегімен ауа райы бақылау тақтасын жасаңыз: 5 қадам (суреттермен)
Dark Sky API көмегімен ауа райы бақылау тақтасын жасаңыз: Dark Sky ауа райын болжауға және визуализацияға маманданған. Dark Sky -дің ең керемет жағы - бұл ауа райы туралы API, біз оны әлемнің кез келген жерінен ауа райы туралы мәліметтерді алу үшін пайдалана аламыз. Бұл ауа райы жаңбырлы немесе шуақты ғана емес, сонымен қатар температура
Dark Sky API PyPortal және ауа райы бақылау тақтасы: 6 қадам
Dark Sky API PyPortal және ауа райы бақылау тақтасы: Бұл жоба - біз бұрын жасаған Dark Sky API ауа райы бақылау тақтасы. Бұл жолы Raspberry Pi орнына біз Adafruit PyPortal көмегімен ауа райы мәліметтерін көрсетеміз және бұл мәліметтерді бастапқы күйге жібереміз. Бір жұмыс үшін екі бақылау тақтасы
Ауа райы шамы - Ауа райы мен температура бір қарағанда: 8 қадам
Ауа райы шамы - Ауа райы мен температура бір қарағанда: Бұл сиқырлы шамды қолдана отырып, сіз ағымдағы температура мен жағдайды бірден біле аласыз
IoT жеңілдетілді: Қашықтағы ауа райы деректерін түсіру: УК және ауа температурасы мен ылғалдылық: 7 қадам
IoT жеңілдетілді: Қашықтағы ауа райы деректерін түсіру: УК және ауа температурасы мен ылғалдылығы: Бұл оқулықта біз УК (ультракүлгін сәуле), ауа температурасы мен ылғалдылық сияқты қашықтағы деректерді түсіреміз. Бұл деректер өте маңызды болады және болашақта метеостанцияда қолданылады. Блок -диаграмма соңында не алатынымызды көрсетеді