جدول المحتويات:

(مشروع IOT) الحصول على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather: 5 خطوات
(مشروع IOT) الحصول على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather: 5 خطوات

فيديو: (مشروع IOT) الحصول على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather: 5 خطوات

فيديو: (مشروع IOT) الحصول على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather: 5 خطوات
فيديو: Temperature Data Logging to IBM Watson IoT using TI CC3200 Launchpad 2024, يوليو
Anonim
(مشروع IOT) احصل على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather
(مشروع IOT) احصل على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather

في هذا الدليل ، سنقوم ببناء مشروع IOT بسيط يتم فيه جلب بيانات الطقس لمدينتنا من openweather.com/api وعرضها باستخدام برنامج المعالجة.

اللوازم:

  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: كود اردوينو

قبل نسخ هذا الكود إلى Arduino ، تأكد من تنزيل لوحة ESP8266 إلى arduino ID باستخدام Boards manager.

#يشمل

#include #include #include const char * ssid = "SSID الخاص بك" ؛ const char * password = "SSID PASSWORD الخاص بك" ؛ // اسم المجال الخاص بك مع مسار URL أو عنوان IP مع المسار String openWeatherMapApiKey = "الصق مفتاح API الخاص بك هنا" ؛ // استبدل برمز الدولة والمدينة String city = "Mumbai" ؛ سلسلة countryCode = "IN" ؛ بيانات السلسلة [16] ؛ // تم ضبط المؤقت الافتراضي على 10 ثوانٍ لاختبار الأغراض // بالنسبة للتطبيق النهائي ، تحقق من حدود استدعاء واجهة برمجة التطبيقات لكل ساعة / دقيقة لتجنب الحصول على حظر / محظور بدون توقيع طويل lastTime = 0 ؛ // Timer set to 10 minutes (600000) // timerDelay غير موقعة = 600000 ؛ // ضبط المؤقت على 10 ثوانٍ (10000) timerDelay طويل بدون توقيع = 10000 ؛ سلسلة jsonBuffer ؛ إعداد باطل () {Serial.begin (115200) ؛ WiFi.begin (SSID ، كلمة المرور) ؛ //Serial.println("Connecting ") ؛ while (WiFi.status ()! = WL_CONNECTED) {delay (500) ؛ // Serial.print (".") ؛ } // Serial.println ("") ؛ // Serial.print ("متصل بشبكة WiFi بعنوان IP:") ؛ // Serial.println (WiFi.localIP ()) ؛ // // Serial.println ("Timer set to 10 seconds (timerDelay variable) ، سيستغرق 10 ثوانٍ قبل نشر القراءة الأولى.") ؛ } حلقة فارغة () {// أرسل طلب HTTP GET إذا ((millis () - lastTime)> timerDelay) {// تحقق من حالة اتصال WiFi إذا (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather؟q= "+ city +"، "+ countryCode +" & APPID = "+" d5b56fd07988143ae141503ed9d81742 "+" & Units = metric "؛ jsonBuffer = httpGETRequest (serverPath.c_str ()) ، //Serial.println(jsonBuffer) ؛ JSONVar myObject = JSON.parse (jsonBuffer) ، يمكن استخدام // JSON.typeof (jsonVar) للحصول على نوع var if (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input فشل! ") ؛ إرجاع؛ } // Serial.print ("JSON object =") ؛ // Serial.println (myObject) ؛ // Serial.print ("درجة الحرارة:") ؛ // Serial.println (myObject ["main"] ["temp"]) ؛ // Serial.print ("الضغط:") ؛ // Serial.println (myObject ["main"] ["pressure"]) ؛ // Serial.print ("الرطوبة:") ؛ // Serial.println (myObject ["main"] ["humidity"]) ؛ // Serial.print ("سرعة الرياح:") ؛ // Serial.println (myObject ["wind"] ["speed"]) ؛ int temp = myObject ["main"] ["temp"] ؛ long pres = myObject ["main"] ["pressure"] ؛ int humid = myObject ["main"] ["الرطوبة"] ؛ int wind = myObject ["wind"] ["speed"] ؛ String country = JSON.stringify (myObject ["sys"] ["country"]) ؛ String city1 = JSON.stringify (myObject ["name"]) ؛ String weather = JSON.stringify (myObject ["weather"] [0] ["description"]) ؛ رمز السلسلة = JSON.stringify (myObject ["الطقس"] [0] ["icon"]) ؛ البيانات [0] = سلسلة (درجة الحرارة) ؛ البيانات [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) ؛ الحمولة = 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 عرض int رطوبة ريح int مدينة السلسلة = "" ؛ بلد السلسلة = "" ؛ سلسلة الطقس = "" ؛ رمز السلسلة = "" ؛ إعداد باطل () {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") ؛ } رسم باطل () {خلفية (72، 209، 204)؛ textSize (22) ؛ ملء (54 ، 69 ، 79) ؛ نص ("درجة الحرارة:" ، 25 ، 100) ؛ نص (temp + "° 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)؛ }} serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n')؛ إذا كانت (data! = null) {data = trim (data) ؛ عناصر السلسلة = انقسام (البيانات ، '/') ؛ if (items.length> 1) {temp = int (items [0]) ؛ pres = int (items [1]) ؛ رطب = int (العناصر [2]) ؛ wind = int (items [3]) ؛ city = عناصر [4].replace ("\" "،" ") ؛ البلد = عناصر [5].replace (" / ""، "") ؛ الطقس = العناصر [6].replace ("\" "،" ")؛ icon = العناصر [7].replace (" / ""، "")؛ }}}}

موصى به: