البرنامج بشكله النهائي Complete Code - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: البرنامج بشكله النهائي Complete Code

📚 معلومات الصفحة

الكتاب: كتاب إنترنت الأشياء - الصف 11 - الفصل 1 | المادة: إنترنت الأشياء | المرحلة: الصف 11 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 التحكم في ري النباتات باستخدام الأردوينو

المفاهيم الأساسية

شرط الري: إذا كانت درجة الحرارة أعلى من 24 درجة مئوية، وكان مستوى الرطوبة أقل من 40%، فستُنشط آلية ري النباتات.

خريطة المفاهيم

```markmap

تطوير وبرمجة الأردوينو

مشروع الحديقة الذكية بالأردوينو

المكونات المطلوبة

  • مستشعر الحرارة (Temperature Sensor)

توصيل المكونات

#### توصيل مستشعر درجة الحرارة

  • توصيل طرف Power (الطاقة) للمستشعر بالعمود الموجب في لوحة التوصيل (سلك أحمر).
  • توصيل طرف Vout (الجهد) للمستشعر بالطرف التناظري A2 في الأردوينو (سلك أخضر).
  • توصيل طرف GND (الأرضي) للمستشعر بالعمود السالب في لوحة التوصيل (سلك أسود).
  • #### توصيل مستشعر رطوبة التربة

  • توصيل طرف Power (الطاقة) للمستشعر بالعمود الموجب في لوحة التوصيل (سلك أحمر).
  • توصيل طرف GND (الأرضي) للمستشعر بالعمود السالب في لوحة التوصيل (سلك أسود).
  • توصيل طرف Signal (الإشارة) للمستشعر بالطرف التناظري A4 في الأردوينو (سلك أخضر).
  • #### الدائرة بصورتها النهائية

    • توصيل الأطراف بالمكونات
    • المكونات المتصلة:
    - مستشعر رطوبة التربة (Soil Moisture Sensor)

    - ترانزستور (TMP)

    - محرك (Motor)

    #### الدائرة المادية (Physical Circuit)

    • صورة الدائرة بمكوناتها المادية
    • المكونات الظاهرة:
    - مستشعر رطوبة التربة (Capacitive Soil Moisture Sensor v1.2)

    - لوحة الأردوينو (Arduino Uno R3)

    - لوحة التوصيل (Breadboard)

    - محرك التيار المستمر (DC Motor)

    برمجة المكونات

    #### الخطوات البرمجية

  • استدعاء المكتبات المطلوبة (pyfirmata, time)
  • تكوين منفذ الاتصال والأطراف (COM4، محرك DC، مستشعر درجة الحرارة، مستشعر الرطوبة)
  • إعداد الاتصال بين PyFirmata ولوحة الأردوينو
  • تنفيذ دالة التحكم في محرك التيار المستمر (water_plant)
  • #### استكشاف الأخطاء وإصلاحها

    ##### التحقق من صحة بيانات المستشعر

    • استخدام حلقة تكرار لا نهائية (`while True`)
    • قراءة القيم غير المعالجة من الأطراف التناظرية
    • إضافة شرط `if` للتحقق من أن القيم ليست `None`
    ##### معالجة وتحويل البيانات

    • تحويل قيمة درجة الحرارة إلى درجات مئوية
    • تحويل مستوى الرطوبة إلى نسبة مئوية
    ##### إدخال شروط الري

    • كتابة شرط التحكم في الري:
    ```python

    if (temperature >= 24.0) and (moisture <= 40.0):

    water_plant(dc_motor_pin)

    ```

    ##### إنشاء تقارير البيانات

    • إنشاء رسائل نصية تعرض القيم المقروءة:
    ```python

    temperature_report = "Temperature : " + str(temperature) + " C"

    moisture_report = "Moisture : " + str(round(moisture, 2)) + "%"

    ```

    • طباعة التقارير في الواجهة الطرفية:
    ```python

    print(temperature_report)

    print(moisture_report)

    ```

    #### البرنامج بشكله النهائي (Complete Code)

    • استيراد المكتبات (`import time`, `import pyfirmata`)
    • تهيئة الاتصال بلوحة الأردوينو (`board = pyfirmata.Arduino('COM4')`)
    • تهيئة مكرر البيانات (`it = pyfirmata.util.Iterator(board)`)
    • بدء المكرر (`it.start()`)
    • تعريف طرف محرك التيار المستمر (`dc_motor_pin = board.get_pin('d:3:o')`)
    ```

    نقاط مهمة

    • يتم تنشيط آلية ري النباتات عند استيفاء شرطين معًا: درجة حرارة أعلى من أو تساوي 24 درجة مئوية، ومستوى رطوبة أقل من أو يساوي 40%.
    • يتم عرض قراءات المستشعرات في الواجهة الطرفية على شكل رسائل نصية واضحة (مثال: `Temperature : 25.0 C`).
    • البرنامج النهائي يبدأ باستيراد المكتبات الضرورية وتهيئة الاتصال مع لوحة الأردوينو قبل تنفيذ حلقة القراءة والتحكم.

    📋 المحتوى المنظم

    📖 محتوى تعليمي مفصّل

    نوع: محتوى تعليمي

    if (temperature >= 24.0) and (moisture <= 40.0): water_plant(dc_motor_pin)

    نوع: محتوى تعليمي

    إذا كانت درجة الحرارة أعلى من 24 درجة مئوية، وكان مستوى الرطوبة أقل من 40%، فستُنشط آلية ري النباتات.

    نوع: محتوى تعليمي

    temperature_report = "Temperature : " + str(temperature) + " C" moisture_report = "Moisture : " + str(round(moisture, 2)) + "%" print(temperature_report) print(moisture_report)

    البرنامج بشكله النهائي Complete Code

    نوع: محتوى تعليمي

    import time import pyfirmata board = pyfirmata.Arduino('COM4') it = pyfirmata.util.Iterator(board) it.start() dc_motor_pin = board.get_pin('d:3:o')

    نوع: NON_EDUCATIONAL

    وزارة التعليم Ministry of Education 2025 - 1447

    📄 النص الكامل للصفحة

    if (temperature >= 24.0) and (moisture <= 40.0): water_plant(dc_motor_pin) إذا كانت درجة الحرارة أعلى من 24 درجة مئوية، وكان مستوى الرطوبة أقل من 40%، فستُنشط آلية ري النباتات. temperature_report = "Temperature : " + str(temperature) + " C" moisture_report = "Moisture : " + str(round(moisture, 2)) + "%" print(temperature_report) print(moisture_report) --- SECTION: البرنامج بشكله النهائي Complete Code --- import time import pyfirmata board = pyfirmata.Arduino('COM4') it = pyfirmata.util.Iterator(board) it.start() dc_motor_pin = board.get_pin('d:3:o') وزارة التعليم Ministry of Education 2025 - 1447

    🎴 بطاقات تعليمية للمراجعة

    عدد البطاقات: 3 بطاقة لهذه الصفحة

    في برنامج إنترنت الأشياء لري النباتات، ما الشرط الذي يجب تحقيقه لتفعيل محرك الري (DC Motor)؟

    • أ) أن تكون درجة الحرارة أقل من 24 درجة مئوية، ومستوى الرطوبة أعلى من 40%.
    • ب) أن تكون درجة الحرارة أعلى من 24 درجة مئوية فقط، بغض النظر عن مستوى الرطوبة.
    • ج) أن تكون درجة الحرارة أعلى من أو تساوي 24 درجة مئوية، ومستوى الرطوبة أقل من أو يساوي 40%.
    • د) أن يكون مستوى الرطوبة أقل من 40% فقط، بغض النظر عن درجة الحرارة.

    الإجابة الصحيحة: c

    الإجابة: أن تكون درجة الحرارة أعلى من أو تساوي 24 درجة مئوية، ومستوى الرطوبة أقل من أو يساوي 40%.

    الشرح: 1. الشرط مكتوب في الكود باستخدام عبارة if. 2. الشرط هو: (temperature >= 24.0) and (moisture <= 40.0). 3. هذا يعني أن النظام سيقوم بري النبات فقط عندما تكون درجة الحرارة مرتفعة (24 درجة أو أكثر) والتربة جافة (رطوبة 40% أو أقل).

    تلميح: فكر في العاملين البيئيين اللذين يتحكمان في عملية الري الآلي.

    التصنيف: مفهوم جوهري | المستوى: متوسط

    في سياق برمجة إنترنت الأشياء باستخدام Python و Arduino، ما الغرض من الدالة `round(moisture, 2)` في الكود المعطى؟

    • أ) تحويل قيمة الرطوبة من نسبة مئوية إلى كسر عشري.
    • ب) تقريب قيمة متغير الرطوبة (moisture) إلى منزلتين عشريتين.
    • ج) تحديد ما إذا كانت قيمة الرطوبة ضمن النطاق المسموح به.
    • د) ضرب قيمة الرطوبة في العدد 2 لحساب متوسط القياس.

    الإجابة الصحيحة: b

    الإجابة: تقريب قيمة متغير الرطوبة (moisture) إلى منزلتين عشريتين.

    الشرح: 1. الدالة `round()` في Python تستخدم لتقريب الأعداد. 2. المعامل الأول هو الرقم المراد تقريبه (moisture). 3. المعامل الثاني (2) يحدد عدد المنازل العشرية المطلوبة بعد الفاصلة. 4. الهدف هو جعل قراءة نسبة الرطوبة أكثر وضوحاً ودقة عند عرضها للمستخدم.

    تلميح: تأمل في الدالة `round()` وكيفية عرض البيانات الرقمية للمستخدم.

    التصنيف: تعريف | المستوى: سهل

    ما الوظيفة الأساسية للسطر `it = pyfirmata.util.Iterator(board)` في برنامج إنترنت الأشياء المعتمد على Arduino؟

    • أ) إيقاف جميع العمليات على لوحة Arduino مؤقتاً.
    • ب) إنشاء كائن Iterator لقراءة البيانات من المداخل التناظرية (Analog Inputs) للوحة Arduino بشكل مستمر.
    • ج) تعريف منفذ اتصال (مثل COM4) للوحة Arduino.
    • د) تهيئة محرك التيار المستمر (DC Motor) للعمل.

    الإجابة الصحيحة: b

    الإجابة: إنشاء كائن Iterator لقراءة البيانات من المداخل التناظرية (Analog Inputs) للوحة Arduino بشكل مستمر.

    الشرح: 1. المكتبة `pyfirmata` تسمح للـ Python بالتحكم في Arduino. 2. الـ Iterator هو كائن مسؤول عن إنشاء حلقة قراءة (loop) للبيانات القادمة من المداخل التناظرية. 3. بدونه، لن تتمكن البرامج من قراءة قيم الحساسات (مثل حساس الحرارة والرطوبة) بشكل صحيح ومستمر. 4. السطر `it.start()` يبدأ عملية القراءة هذه.

    تلميح: فكر في كيفية قراءة البيانات من الحساسات المتصلة بالوحة.

    التصنيف: مفهوم جوهري | المستوى: صعب