فهرست مطالب:
- مرحله 1: کلید API و URL را از Openweather.org دریافت کنید
- مرحله 2: نمودار اتصال
- مرحله 3: کد آردوینو
- مرحله 4: پردازش کد
تصویری: (پروژه IOT) داده های آب و هوا را با استفاده از ESP8266 و Openweather API دریافت کنید: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:51
در این دستورالعمل ما قصد داریم یک پروژه IOT ساده بسازیم که در آن داده های آب و هوای شهر ما را از openweather.com/api دریافت کرده و با استفاده از نرم افزار Processing نمایش می دهد.
تدارکات:
- آردوینو
- ESP8266 یا هر ماژول esp دیگر
- آردوینو IDE
- نرم افزار پردازش
- تخته نان
- Jumperwires نر به نر و نر به زن
مرحله 1: کلید API و URL را از Openweather.org دریافت کنید
- ایجاد حساب در https://openweathermap.org (تصویر 1)
- پس از ورود به سیستم ، به کلیدهای API بروید و همانطور که در تصویر نشان داده شده ، کلید API را دریافت خواهید کرد. (تصویر 2)
- کلید API را کپی کرده و در یک فایل دفترچه یادداشت ذخیره کنید. (تصویر 3)
- به گزینه API بروید (تصویر 4)
- به تصویر سند API بروید همانطور که در تصویر نشان داده شده است (تصویر 5)
- آدرس url را از تصویر نشان داده شده کپی کرده و در یک فایل دفترچه یادداشت ذخیره کنید (تصویر 6)
مرحله 2: نمودار اتصال
مرحله 3: کد آردوینو
قبل از کپی این کد در آردوینو ، مطمئن شوید که برد ESP8266 را با استفاده از مدیر بردها در arduino ide بارگیری کرده اید.
#عبارتند از
#include #include #include const char* ssid = "SSID شما"؛ const char* password = "گذرواژه SSID شما" ؛ // نام دامنه شما با مسیر URL یا آدرس IP با مسیر String openWeatherMapApiKey = "کلید API خود را اینجا بچسبانید"؛ // کد کشور و شهر خود را جایگزین کنید String city = "Mumbai"؛ String countryCode = "IN"؛ داده های رشته [16]؛ // تایمر پیش فرض برای آزمایش 10 ثانیه تنظیم شده است // برای برنامه نهایی ، محدودیت های تماس API را در ساعت/دقیقه بررسی کنید تا از مسدود شدن/ممنوعیت عدم امضای طولانی lastTime = 0 جلوگیری کنید. // تایمر روی 10 دقیقه تنظیم شده است (600000) // تایمر طولانی بدون علامت تاخیر = 600000؛ // تایمر را روی 10 ثانیه (10000) تایمر طولانی بدون علامت تنظیم کنید تاخیر = 10000؛ رشته jsonBuffer؛ void setup () {Serial.begin (115200)؛ WiFi.begin (ssid ، رمز عبور) ؛ //Serial.println(" اتصال ")؛ while (WiFi.status ()! = WL_CONNECTED) {تأخیر (500)؛ // Serial.print (".") ؛ } // Serial.println ("")؛ // Serial.print ("متصل به شبکه WiFi با آدرس IP:") ؛ // Serial.println (WiFi.localIP ()) ؛ // // Serial.println ("تایمر روی 10 ثانیه تنظیم شد (متغیر timerDelay) ، قبل از انتشار اولین خوانش 10 ثانیه طول می کشد.") ؛ } void loop () {// ارسال درخواست HTTP GET if ((millis () - lastTime)> timerDelay) {// بررسی وضعیت اتصال WiFi if (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather؟q= " + شهر +" ، " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & units = metric "؛ 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 failed! ")؛ برگشت؛ } // 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 ["باد"] ["سرعت"]) ؛ int temp = myObject ["main"] ["temp"]؛ pres pres = myObject ["اصلی"] ["فشار"]؛ int humid = myObject ["اصلی"] ["رطوبت"]؛ int wind = myObject ["باد"] ["سرعت"]؛ کشور رشته = JSON.stringify (myObject ["sys"] ["country"])؛ String city1 = JSON.stringify (myObject ["name"])؛ String weather = JSON.stringify (myObject ["weather"] [0] ["description"])؛ نماد رشته = JSON.stringify (myObject ["weather"] [0] ["icon"])؛ داده [0] = رشته (temp) ؛ داده [1] = "/"؛ داده [2] = رشته (پیش)؛ داده [3] = "/"؛ داده [4] = رشته (مرطوب) ؛ داده [5] = "/"؛ داده [6] = رشته (باد) ؛ داده [7] = "/"؛ داده [8] = کشور ؛ داده [9] = "/"؛ داده [10] = city1؛ داده [11] = "/"؛ داده [12] = آب و هوا ؛ داده [13] = "/"؛ داده [14] = نماد ؛ داده [15] = "\ n"؛ برای (int i = 0؛ i0) {// Serial.print ("کد پاسخ HTTP:") ؛ // Serial.println (httpResponseCode) ؛ payload = http.getString ()؛ } else {Serial.print ("کد خطا:")؛ 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 مرطوب؛ باد داخلی ؛ شهر رشته = ""؛ کشور رشته = ""؛ شرایط آب و هوایی = ""؛ آیکون رشته = ""؛ void setup () {اندازه (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)؛ اندازه متن (22) ؛ پر کنید (54 ، 69 ، 79) ؛ متن ("دما:" ، 25 ، 100) ؛ متن (دما +"° C" ، 200 ، 100) ؛ متن ("فشار:" ، 25 ، 150) ؛ متن (pres + "hpa" ، 200 ، 150) ؛ متن ("رطوبت:" ، 25 ، 200) ؛ متن (مرطوب+"٪" ، 200 ، 200) ؛ متن ("باد:" ، 25 ، 250) ؛ متن (باد+"m/s" ، 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 (آیتم [0]) ؛ pres = int (موارد [1])؛ humid = int (موارد [2])؛ wind = int (موارد [3])؛ شهر = اقلام [4]. جایگزین ("\" "،" ") ؛ کشور = اقلام [5]. جایگزین (" / "" ، "") ؛ آب و هوا = اقلام [6]. جایگزین ("\" "،" ")؛ icon = اقلام [7]. جایگزین (" / ""، "")؛ }}}}
توصیه شده:
از داده های زنده آردوینو (و ذخیره داده ها در اکسل) نقشه های زیبا بسازید: 3 مرحله
از داده های زنده آردوینو نقشه های زیبا بسازید (و داده ها را در اکسل ذخیره کنید): همه ما دوست داریم با تابع P … lotter خود در Arduino IDE بازی کنیم. با این حال ، در حالی که می تواند برای برنامه های کاربردی اساسی مفید باشد ، داده ها بیشتر پاک می شوند امتیاز اضافه می شود و برای چشم چندان خوشایند نیست. پلاتر Arduino IDE انجام نمی دهد
دریافت اعلان های ایمیل از پروژه های اینترنت اشیاء خود: 6 مرحله
دریافت اعلان های ایمیل از پروژه های اینترنت اشیا امیدوارم آنها را دیده باشید ، اگر نه من شما را به نمایه خود دعوت می کنم و آنها را بررسی می کنم. می خواستم وقتی یک متغیر اعلان هایی دریافت می کند
داده های آب و هوا با استفاده از Google Sheets و Google Script: 7 مرحله
داده های آب و هوا با استفاده از Google Sheets و Google Script: در این Blogtut ، ما قصد داریم خوانش های سنسور SHT25 را با استفاده از Adafruit huzzah ESP8266 به صفحات google ارسال کنیم که به ارسال اطلاعات به اینترنت کمک می کند. ارسال داده ها به سلول ورق google بسیار مفید است و روش اصلی ذخیره اطلاعات در
نحوه دریافت داده ها از پایگاه داده Firebase در NodeMCU: 7 مرحله
نحوه واکشی داده ها از پایگاه داده Firebase در NodeMCU: برای این دستورالعمل ، ما داده ها را از پایگاه داده در Google Firebase واکشی کرده و با استفاده از NodeMCU برای تجزیه و تحلیل بیشتر می آوریم. حساب ایجاد پایگاه داده Firebase. 3) بارگیری
اینترنت اشیا آسان: ضبط داده های آب و هوا از راه دور: UV و هوا دما و رطوبت: 7 مرحله
اینترنت اشیا آسان شده: ضبط داده های آب و هوایی از راه دور: اشعه ماوراء بنفش و دما و رطوبت هوا: در این آموزش ، ما داده های از راه دور را به عنوان اشعه ماوراء بنفش (اشعه ماوراء بنفش) ، دما و رطوبت هوا ضبط می کنیم. این داده ها بسیار مهم خواهند بود و در ایستگاه هواشناسی کامل آینده مورد استفاده قرار خواهند گرفت. نمودار بلوک نشان می دهد که در پایان چه چیزی را بدست خواهیم آورد