برمجة الأردوينو في البايثون - إنترنت الأشياء - ثاني ثانوي
الجزء الأول
1. أسس إنترنت الأشياء
2. إنترنت الأشياء في حياتنا
3. إنشاء تطبيقات إنترنت الأشياء باستخدام الأردوينو
4. إنشاء تطبيق سحابي لإنترنت الأشياء
الجزء الثاني
5 .تطبيقات إنترنت الأشياء المتقدمة
6 .برمجة إنترنت الأشياء باستخدام ++C
7 .الرسائل في إنترنت الأشياء
8. محاكاة شبكة مستشعرات إنترنت الأشياء اللاسلكية
156 الدرس الثاني برمجة الأردوينو في البايثون مشروع الحديقة الذكية بالأردوينو Smart Garden with an Arduino رابط الدرس الرقم www.in.edu.sa نظرا للتغير المناخي في أنحاء الكرة الأرضية. فقد ارداد الطلب على البتنة الذكية كطريقة للزراعة المستدامة والقابلة للتطوير، أصبحت هناك حاجة ماسة لتلبية المنصة السحابية Cloud platform) الاحتياجات الزراعية لدى العدد المتزايد من السكان، وبالتالي ضرورة وجود طرائق زراعة أكثر كفاءة مثل البستنة الذكية. ستقوم بمحاكاة دائرة أردوينو تراقب حديقة المنصة السحابية هي خادم في ذكية، وتُرسل البيانات إلى منصة سحابية عبر الإنترنت سيرسل الأردوينو البيانات مركز بيانات قائم على الإنترنت باستمرار إلى التحرين السحابي. وعند استيفاء مجموعة معينة من الظروف المتعلقة يمكن خدمات البرامج والأجهرة من بدرجة الحرارة والرطوبة. سيتم محاكاة تشغيل نظام للري. ستقوم أولاً بمحاكاة الدائرة العمل معا عن بعد ولي توزيعات كبيرة نے دوائر تینگر كاد لاستعراض توصيلات الدائرة بوضوح ثم ستتخدم المحاكاة لإرشادك في إنشاء الدائرة نفسها باستخدام جهاز تحكم أردوينو حقيقي سوف تحتاج إلى المكونات الاتية • لوحة أردوينوأونو Arduino Uno R3) R3) المكونات التي ستستخدمها في هذا المشروع لوحة توصيل الدوائر الصغيرة. . مستشعر رطوبة التربة. مستشعر درجة الحرارة. . محرك تيار مستمر. مستشعر رطوية التربة 18 لوحة أردوينو أوثو R3 لوحة توصيل الدوائر الصغيرة (Arduino Uno R3) (Soil Moisture Sensor) محرك تيار مستمر (DC Motor) TMP مستشعر الحرارة TMP (Breadboard Small) (TMP Temperature Sensor) شكل 417 مكوات متجروع الحديقة السلامة دارة التعليم
مشروع الحديقة الذكية بالأردوينو
لتحميل المكونات: ابحث عن Arduino no R3 لوحة اردوينو أوتو (3) من مكتبة Comparents ( المكونات والسحبها وأقلتها في مساحة العمل. ابحث عن Breadboard Small لوحة توصيل الدوائر الصغيرة من مكتبة Comparents ) المكونات) واسحبها وأملتها في مساحة العمل 8 2 1 خيل 418 تحميل المكونات وزارة الت
تحميل المكونات
حرارة التعليم DIGITAL (PWM O UNO ARDUINO POWER ANALOGIN ستقوم الآن بتوصيل لوحة الأردوينو بلوحة توصيل الدوائر الصغيرة لتوصيل لوحة الأردوينو بلوحة توصيل الدوائر الصغيرة قم بتوصيل GND (الطرف الأرضي للوحة الأردوينو بالعمود السائس من لوحة التوصيل الدوائر الصغيرة وغير لون السلك إلى black ( الأسود ) قم بتوصيل طرف الجهد 50 (5) هول ) للوحة الأردوينو بالعمود الموجب من الوجة توصيل الدوائر الصغيرة وغير لون السلل إلى red ( الأحمر ا. 3 2 1 شكل 419 توصيل الأولويو بترعة توصيل الله البر chil 0
توصيل لوحة الأ{دوينو بلوحة توصيل الدوائر الصغيرة
ستقوم الآن بتوصيل محرك التيار المستمر بمنفذ رقمي في لوحة الأردوينو. التوصيل محرك التيار المستمر ، قم بتوصيل GND (الطرف الأرضي) للوحة الأردوينو بالطرف 1 محرك التيار المستمر وغير لون السلك إلى black الأسود ) قم بتوصيل 3 Digital pin | الطرف الرقمي 3 - 2 Terminal الطرف (2) المحرك التبار المستمر، وغير لون السلك اني rect ( الأحمر). سيحاكي محرك التيار المتر عملية فتح حمام نظام الري والذي سينشط عند استيفاء مجموعة معينة من الشروط مرارة الي ليم 2 1 XX UNO ARDUINO شكل 420 توصيل محزنك التيار المنتف and bai prants OO LINO ARDURID
توصيل محرك التيار المستمر
ستقوم الآن بتوصيل مستشعر درجة الحرارة بمنفذ تناظري في الأردوينو. لتوصيل مستشعر درجة الحرارة قم بتوصيل طرف Power ( الطاقة) تستشعر درجة الحرارة بالعمود الموجب من لوحة توصيل الدوائر الصغيرة وغير لون السلك إلى red الأحمر) 1 قم بتوصيل طرف مجرح Vout ( الجهد ( المستثمر درجة الحرارة بالطرف التناظري A2 في لوحة الاردوينو وغير لون السلك إلى green (الأحضر). قم بتوصيل GND الطرف الأرضي المستشعر درجة الحرارة بالعمود السالب من لوحة توصيل الدوائر الصغيرة وغير لون السلك الى Black ( الاسود ) . DIGITAL (PWM) OO UNO ARDUINO حرارة الي ليم GATH ANALOGIN ج 21 4 لوصل مستشعر درجة الحرارة 3 2 1601
توصيل مستشعر درجة الحرارة
ANALOG ستقوم في الختام بتوصيل مستشعر رطوبة التربة بمنفذ تناطري في الأردوينو. التوصيل مستشعر رطوبة التربة . < ، قم بتوصيل طرف Power ( الطاقة ) المستشعر رضوية التربة بالعمود الموج من الوجة توصيل الدوائر الصغيرة وغير لون السلك إلى red (الأحمر) قم بتوصيل GND ( الطرف الأرضي) المستشعر رطيبة التربة العمود السالب من لوحة توصيل الدوائر الصغيرة وغير لون السلك إلى black / الأسود .. قه توصيل طرف Signal ( الإشارة ) مستشعر رطوبة التربة الطرف القاطري 4 في لوحة الأردوينو وغير لون السلك إلى green ( الأحضر ) 0 3 مرارة الي شمل 4.22 تما مستمر طوبة البرية 2 0
توصيل مستشعر رطوبة التربة
الدائرة بصورتها النهائية Complete Circuit تفصل المكونات بالأطراف الآتية: D3 A4 THE A2 شكل 23 4 توصيل الأطراف بالكومنت حرارة التعليم
الدائرة بصورتها النهائية
الدائرة المادية Physical Circuit تمثل هذه الصورة الشكل الذي تبدو عليه الدائرة الحقيقية. ی مرض آن. التيار يتصل بمضخة ماء أو بصمام شكل 424 صور الدائرة مكوناتها المالية التعليم Capacitive Smal Miniature Sensor v1.2
الدائرة المادية
برمجة مستشعرات ومحرك ري الحديقة الذكية في الأردوينو Programming the Arduino Smart Garden Sensors and Motor ستقوم الآن ببرمجة الأردوينو القراءة قيم أطراف مستشعرات درجة الحرارة ورطوبة التربة. عند الوصول إلى تكوين محدد لقيم درجة الحرارة والرطوبة سينشط محرك التيار المستمر وذلك باستخدام الدالة، ليعمل لمدة 5 ثوان، ثم يتوقف. وذلك في محاكاة العملية المراقبة والري التلقائيين للنباتات في الحديقة الدكية. افتح باي تشارم، وأنشئ ملف بايثون ،جديد، واستدع الكتبات المطلوبة. قم يتكوين منفذ الاتصال والأطراف المطلوبة. import pyfirmata import time communication_port = 'COM4' dc_motor_pin = board.get_pin('d:3:0') board.get pin('a:2:1') board. get pin('a:4:1') temperature_sensor_pin = moisture sensor_pin = قم بإعداد الاتصال بين PyFirmata واللوحة board = pyfirmata. Arduino (communication_port) it pyfirmata.util.Iterator(board) it.start() نقد الدالة الأتية للتحكم في محرك التيار المستمر. def water_plant(dc_motor_pin): print("--- Watering plant --- dc_motor_pin.write(1) time.sleep(5) dc_motor_pin.write(0) ترسل عده الدالة اشارة رقمية مرتقمة HIGH) لمدة 5 ثوار إلى محرك السيار المنتمي لعلم : الشارد قسة منخفضة (LOW) لإيقاف حركته. حرارة البليد
برمجة مستشعرات ومحرك ري الحديقة الذكية في الأردوينو
أنشئ تكرار لا نهائياً، وقم بكتابة الأوامر البرمجية أدناه. while True: # write your code here اقرأ قيم إدخال درجة الحرارة والرطوبة غير المعالجة التي تلقاها من الاطراف التناظرية. temperature_value : temperature_sensor_pin.read( ) moisture_value = moisture_sensor_pin.read( ) تحقق مما إذا كانت قيم الإدخال من الأطراف فارغة. يُنعد منطق البرنامج أدنى هذا الشرط. if (temperature_value is not None) and (moisture_value is not None): الرسل مشعرات جهاز التحكم الدقيق السما فارغة ل ممص الأحسان ولا الله علينا إضافة طريقة تحقق لتجنب حدود الأخطاء في البرنامج. أنشئ المتغيرات الآتية التي تعين قيم المدخلات في ت غير المعالجة لـ ـة لقيم درجة الحرارة والرطوبة المناسبة باستخدام الصيغ الرياضية. بالنسبة لدرجة الحرارة تستخدم أول 3 أرقام عشرية للإشارة التناظرية القادمة من مستشعر درجة الحرارة. لم تحول هذه القيمة إلى الجهد المطبق بواسطة مستشعر درجة الحرارة على طرف الإشارة تقوم الخطوة الآنية بتحويل الجهد إلى درجات مئوية، وفق الصبغة الخاصة بهذا النوع من المستشعرات. * 1000 = float(temperature_value) temperature value voltage = (temperature value / 1024 * 5 temperature = (voltage - 0.5 + 100 moisture = (1.0 - float(moisture_value)) . 100 تحويل درجة الحرارة إلى درجات مئوية، وتحويل مستوى الرطوبة إلى نسبة مئوية حرارة البليد
أنشئ تكرار لا نهائيا وقم بكتابة الأوامر البرمجية أدناه
ادخال شروط درجة الحرارة والرطوبة اللازمة لري النبات if (temperature >= 24.0) and (moisture <= 40.0): water_plant(dc_motor_pin) اذا كانت درجة الحرارة أعلى من 24 درجة مئوية وكان مستوى بطلة المة ري النبات. رطوبة التربية أقل من 40 إنشاء رسائل تقارير تعرض من خلال الواجهة الظرفية عند تشغيل البرنامج وجمع البيانات. temperature_report = "Temperature : " + str(temperature) moisture_report = "Moisture : " . str(round(moisture, 2) "C" print(temperature_report) print(moisture_report) import time import pyfirmata board pyfirmata. Arduino ('COM4') it pyfirmata.util.Iterator(board) it.start() صرات التعليم moze pin board. get_pin( 'a:3:0') البرنامج بشكله النهائي Complete Code
إدخال شروط درجة الحرارة والرطوبة اللازمة لري النبات
temperature sensor pin board.get_pan('a:2:1') moisture sensor pinboard.get_pin('a:4:1') def water plant (dc_motor_pin): print("Watering plant ---") de_motor_pin.write(1) time.sleep(5) de_motor_pin.write(0) while True: temperature value = temperature sensor pin.read() moisture_value = moisture sensor_pin.read() if (temperature value is not None) and (moisture value is not None): temperature_value = float(temperature value) + 1000 voltage (temperature_value1024) + 5 temperature (voltage 0.5) + 100 moisture (1.0 float(moisture_value)) * 100 if (temperature >= 24.0) and (moisture <= 40.0): water plant (dc_motor_pin) temperature report = "Temperature: " ⚫ str(temperature) " C" moisture report = "Moisture : " + str(round(moisture, 2)) + "%" " درات البليد print(temperature_report) print(moisture report) time.sleep(10)
البرنامج بشكله النهائي
1 تمرينات هل تعتقد أن استخدام الإخراج الناظري مواسطة تضمين عرض البضة (PM) أكثر كفاءة في التحكم بمحرك التيار المستمرة فر اجابتك أدناء. بالنظر إلى عدد أطراف الإدخال والإخراج في الأردوينو والمايكرويت (micro : bit)، أي منهما بعد أفضل كجهاز تحكم دقيق في نظام الحديقة الذكية اعرض أفكارك أبناء اشرح سيب معالجة قيم ادخال المستمر المأخوذة من الأطراف الخاطرية باستخدام صيغه رياضية مختلفة اعتمادا على المستعرة دارة الم
هل تعتقد أن استخدام الإخراج التناظري بواسطة تضمني عرض النبضة (PWM) أكثر كفاءة في التحكم بمحرك التيار المستمر
بالنظر إلى عدد أطراف الإدخال والإخراج في الأردوينو والمايكروبت (micro : bit) أي منهما يعد أفضل كجهاز تحكم دقيق في نظام الحديقة الذكية
اشرح سبب معالجة قيم إدخال المستشعر المأخوذة من الأطراف التناظرية باستخدام صيغة رياضية مختلفة اعتمادا على المستشعر
ما أهمية اجراء عمليات فحص المبيانات المجمعة المعرفة ما اذا كان المستشعرات ترسل بيانات فارغة أو تالفة؟ 5 هل تعتقد أن استخدام محرك السير في (Servo motor) هو الأفضل لزي النيانات بشكل أكثر دقة وكفاءة. اعرض أفكارك أدناه. 6 قم بإعادة كتابة برنامج البايتون باستخدام أوامر الطباعة لإنشاء تقرير حول قراءات البيئة المحيطة كل 30 ثانية جرارة السليم