جدول المحتويات:
- الخطوة 1: احصل على مفتاح API وعنوان URL من Openweather.org
- الخطوة 2: مخطط الاتصال
- الخطوة 3: كود اردوينو
- الخطوة 4: معالجة الكود
فيديو: (مشروع IOT) الحصول على بيانات الطقس باستخدام ESP8266 وواجهة برمجة تطبيقات Openweather: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
في هذا الدليل ، سنقوم ببناء مشروع IOT بسيط يتم فيه جلب بيانات الطقس لمدينتنا من openweather.com/api وعرضها باستخدام برنامج المعالجة.
اللوازم:
- اردوينو
- 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: كود اردوينو
قبل نسخ هذا الكود إلى 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 (" / ""، "")؛ }}}}
موصى به:
بيانات الطقس باستخدام جداول بيانات Google و Google Script: 7 خطوات
بيانات الطقس باستخدام جداول بيانات Google و Google Script: في مدونة Blogtut هذه ، سنرسل قراءات مستشعر SHT25 إلى أوراق Google باستخدام Adafruit huzzah ESP8266 مما يساعد على إرسال البيانات إلى الإنترنت. والطريقة الأساسية التي تحفظ البيانات في
الحصول على الوقت من الإنترنت باستخدام ESP8266 - مشروع ساعة NTP مع Nodemcu ESP8266: 5 خطوات
الحصول على الوقت من الإنترنت باستخدام ESP8266 | مشروع ساعة NTP مع ESP8266 Nodemcu: في هذا البرنامج التعليمي سنرى كيفية الحصول على الوقت باستخدام ESP8266 / nodemcu مع Arduino IDE. يعد الحصول على الوقت مفيدًا بشكل خاص في تسجيل البيانات للطابع الزمني لقراءاتك. إذا كان مشروع ESP8266 الخاص بك يتمتع بإمكانية الوصول إلى الإنترنت ، فيمكنك الحصول على الوقت باستخدام Network T
كيفية توصيل تطبيق Android بـ AWS IOT وفهم واجهة برمجة تطبيقات التعرف على الصوت: 3 خطوات
كيفية توصيل تطبيق Android بـ AWS IOT وفهم واجهة برمجة تطبيقات التعرف على الصوت: يعلم هذا البرنامج التعليمي المستخدم كيفية توصيل تطبيق Android بخادم AWS IOT وفهم واجهة برمجة تطبيقات التعرف على الصوت التي تتحكم في ماكينة القهوة. يتحكم التطبيق في ماكينة القهوة من خلال Alexa خدمة الصوت ، ج
واجهة برمجة تطبيقات Google Vision باستخدام Raspberry Pi و Node: 11 خطوة
واجهة برمجة تطبيقات Google Vision باستخدام Raspberry Pi و Node: هذا دليل بدء لاستخدام واجهة برمجة تطبيقات Google Vision. يستخدم اتصال الإنترنت Raspberry Pi Zero W Arch Linux NodeJS التالي ، ألا تعرف Arch Linux؟ أو كيفية إعداد Raspberry Pi؟ لا تقلق ، لقد كتبت سلسلة من المقالات التي
كيفية الحصول على الموسيقى من أي موقع ويب (هاها) تقريبًا (طالما يمكنك سماعها يمكنك الحصول عليها حسنًا ، إذا تم تضمينها في الفلاش ، فقد لا تكون قادرًا على تحريرها) !!!!! المعلومات المضافة: 4 خطوات
كيفية الحصول على الموسيقى من أي موقع ويب (هاها) تقريبًا (طالما يمكنك سماعها يمكنك الحصول عليها … حسنًا إذا تم تضمينها في الفلاش ، فقد لا تكون قادرًا على تحريرها) !!!!! معلومات مضافة: إذا ذهبت إلى موقع ويب وشغلت أغنية تحبها وتريدها ، فإليك التعليمات لك وليس خطئي إذا أخطأت في شيء ما (الطريقة الوحيدة التي سيحدث بها ذلك هي إذا بدأت في حذف الأشياء دون سبب ) تمكنت من الحصول على موسيقى