Мазмуну:
- 1 -кадам: Openweather.org тартып API ачкычын жана URL алуу
- 2 -кадам: Туташуу диаграммасы
- 3 -кадам: Arduino коду
- 4 -кадам: Кодду иштетүү
Video: (IOT долбоору) ESP8266 жана Openweather API аркылуу аба ырайы маалыматын алыңыз: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Бул көрсөтмөдө биз жөнөкөй IOT долбоорун түзөбүз, анда openweather.com/apiден шаарыбыздын аба ырайы тууралуу маалыматтарды алып, аны иштетүү программасын колдонуу менен көрсөтөбүз.
Берилиштер:
- Arduino
- ESP8266 же башка esp модулу
- Arduino IDE
- Программаны иштетүү
- Breadboard
- Jumperwires Эркектен Эркекке жана Эркектен Аялга
1 -кадам: Openweather.org тартып API ачкычын жана URL алуу
- Https://openweathermap.org эсебин түзүңүз (Сүрөт 1)
- Сиз киргенден кийин API ачкычтарына өтүңүз жана сүрөттө көрсөтүлгөндөй API ачкычын аласыз. (Сүрөт 2)
- API ачкычын көчүрүп, блокнот файлына сактаңыз. (Сүрөт 3)
- API опциясына өтүңүз (Image 4)
- Сүрөттө көрсөтүлгөндөй API doc опциясына өтүңүз (5 -сүрөт)
- Url'ди көрсөтүлгөн жана көрсөтүлгөндөн көчүрүп, блокнот файлына сактаңыз (6 -сүрөт)
2 -кадам: Туташуу диаграммасы
3 -кадам: Arduino коду
Бул кодду Arduinoго көчүрүүдөн мурун, ESP8266 тактасын Boards менеджери аркылуу arduino ideге жүктөгөнүңүздү текшериңиз.
#кошуу
#include #include #include const char* ssid = "Сиздин SSID"; const char* password = "Сиздин SSID ПАРОЛУҢУЗ"; // URL жолу бар сиздин домен атыңыз же String openWeatherMapApiKey = "API ачкычыңызды бул жерге чаптаңыз"; // Өлкө кодуңуз менен алмаштырыңыз String city = "Мумбай"; String countryCode = "IN"; String маалыматтар [16]; // АРТЫК ТАЙМЕР 10 СЕКУНДГА МАКСАТТАРЫН ТЕКШЕРҮҮ ҮЧҮН КӨРСӨТҮЛДҮ // Акыркы колдонмо үчүн, API/чалуу чектөөлөрүн саатына/мүнөтүнө текшерип, бөгөттөлүп калбаш үчүн/тыюу салынбаган узакка созулган lastTime = 0; // Таймер 10 мүнөткө коюлган (600000) // unsigned long timerDelay = 600000; // Таймерди 10 секундга коюу (10000) белгисиз узун таймерDelay = 10000; String 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= " + шаар +", " + countryCode +" & 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("Parsing input fail! "); кайтуу; } // Serial.print ("JSON object ="); // 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 ["wind"] ["speed"]); int temp = myObject ["main"] ["temp"]; узак pres = myObject ["негизги"] ["басым"]; int humid = myObject ["негизги"] ["нымдуулук"]; int wind = myObject ["wind"] ["speed"]; String өлкө = JSON.stringify (myObject ["sys"] ["өлкө"]); String city1 = JSON.stringify (myObject ["name"]); Стринг аба ырайы = JSON.stringify (myObject ["аба ырайы"] [0] ["сүрөттөмө"]); String icon = JSON.stringify (myObject ["аба ырайы"] [0] ["сөлөкөтү]); маалымат [0] = Сап (темп); маалыматтар [1] = "/"; маалыматтар [2] = Сап (прес); маалыматтар [3] = "/"; маалыматтар [4] = Стринг (нымдуу); маалыматтар [5] = "/"; маалымат [6] = Сап (шамал); маалыматтар [7] = "/"; маалыматтар [8] = өлкө; маалыматтар [9] = "/"; маалыматтар [10] = city1; маалыматтар [11] = "/"; маалыматтар [12] = аба ырайы; маалыматтар [13] = "/"; маалымат [14] = сөлөкөт; маалыматтар [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP жооп коду:"); // Serial.println (httpResponseCode); пайдалуу жүк = http.getString (); } else {Serial.print ("Error code:"); Serial.println (httpResponseCode); } // Акысыз ресурстар http.end (); кайра жүктөө; }
4 -кадам: Кодду иштетүү
Бул кодду иштетүүдөн мурун аба ырайын көрсөтүү үчүн колдонула турган сөлөкөттөгү сүрөттөрдү жүктөп алыңыз. Жана сүрөттөрдү жана кодду ошол папкада сактаңыз.
импортту иштетүү.сериал.*;
Сериялык 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 humid; катуу шамал; String city = ""; String country = ""; Аба ырайы = ""; String icon = ""; 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); текст (темп +"° C", 200, 100); текст ("Басым:", 25, 150); текст (pres + "hpa", 200, 150); текст ("Нымдуулук:", 25, 200); текст (нымдуу+" %", 200, 200); текст ("Wind:", 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); } else 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]); humid = int (пункттар [2]); шамал = int (пункттар [3]); шаар = пункттар [4].ренет ("\" "," "); өлкө = пункттар [5].ренеш (" / "", ""); аба ырайы = нерселер [6].ренет ("\" "," "); сөлөкөтү = пункттар [7].жайылтуу (" / "", ""); }}}}
Сунушталууда:
Google Sheets жана Google Script аркылуу аба ырайы маалыматы: 7 кадам
Google Барактарынын жана Google Scriptинин жардамы менен аба ырайы маалыматтары: Бул Blogtutта биз SHT25 сенсорунун окууларын интернет баракчаларына Adafruit huzzah ESP8266 аркылуу google баракчаларына жөнөтөбүз. Google баракчасына маалыматтарды жөнөтүү абдан пайдалуу. жана маалыматтарды сактоонун негизги жолу
IoT аба ырайы станциясы RPi жана ESP8266 менен: 10 кадам
IoT Weather Station менен RPi жана ESP8266: Мурунку сабактарда биз NodeMCU, сенсорлор менен ойноп, ThingSpeak (Интернеттин нерселери (IoT) платформасында маалыматтарды чогултууну жана сактоону үйрөткөн) булутта сенсорлор менен ойноп келгенбиз. жана IoT тиркемелерин иштеп чыгуу): IOT
HTTP аркылуу XinaBox жана Ubidots аркылуу аба ырайын кантип курса болот: 7 кадам
XinaBox жана Ubidots аркылуу HTTP аркылуу аба бекетин кантип куруу керек: XinaBox xChips (IP01, CW01 жана SW01) аркылуу Ubidotsто өз аба ырайы станцияңызды жасоону үйрөнүңүз ESP8266 Негизги жана Wi-Fi модулу (xChip CW01) колдонуучуларга жөнөтүүгө мүмкүндүк берет. XinaBoxтун модулдук xChips булутунан алынган маалыматтар. Бул маалыматтарды алыстан көзөмөлдөсө болот
Аба ырайы шамы - Аба ырайы жана температура бир караганда: 8 кадам
Аба ырайы шамы - Аба ырайы жана Температура Бир Караганда: Бул сыйкырдуу шамды колдонуп, сиз учурдагы температураны жана шарттарды дароо сыртта айта аласыз
IoT оңой: Алыскы аба ырайы маалыматын тартуу: UV жана абанын температурасы жана нымдуулугу: 7 кадам
IoT оңой: Алыскы аба ырайы маалыматын тартуу: UV жана абанын температурасы жана нымдуулугу: Бул окуу куралы боюнча биз алыскы маалыматтарды UV (Ultra-Violet радиация), абанын температурасы жана нымдуулугу катары тартып алабыз. Бул маалыматтар абдан маанилүү болот жана келечекте толук аба ырайы станциясында колдонулат