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

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

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

الدرس: التفاعل مع الأطراف الرقمية

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

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

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

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

📝 ملخص الصفحة

📚 التفاعل مع الأطراف الرقمية والتناظرية

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

التفاعل مع الأطراف الرقمية: قراءة وكتابة قيم ثنائية (0 أو 1) من وإلى أطراف محددة.

التفاعل مع الأطراف التناظرية: قراءة وكتابة قيم متغيرة (مثل 0.75) من وإلى أطراف محددة.

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

```markmap

تطبيقات على المتحكمات الدقيقة

إنشاء تطبيق سحابي لإنترنت الأشياء

أهداف التعلم

#### • استخدام البايثون وبروتوكول PyFirmata لبرمجة الأردوينو.

برمجة الأردوينو بالبايثون (pyfirmata)

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

#### 1. تثبيت حزمة pyfirmata

##### • الأمر في Terminal: pip install pyfirmata

#### 2. استدعاء المكتبة في الكود

##### • import pyfirmata

#### 3. تحديد منفذ الاتصال

##### • communication_port = "COM4" (يختلف حسب الجهاز)

#### 4. إجراء الاتصال والوصول للأطراف

##### • board = pyfirmata.Arduino(communication_port)

##### • it = pyfirmata.util.Iterator(board)

##### • it.start()

#### 5. استخدام حلقة لا نهائية

##### • while True:

##### • # كتابة الأوامر هنا

ملاحظة تقنية

#### • يشغل البرنامج على الحاسوب، وليس على الأردوينو، مما يتيح الوصول إلى وظائف قد لا تتوفر في جهاز التحكم الدقيق.

الوظيفة الأساسية: board.get_pin()

#### • وظيفتها: قراءة وكتابة القيم للأطراف التناظرية والرقمية.

#### • معاملاتها: ثلاثة أحرف تفصل بينها نقطتان رأسيتان (a:d:5)

##### • المعامل الأول: نوع الطرف

###### • 'a': طرف تناظري (analog)

###### • 'd': طرف رقمي (digital)

##### • المعامل الثاني: رقم الطرف

###### • الأطراف الرقمية: من 0 إلى 12

###### • الأطراف التناظرية: من A0 إلى A5

##### • المعامل الثالث: طريقة التعامل

###### • للأطراف الرقمية:

####### • 'i': input (مدخلات)

####### • 'o': output (مخرجات)

###### • للأطراف التناظرية:

####### • 'i': input (مدخلات)

####### • 'p': Pulse Width Modulation (تضمين عرض النبضة)

تضمين عرض النبضة (PWM)

#### • تعريف: تعديل إشارة رقمية لمحاكاة إشارة تناظرية متغيرة القوة.

#### • دورة العمل (Duty Cycle): النسبة المئوية للزمن الذي تكون فيه الإشارة عالية (5v) خلال فترة زمنية واحدة.

##### • analogWrite(0): 0% دورة عمل (إشارة منخفضة دائمًا)

##### • analogWrite(64): 25% دورة عمل

##### • analogWrite(127): 50% دورة عمل

##### • analogWrite(191): 75% دورة عمل

##### • analogWrite(255): 100% دورة عمل (إشارة عالية دائمًا)

التفاعل مع الأطراف الرقمية

#### • قراءة قيمة من طرف رقمي (مثال: الطرف 10)

##### • digital_pin = board.get_pin("d:10:i")

##### • pin_value = digital_pin.read()

#### • كتابة قيمة إلى طرف رقمي (مثال: الطرف 10)

##### • digital_pin = board.get_pin("d:10:o")

##### • digital_pin.write(1) # قيمة HIGH

##### • digital_pin.write(0) # قيمة LOW

التفاعل مع الأطراف التناظرية

#### • قراءة قيمة من طرف تناظري (مثال: الطرف 4)

##### • analog_pin = board.get_pin("a:4:i")

##### • pin_value = analog_pin.read()

#### • كتابة قيمة إلى طرف تناظري (مثال: الطرف 4)

##### • analog_pin = board.get_pin("a:4:p")

##### • analog_pin.write(0.75)

ملاحظة عامة

#### • يتطلب كل مستشعر أو مشغل قيماً مختلفة ليعمل بصورة صحيحة.

```

نقاط مهمة

  • الفرق الأساسي: الأطراف الرقمية تتعامل مع قيم ثنائية (0 أو 1)، بينما الأطراف التناظرية تتعامل مع قيم متغيرة (مثل 0.75).
  • بناء الجملة: استخدام `board.get_pin()` مع معاملات محددة (`d:10:i` للقراءة الرقمية، `a:4:p` للكتابة التناظرية).
  • القيم: القيمة `1` تعني HIGH للطرف الرقمي، والقيمة `0.75` مثال على قيمة للطرف التناظري.
  • تطبيق عملي: القيم المكتوبة تختلف حسب نوع المستشعر أو المشغل المستخدم.

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

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

التفاعل مع الأطراف الرقمية

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

Interacting with Digital Pins

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

قراءة قيمة من الطرف الرقمي 10 (digital pin 10) . digital_pin = board.get_pin("d:10:i") pin_value = digital_pin.read()

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

كتابة قيمة إلى الطرف الرقمي 10 (digital pin 10) . digital_pin = board.get_pin("d:10:o") digital_pin.write(1) digital_pin.write(0)

التفاعل مع الأطراف التناظرية

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

Interacting with Analog Pins

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

قراءة قيمة من الطرف التناظري 4 (analog pin 4) . analog_pin = board.get_pin("a:4:i") pin_value = analog_pin.read()

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

كتابة قيمة إلى الطرف التناظري 4 (analog pin 4) . analog_pin = board.get_pin("a:4:p") analog_pin.write(0.75)

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

يتطلب كل مستشعر أو مشغل قيماً مختلفة ليعمل بصورة صحيحة.

الشكل 4.7: الاختلاف بين قراءة البيانات من الأطراف الرقمية والأطراف التناظرية

نوع: FIGURE_REFERENCE

Figure 4.7: Difference between reading digital and analog pins.

نوع: NON_EDUCATIONAL

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

نوع: METADATA

124

🔍 عناصر مرئية

Figure 4.7: Difference between reading digital and analog pins.

Diagram illustrating digital and analog pins, including an Arduino board, a conceptual representation of analog pins with values 1, 3, 8, 25, and a conceptual representation of digital pins with LOW (0) and HIGH (1) states.

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

--- SECTION: التفاعل مع الأطراف الرقمية --- Interacting with Digital Pins قراءة قيمة من الطرف الرقمي 10 (digital pin 10) . digital_pin = board.get_pin("d:10:i") pin_value = digital_pin.read() كتابة قيمة إلى الطرف الرقمي 10 (digital pin 10) . digital_pin = board.get_pin("d:10:o") digital_pin.write(1) digital_pin.write(0) --- SECTION: التفاعل مع الأطراف التناظرية --- Interacting with Analog Pins قراءة قيمة من الطرف التناظري 4 (analog pin 4) . analog_pin = board.get_pin("a:4:i") pin_value = analog_pin.read() كتابة قيمة إلى الطرف التناظري 4 (analog pin 4) . analog_pin = board.get_pin("a:4:p") analog_pin.write(0.75) يتطلب كل مستشعر أو مشغل قيماً مختلفة ليعمل بصورة صحيحة. --- SECTION: الشكل 4.7: الاختلاف بين قراءة البيانات من الأطراف الرقمية والأطراف التناظرية --- Figure 4.7: Difference between reading digital and analog pins. وزارة التعليم Ministry of Education 2025 - 1447 124 --- VISUAL CONTEXT --- **DIAGRAM**: Figure 4.7: Difference between reading digital and analog pins. Description: Diagram illustrating digital and analog pins, including an Arduino board, a conceptual representation of analog pins with values 1, 3, 8, 25, and a conceptual representation of digital pins with LOW (0) and HIGH (1) states. Data: Conceptual representation of pin states and values. Key Values: Digital HIGH = 1, Digital LOW = 0, Analog pin write value = 0.75 Context: Illustrates the fundamental difference between digital pins (binary states) and analog pins (variable values) in microcontrollers like Arduino.

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

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

ما هو الغرض من استخدام الدالة `board.get_pin("d:10:i")` في برمجة إنترنت الأشياء؟

  • أ) تهيئة الطرف الرقمي 10 ليكون في وضع الإخراج (Output) لكتابة قيمة إليه.
  • ب) تهيئة الطرف التناظري 10 ليكون في وضع الإدخال (Input) لقراءة قيمته.
  • ج) تهيئة الطرف الرقمي 10 ليكون في وضع الإدخال (Input) لقراءة قيمته.
  • د) قراءة القيمة الحالية من الطرف الرقمي 10 دون الحاجة لتهيئته أولاً.

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

الإجابة: تهيئة الطرف الرقمي 10 ليكون في وضع الإدخال (Input) لقراءة قيمته.

الشرح: 1. الدالة `board.get_pin()` تستخدم لتهيئة طرف معين على اللوحة الإلكترونية. 2. الوسيط `"d:10:i"` يحدد: 'd' للرقمي، '10' لرقم الطرف، 'i' لوضع الإدخال. 3. النتيجة: يصبح الطرف جاهزاً لقراءة الحالة (HIGH/LOW) من مستشعر أو مفتاح.

تلميح: يرمز الحرف 'i' في نهاية السلسلة النصية إلى وظيفة محددة للطرف.

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

ما الفرق الأساسي في كتابة القيمة إلى طرف رقمي مقابل طرف تناظري باستخدام مكتبة مثل `pyFirmata`؟

  • أ) يتم الكتابة للطرف الرقمي بقيم متدرجة، بينما للطرف التناظري بقيم ثنائية.
  • ب) لا يوجد فرق، فكلاهما يستخدم الدالة `write()` بنفس الطريقة.
  • ج) يتم الكتابة للطرف الرقمي بقيمتين منفصلتين (0 أو 1)، بينما للطرف التناظري بقيمة متدرجة (مثل 0.75).
  • د) يتم الكتابة للطرف الرقمي باستخدام `write()`، وللطرف التناظري باستخدام `send()`.

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

الإجابة: يتم الكتابة للطرف الرقمي بقيمتين منفصلتين (0 أو 1)، بينما للطرف التناظري بقيمة متدرجة (مثل 0.75).

الشرح: 1. الطرف الرقمي: يتعامل مع إشارات ثنائية (منفصلة). 2. يستخدم `digital_pin.write(1)` لتشغيل (HIGH) أو `digital_pin.write(0)` لإطفاء (LOW). 3. الطرف التناظري: يتعامل مع إشارات متدرجة (مستمرة). 4. يستخدم `analog_pin.write(0.75)` لتعيين قيمة بين 0 و 1 (مثل 75% من الجهد).

تلميح: فكر في طبيعة الإشارة التي يتعامل معها كل نوع من الأطراف.

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

ما هي الصيغة الصحيحة لتهيئة الطرف التناظري رقم 4 ليكون في وضع الإخراج التناظري (PWM)؟

  • أ) analog_pin = board.get_pin("d:4:o")
  • ب) analog_pin = board.get_pin("a:4:i")
  • ج) analog_pin = board.get_pin("a:4:p")
  • د) analog_pin = board.get_pin("p:4:a")

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

الإجابة: analog_pin = board.get_pin("a:4:p")

الشرح: 1. صيغة `board.get_pin()` تتبع نمطًا: `"نوع:رقم:وضع"`. 2. للطرف التناظري: النوع هو `a`. 3. رقم الطرف هو `4`. 4. لوضع الإخراج التناظري (PWM) يرمز له بـ `p`. 5. النتيجة: `"a:4:p"`.

تلميح: يجب أن تعكس الصيغة نوع الطرف (a)، رقمه (4)، ووظيفته (p).

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