فهرست مطالب:

(پروژه IOT) داده های آب و هوا را با استفاده از ESP8266 و Openweather API دریافت کنید: 5 مرحله
(پروژه IOT) داده های آب و هوا را با استفاده از ESP8266 و Openweather API دریافت کنید: 5 مرحله

تصویری: (پروژه IOT) داده های آب و هوا را با استفاده از ESP8266 و Openweather API دریافت کنید: 5 مرحله

تصویری: (پروژه IOT) داده های آب و هوا را با استفاده از ESP8266 و Openweather API دریافت کنید: 5 مرحله
تصویری: IoT: سرعت کنترل موتور DC با ماژول NodeMCU ESP8266 و L298N 2024, نوامبر
Anonim
(پروژه IOT) با استفاده از ESP8266 و Openweather API داده های آب و هوا را دریافت کنید
(پروژه IOT) با استفاده از ESP8266 و Openweather API داده های آب و هوا را دریافت کنید

در این دستورالعمل ما قصد داریم یک پروژه IOT ساده بسازیم که در آن داده های آب و هوای شهر ما را از openweather.com/api دریافت کرده و با استفاده از نرم افزار Processing نمایش می دهد.

تدارکات:

  1. آردوینو
  2. ESP8266 یا هر ماژول esp دیگر
  3. آردوینو IDE
  4. نرم افزار پردازش
  5. تخته نان
  6. Jumperwires نر به نر و نر به زن

مرحله 1: کلید 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 را از Openweather.org دریافت کنید
  1. ایجاد حساب در https://openweathermap.org (تصویر 1)
  2. پس از ورود به سیستم ، به کلیدهای API بروید و همانطور که در تصویر نشان داده شده ، کلید API را دریافت خواهید کرد. (تصویر 2)
  3. کلید API را کپی کرده و در یک فایل دفترچه یادداشت ذخیره کنید. (تصویر 3)
  4. به گزینه API بروید (تصویر 4)
  5. به تصویر سند API بروید همانطور که در تصویر نشان داده شده است (تصویر 5)
  6. آدرس 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]. جایگزین (" / ""، "")؛ }}}}

توصیه شده: