Programming the Arduino - كتاب إنترنت الأشياء - الصف 11 - الفصل 1 - المملكة العربية السعودية

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

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

الدرس: Programming the Arduino

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

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

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

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

📝 ملخص الصفحة

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

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

StandardFirmata: بروتوكول لتكوين قناة اتصال بين لوحة الأردوينو وبرنامج بايثون.

paho-mqtt: حزمة في بايثون للتواصل مع وسطاء (Brokers) يستخدمون بروتوكول MQTT.

pyfirmata: مكتبة في بايثون للتواصل مع لوحة الأردوينو عبر بروتوكول Firmata.

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

```markmap

7. الرسائل في إنترنت الأشياء

تصميم وبرمجة جهاز ذكي (صفحة 273)

مشروع: إدارة النفايات الذكية

#### المشكلة: اكتظاظ سكاني يؤدي لتراكم النفايات

#### الحل: استخدام حاويات نفايات ذكية

##### ترسل تنبيه عند الامتلاء

##### تحلل البيانات لتحسين العملية

#### التنفيذ: نموذج أولي لحاوية ذكية

##### يحسب متوسط مرات الاستخدام للوصول للسعة الكاملة

##### يرسل رسالة إلى وسيط (MQTT) عند كل استخدام

##### يرسل رسالة عند الامتلاء إلى متحكم النظام

#### التقنيات المستخدمة

##### متحكم أردوينو (Arduino)

##### برمجة باستخدام بروتوكول Firmata ولغة بايثون

##### منصة MQTT (مثل EMQX) لتوزيع الرسائل

مكونات وأدوات المشروع (صفحة 274)

الترانزستور الضوئي (Phototransistor)

#### الوظيفة: كشف الضوء وتحويله لإشارات كهربائية

#### الرمز التخطيطي: رمز ترانزستور مع سهمين باتجاه القاعدة

#### المظهر الفعلي: جسم بلاستيكي صغير بثلاثة أطراف ونافذة شفافة

مستشعر الإمالة (Tilt Sensor)

#### الوظيفة: قياس درجة الميل بالنسبة للجاذبية

#### الرمز التخطيطي: دائرة تحتوي على دوائر صغيرة تمثل آلية الكرة أو الزئبق

#### المظهر الفعلي: مكون مستطيل أسود بثلاثة أطراف

النموذج الأولي باستخدام الأردوينو (صفحة 275)

آلية عمل النموذج

#### مستشعر الإمالة: يسجل حدث الفتح/الإمالة في كل مرة.

#### الترانزستور الضوئي: يعمل كمستشعر عند الوصول إلى حد معين (يعني أن الحاوية مليئة).

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

#### لوحة أردوينو أونو R3

#### لوحة توصيل الدوائر الصغيرة (Breadboard)

#### ترانزستور ضوئي

#### مستشعر إمالة

#### مقاومتان (1 كيلو أوم)

الاتصال ببسيط EMXQ العام (صفحة 276)

خطوات التثبيت والاتصال

#### 1. تثبيت تطبيق MQTTX

##### زيارة موقع: https://mqttx.app/

##### تنزيل أحدث إصدار وتشغيل المثبت

#### 2. تكوين الاتصال بالوسيط (EMQX)

##### فتح تطبيق MQTTX وإنشاء اتصال جديد

##### إدخال بيانات الاتصال:

###### الاسم (Name): مثال: desktop_connection

###### المضيف (Host): mqtt://broker.emqx.io

###### المنفذ (Port): 1883

دائرة الأردوينو (صفحة 277)

تثبيت المكونات

#### 1. لوحة أردوينو أونو R3

#### 2. لوحة توصيل الدوائر الصغيرة (Breadboard)

#### 3. مستشعر الضوء (Phototransistor)

#### 4. مستشعر الإمالة بأربعة أطراف (4-pin Tilt Sensor)

#### 5. مقاومتان (Resistor)

توصيل المكونات (صفحة 278)

توصيل الترانزستور الضوئي

#### 1. الباعث (Emitter) → الطرف التناظري A0 (سلك أصفر)

#### 2. المقاومة: طرف مع الباعث، والطرف الآخر → العمود السالب للوحة

#### 3. 5V من الأردوينو → المقاومة الموجبة للوحة (سلك أحمر)

#### 4. GND من الأردوينو → العمود السالب للوحة (سلك أسود)

#### 5. المجمع (Collector) → العمود الموجب للوحة

توصيل مستشعر الإمالة

#### 1. المقاومة الثانية → الطرف الثاني للمستشعر

#### 2. الطرف الثاني للمستشعر → الطرف الرقمي 3 للأردوينو (سلك أحمر)

#### 3. الطرف الرابع للمستشعر → العمود الموجب للوحة (سلك أحمر)

#### 4. المقاومة: طرف → العمود السالب للوحة (سلك أسود)

الدائرة بشكلها النهائي (صفحة 279)

الشكل النهائي للدائرة

#### شكل 7.16: مخطط تخطيطي للدائرة الكاملة

##### يوضح لوحة أردوينو أونو متصلة بلوحة توصيل

##### يظهر المكونات: مقاومة، LED، ترانزستور

##### يظهر أسلاك التوصيل (أحمر، أصفر، أخضر، أسود، برتقالي)

#### شكل 7.17: صورة فعلية للدائرة

##### تمثل الشكل الحقيقي للدائرة عند بنائها

##### تظهر المكونات نفسها في الواقع

#### شكل 7.18: توصيل الأطراف بالمكونات

##### يوضح كيفية توصيل مكونات محددة بأطراف الأردوينو

##### يظهر مكونًا مربعًا أسود

##### يظهر مكونًا دائريًا موصولًا بالطرف D3

##### يظهر مكونًا دائريًا موصولًا بالطرف A0

برمجة الأردوينو (صفحة 280)

إعداد بيئة البرمجة

#### 1. تشغيل بروتوكول StandardFirmata على الأردوينو

#### 2. تثبيت حزمة paho-mqtt في بايثون

##### الأمر: pip install paho-mqtt

#### 3. إنشاء ملف بايثون جديد (mqtt_arduino.py)

#### 4. استيراد المكتبات المطلوبة

##### datetime: لإنشاء طوابع زمنية

##### time: للتحكم في سير البرنامج

##### json: للعمل مع كائنات JSON

##### pyfirmata: للتواصل مع الأردوينو

##### paho.mqtt.client: لإنشاء عميل MQTT

#### 5. تعريف متغيرات عميل MQTT

##### CLIENT_ID: معرف العميل (مثال: "PUBLISHER_01")

##### MQTT_BROKER: عنوان الوسيط (مثال: "broker.emqx.io")

##### TOPIC: اسم الموضوع (مثال: "waste/drops")

##### PORT: منفذ الخادم الافتراضي (1883)

##### FLAG_CONNECTED: متغير إشارة للاتصال

```

نقاط مهمة

  • الخطوة الأولى هي تحميل بروتوكول StandardFirmata على لوحة الأردوينو لتمكين الاتصال مع بايثون.
  • يتم تثبيت مكتبة `paho-mqtt` في بيئة بايثون باستخدام الأمر `pip install paho-mqtt`.
  • المكتبات الأساسية المستخدمة في البرنامج هي: `datetime`, `time`, `json`, `pyfirmata`, و `paho.mqtt.client`.
  • يجب تعريف مجموعة من المتغيرات لتهيئة عميل MQTT، تشمل: معرف العميل، عنوان الوسيط، الموضوع، المنفذ، ومؤشر حالة الاتصال.

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

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

Programming the Arduino

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

برمجة الأردوينو ستبدأ بتعميل بروتوكول StandardFirmata من خلال بيئة عمل IDE لـ Arduino لإعداد قناة اتصال بين الأردوينو والبرنامج الذي ستقوم بكتابته بلغة البرمجة البايثون (Python).

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

افتح PyCharm وقم بتثبيت حزمة paho-mqtt من خلال نظام إدارة الحزم (pip). في PyCharm، افتح الواجهة الطرفية (Terminal) في مجلد عملك، واكتب الأمر الآتي:

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

pip install paho-mqtt

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

قم بإنشاء ملف بايثون جديد باسم mqtt_arduino.py، ثم في بداية مقطعك البرمجي، قم باستيراد الحزم الآتية:

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

• datetime: إنشاء طوابع زمنية للرسائل التي نرسلها. • time: التحكم في سير البرنامج. • json: العمل مع كائنات JSON. • pyfirmata: التواصل مع لوحة الأردوينو من خلال بروتوكول Firmata. • paho.mqtt.client: إنشاء عملاء للتواصل مع وسطاء MQTT.

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

from datetime import datetime import time import json import pyfirmata import paho.mqtt.client as mq

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

أنشئ المتغيرات الآتية التي ستستخدم لعميل MQTT الذي ستنشئه. سيكون اسم العميل CLIENT_ID، أما MQTT_BROKER فهو عنوان الوسيط العام الذي توفره EMXQ الذي ستتصل به. ويشير TOPIC إلى اسم الموضوع الذي سيشترك فيه العميل. يشير PORT إلى منفذ الخادم الافتراضي للاتصال بالوسيط. وختاماً فإن FLAG_CONNECTED سيستخدم كمتغير إشارة في دالة معالج الأحداث لاحقاً.

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

# Variables to setup MQTT client CLIENT_ID = "PUBLISHER_01" # ID of the client MQTT_BROKER = "broker.emqx.io" # Address of the broker TOPIC = "waste/drops" # Topic to subscribe to PORT = 1883 # Default server port FLAG_CONNECTED = False # Connection flag

نوع: METADATA

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

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

--- SECTION: Programming the Arduino --- برمجة الأردوينو ستبدأ بتعميل بروتوكول StandardFirmata من خلال بيئة عمل IDE لـ Arduino لإعداد قناة اتصال بين الأردوينو والبرنامج الذي ستقوم بكتابته بلغة البرمجة البايثون (Python). افتح PyCharm وقم بتثبيت حزمة paho-mqtt من خلال نظام إدارة الحزم (pip). في PyCharm، افتح الواجهة الطرفية (Terminal) في مجلد عملك، واكتب الأمر الآتي: pip install paho-mqtt قم بإنشاء ملف بايثون جديد باسم mqtt_arduino.py، ثم في بداية مقطعك البرمجي، قم باستيراد الحزم الآتية: • datetime: إنشاء طوابع زمنية للرسائل التي نرسلها. • time: التحكم في سير البرنامج. • json: العمل مع كائنات JSON. • pyfirmata: التواصل مع لوحة الأردوينو من خلال بروتوكول Firmata. • paho.mqtt.client: إنشاء عملاء للتواصل مع وسطاء MQTT. from datetime import datetime import time import json import pyfirmata import paho.mqtt.client as mq أنشئ المتغيرات الآتية التي ستستخدم لعميل MQTT الذي ستنشئه. سيكون اسم العميل CLIENT_ID، أما MQTT_BROKER فهو عنوان الوسيط العام الذي توفره EMXQ الذي ستتصل به. ويشير TOPIC إلى اسم الموضوع الذي سيشترك فيه العميل. يشير PORT إلى منفذ الخادم الافتراضي للاتصال بالوسيط. وختاماً فإن FLAG_CONNECTED سيستخدم كمتغير إشارة في دالة معالج الأحداث لاحقاً. # Variables to setup MQTT client CLIENT_ID = "PUBLISHER_01" # ID of the client MQTT_BROKER = "broker.emqx.io" # Address of the broker TOPIC = "waste/drops" # Topic to subscribe to PORT = 1883 # Default server port FLAG_CONNECTED = False # Connection flag وزارة التعليم Ministry of Education 2025 - 1447 280

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

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

ما الغرض الأساسي من استخدام حزمة `pyfirmata` في برمجة مشروع إنترنت الأشياء الذي يربط الأردوينو بلغة بايثون؟

  • أ) إنشاء طوابع زمنية للرسائل المرسلة.
  • ب) التحكم في توقيت وسير تنفيذ البرنامج.
  • ج) التواصل مع لوحة الأردوينو من خلال بروتوكول Firmata.
  • د) إنشاء عملاء للتواصل مع وسطاء MQTT.

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

الإجابة: التواصل مع لوحة الأردوينو من خلال بروتوكول Firmata.

الشرح: 1. حزمة `pyfirmata` هي مكتبة بايثون. 2. وظيفتها الرئيسية هي تمكين البرنامج المكتوب بلغة بايثون من التفاعل مع لوحة الأردوينو. 3. تحقق ذلك من خلال تنفيذ بروتوكول Firmata على اللوحة، والذي يعمل كوسيط للتواصل.

تلميح: هذه الحزمة تختص بالتواصل مع جهاز مادي محدد.

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

في سياق برمجة عميل MQTT بلغة بايثون، ما هو الدور الذي يقوم به الوسيط (Broker) الذي يُعرّف بعنوان `broker.emqx.io`؟

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

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

الإجابة: هو الخادم المركزي الذي يتلقى الرسائل من الناشرين ويوزعها على المشتركين المهتمين.

الشرح: 1. في بنية MQTT، الوسيط (Broker) هو نقطة الاتصال المركزية. 2. يستقبل جميع الرسائل من العملاء الناشرين (Publishers). 3. يقوم بتصفية هذه الرسائل بناءً على الموضوع (Topic) وإعادة توجيهها إلى جميع العملاء المشتركين (Subscribers) المهتمين بذلك الموضوع.

تلميح: يفكر في كيان وسيط يدير تدفق الرسائل بين الأجهزة.

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

ما هي الخطوة الأولى المذكورة لإعداد قناة اتصال بين الأردوينو وبرنامج بايثون في مشروع إنترنت الأشياء؟

  • أ) إنشاء ملف بايثون جديد باسم mqtt_arduino.py.
  • ب) تثبيت حزمة paho-mqtt باستخدام الأمر pip install.
  • ج) تحميل بروتوكول StandardFirmata على لوحة الأردوينو باستخدام بيئة Arduino IDE.
  • د) استيراد مكتبات datetime و time و json في بداية كود بايثون.

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

الإجابة: تحميل بروتوكول StandardFirmata على لوحة الأردوينو باستخدام بيئة Arduino IDE.

الشرح: 1. الخطوة التمهيدية هي تحضير لوحة الأردوينو. 2. يتم ذلك عن طريق فتح بيئة تطوير Arduino (IDE). 3. ثم تحميل برنامج خاص يسمى StandardFirmata على اللوحة. 4. يعمل هذا البرنامج كبرنامج وسيط (برمجيات وسيطة) يسمح للبرامج الخارجية (مثل برنامج بايثون) بالتحكم في دخل/خرج اللوحة.

تلميح: تتعلق هذه الخطوة بإعداد الجهاز المادي (الأردوينو) نفسه قبل كتابة كود بايثون.

التصنيف: صيغة/خطوات | المستوى: سهل

في الكود البرمجي الموضح، ما هي المكتبة المستوردة تحت الاسم المختصر `mq`؟

  • أ) مكتبة pyfirmata.
  • ب) مكتبة json.
  • ج) مكتبة paho.mqtt.client.
  • د) مكتبة datetime.

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

الإجابة: مكتبة paho.mqtt.client.

الشرح: 1. في سطر الاستيراد `import paho.mqtt.client as mq`، يتم استيراد الوحدة النمطية (module) الكاملة المسماة `paho.mqtt.client`. 2. الكلمة الأساسية `as` تُستخدم لإنشاء اسم بديل (alias) لهذه الوحدة النمطية داخل الكود. 3. لذلك، الاسم المختصر `mq` يشير إلى مكتبة `paho.mqtt.client`.

تلميح: انظر إلى سطر الاستيراد الذي يستخدم الكلمة الأساسية `as` لإنشاء اسم مختصر.

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