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

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

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

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

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

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

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

📝 ملخص الصفحة

📚 برمجة مركبة التفتيش في نظام التخزين الآلي

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

تهيئة البطارية: ضبط أقصى طاقة للبطارية (100 وحدة) وتعيين مستواها الحالي إلى الحد الأقصى.

محاكاة الاستهلاك: تنفيذ استهلاك وحدة طاقة لفترة زمنية محددة أثناء تشغيل المركبة.

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

معالجة الرسائل: قراءة الرسائل الواردة، فصل محتواها، والرد بناءً على نوع المحتويات ("CONSUMABLES" أو "NONCONSUMABLES").

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

```markmap

أدوات محاكاة إنترنت الأشياء

برنامج كاب كاربون (CupCarbon)

مشروع محاكاة: نظام تخزين مصنع آلي (تابع)

#### إنشاء المقاطع البرمجية

##### المكتبات والتهيئة

  • استيراد مكتبة `time`.
  • طباعة نص فارغ `node.print("")` لمسح النصوص السابقة.
##### برمجة حاويات المواد القابلة للتلف

  • بث رسالة تحتوي على:
- المحتويات: "CONSUMABLES".

- معرف الحاوية (ID) بعد تحويله إلى نص.

- فصل المعلومات بمسافة.

  • استخدام دالة `node.send()` للإرسال.
##### استقبال الأوامر والاستجابة

  • قراءة الرسالة الواردة `node.read()`.
  • إذا كانت الرسالة "1": طباعة "PICK" (الالتقاط).
  • إذا كانت الرسالة "2": طباعة "DO NOT PICK" (لا تلتقط).
  • السكون لمدة ثانية `time.sleep(1)`.
##### برمجة حاويات المواد طويلة الأمد

  • بث رسالة تحتوي على:
- المحتويات: "NONCONSUMABLES".

- معرف الحاوية (ID) بعد تحويله إلى نص.

- فصل المعلومات بمسافة.

  • استخدام دالة `node.send()` للإرسال.
##### استقبال الأوامر والاستجابة

  • قراءة الرسالة الواردة `node.read()`.
  • إذا كانت الرسالة "1": طباعة "PICK" (الالتقاط).
  • إذا كانت الرسالة "2": طباعة "DO NOT PICK" (لا تلتقط).
  • السكون لمدة ثانية `time.sleep(1)`.
##### برمجة مركبة التفتيش

###### تهيئة وإدارة البطارية

  • `node.battery.setEMax(100.0)`: ضبط أقصى طاقة.
  • `node.battery.init()`: شحن البطارية إلى الحد الأقصى.
  • `node.battery.consume(1.0)`: محاكاة استهلاك الطاقة.
###### اكتشاف محطات الشحن

  • `node.isSensorDetecting()`: التحقق من وجود محطة شحن في النطاق.
  • عند الاكتشاف: استخدام `node.battery.init()` لإعادة الشحن.
###### معالجة رسائل الحاويات والرد

  • قراءة جميع الرسائل في المخزن المؤقت: `for n in range(node.bufferSize())`.
  • فصل نص الرسالة: `recvMsg.split()`.
  • الرد على الحاوية المرسلة:
- إذا كان المحتوى "CONSUMABLES": إرسال النص "1".

- إذا كان المحتوى "NONCONSUMABLES": إرسال النص "2".

  • `time.sleep(0.2)`: السكون لمدة 200 مللي ثانية لتحقيق استجابة أفضل.
```

نقاط مهمة

  • تبدأ برمجة المركبة بتهيئة سعة ومستوى بطاريتها.
  • تعمل المركبة في حلقة (`while node.loop()`) تستهلك فيها الطاقة باستمرار.
  • وظيفة المركبة الأساسية هي الاستماع لرسائل الحاويات والرد عليها بناءً على نوع محتوياتها.
  • الرد يكون بإرسال "1" للحاويات القابلة للتلف و "2" للحاويات طويلة الأمد إلى معرف الحاوية المرسل.
  • تحتاج المركبة إلى فترة سكون (200 مللي ثانية) بعد الرد لضمان استقرار التواصل مع العقد الأخرى في الشبكة.

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

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

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

هنا المقطع البرمجي الخاص بمركبة التفتيش. في البداية ستهيأ البطارية بضبط أقصى طاقة لها لتتعادل 100 وحدة طاقة باستخدام الدالة ( battery.setEMax( )). ثم ضبط مستواها الحالي إلى الحد الأقصى مع دالة .battery.init()

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

import time node.battery.setEMax(100.0) node.battery.init()

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

ستستهلك المركبة بمـرور الزمن قدرًا معينًا من الطاقة. ولمحاكاة ذلك، استخدم الدالة (1.0) battery.consume لتنفيذ استهلاك وحدة طاقة لفترة زمنية محددة.

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

while node.loop(): node.battery.consume(1.0)

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

لاكتشاف ما إذا كانت أي محطة شحن موجودة في نطاق المركبة، استخدم الدالة ( )isSensorDetecting. وعند اكتشاف محطة، استخدم ( )battery.init لشحنها إلى الحد الأقصى.

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

if node.isSensorDetecting(): node.battery.init()

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

يتمين على المركبة التحقق الآن من جميع الرسائل التي استقبلتها، ثم الرد على مرسلها (الحاويات). سيتم في البداية تخزين الفترة الفراغية في recvMsg، ثم باستخدام دالة ( split )split سيُفصل النص إلى جزأين وفقًا للمساحة المستخدمة سابقًا، على شكل مصفوفة تحتوي على محتويات الحاوية، بينما تحتفظ الخلية الثانية [1] splitMsg بمعرف الحاوية.

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

for n in range(node.bufferSize()): recvMsg = node.read() splitMsg = recvMsg.split()

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

إذا كان نص المحتوى "CONSUMABLES"، فسترسل النص "1" بواسطة دالة ( send )إلى حاوية المرسل باستخدام مرمزها. أما إذا كان نص المحتوى "NONCONSUMABLES" فسترسل النص "2". وفي الختام ستسكن لمدة 200 مللي ثانية؛ لأنها تحتاج إلى تحقيق استجابة أكثر من عقد الحاوية بصفتهما تتواصل مع المزيد من العقد.

نوع: METADATA

وزارة التعليم

نوع: METADATA

Ministry of Education 2025 - 1447

نوع: METADATA

344

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

هنا المقطع البرمجي الخاص بمركبة التفتيش. في البداية ستهيأ البطارية بضبط أقصى طاقة لها لتتعادل 100 وحدة طاقة باستخدام الدالة ( battery.setEMax( )). ثم ضبط مستواها الحالي إلى الحد الأقصى مع دالة .battery.init() import time node.battery.setEMax(100.0) node.battery.init() ستستهلك المركبة بمـرور الزمن قدرًا معينًا من الطاقة. ولمحاكاة ذلك، استخدم الدالة (1.0) battery.consume لتنفيذ استهلاك وحدة طاقة لفترة زمنية محددة. while node.loop(): node.battery.consume(1.0) لاكتشاف ما إذا كانت أي محطة شحن موجودة في نطاق المركبة، استخدم الدالة ( )isSensorDetecting. وعند اكتشاف محطة، استخدم ( )battery.init لشحنها إلى الحد الأقصى. if node.isSensorDetecting(): node.battery.init() يتمين على المركبة التحقق الآن من جميع الرسائل التي استقبلتها، ثم الرد على مرسلها (الحاويات). سيتم في البداية تخزين الفترة الفراغية في recvMsg، ثم باستخدام دالة ( split )split سيُفصل النص إلى جزأين وفقًا للمساحة المستخدمة سابقًا، على شكل مصفوفة تحتوي على محتويات الحاوية، بينما تحتفظ الخلية الثانية [1] splitMsg بمعرف الحاوية. for n in range(node.bufferSize()): recvMsg = node.read() splitMsg = recvMsg.split() إذا كان نص المحتوى "CONSUMABLES"، فسترسل النص "1" بواسطة دالة ( send )إلى حاوية المرسل باستخدام مرمزها. أما إذا كان نص المحتوى "NONCONSUMABLES" فسترسل النص "2". وفي الختام ستسكن لمدة 200 مللي ثانية؛ لأنها تحتاج إلى تحقيق استجابة أكثر من عقد الحاوية بصفتهما تتواصل مع المزيد من العقد. وزارة التعليم Ministry of Education 2025 - 1447 344

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

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

في برمجة مركبة تفتيش تعمل في بيئة إنترنت الأشياء، ما الغرض الرئيسي من استخدام الدالة `battery.init()`؟

  • أ) تقليل استهلاك الطاقة في المركبة إلى أدنى مستوى.
  • ب) ضبط مستوى الطاقة الحالي للبطارية إلى الحد الأقصى (شحنها بالكامل).
  • ج) إيقاف تشغيل جميع أجهزة الاستشعار في المركبة مؤقتًا.
  • د) تحديد السعة القصوى النظرية للبطارية فقط دون تغيير شحنها.

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

الإجابة: ضبط مستوى الطاقة الحالي للبطارية إلى الحد الأقصى (شحنها بالكامل).

الشرح: 1. تُستخدم `battery.init()` في برمجة إنترنت الأشياء لتهيئة مستوى طاقة البطارية. 2. في السياق الأول: بعد ضبط السعة القصوى (`setEMax`)، تُستخدم لتعيين المستوى الحالي إلى تلك السعة. 3. في السياق الثاني: عند اكتشاف محطة شحن، تُستخدم لشحن البطارية إلى الحد الأقصى مرة أخرى. 4. الغرض المشترك هو إعادة مستوى الطاقة إلى القيمة القصوى المحددة.

تلميح: تذكر أن الدالة تُستخدم في سياقين مختلفين في الكود المذكور.

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

في كود محاكاة مركبة التفتيش، ما الوظيفة التي تؤديها الدالة `battery.consume(1.0)` داخل حلقة `while`؟

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

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

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

الشرح: 1. تُستخدم `battery.consume()` في نماذج محاكاة إنترنت الأشياء. 2. الوسيطة `1.0` تمثل مقدار الطاقة المُستهلكة (هنا: وحدة واحدة). 3. وضعها داخل حلقة `while node.loop()` يعني تنفيذ الاستهلاك بشكل متكرر مع كل تكرار للحلقة (مع مرور الزمن المحاكى). 4. الوظيفة: محاكاة النقص التدريجي في طاقة البطارية أثناء عمل المركبة، مما يجبر النظام على البحث عن محطات شحن.

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

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

عندما تستقبل مركبة التفتيش رسالة من حاوية، كيف يتم استخراج 'معرف الحاوية' من نص الرسالة وفقًا للكود المقدم؟

  • أ) يتم البحث عن المعرف ضمن النص باستخدام الدالة `find()` واستخراج أول 5 أحرف.
  • ب) يتم تخزين المعرف مباشرة في المتغير `recvMsg` دون الحاجة إلى معالجة.
  • ج) يتم فصل نص الرسالة باستخدام `.split()`، ويُخزن المعرف في العنصر الثاني من المصفوفة الناتجة (`splitMsg[1]`).
  • د) يتم فك تشفير الرسالة أولاً، ثم أخذ آخر جزء من النص المفكوك كمعرف.

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

الإجابة: يتم فصل نص الرسالة باستخدام `.split()`، ويُخزن المعرف في العنصر الثاني من المصفوفة الناتجة (`splitMsg[1]`).

الشرح: 1. تُخزن الرسالة المستقبلة في المتغير `recvMsg`. 2. تُطبق الدالة `split()` على النص لفصله إلى أجزاء عند كل مسافة. 3. النتيجة `splitMsg` هي مصفوفة (قائمة) تحتوي هذه الأجزاء. 4. وفقًا للنص: الخلية الأولى (`splitMsg[0]`) تحتوي على 'محتويات الحاوية' (مثل CONSUMABLES). 5. الخلية الثانية (`splitMsg[1]`) تحتوي على 'معرف الحاوية' المطلوب.

تلميح: انتبه إلى ترتيب العناصر في المصفوفة بعد عملية الفصل.

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

ما الشرط الذي يجعل مركبة التفتيش ترسل الرد "1" إلى الحاوية المرسلة؟

  • أ) إذا كان مستوى طاقة البطارية أقل من 20%.
  • ب) إذا كان نص المحتوى المستخرج من الرسالة المستقبلة هو "CONSUMABLES".
  • ج) إذا لم تكتشف أي محطة شحن في النطاق لمدة دقيقة كاملة.
  • د) إذا كان معرف الحاوية المرسلة يبدأ بالرقم 1.

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

الإجابة: إذا كان نص المحتوى المستخرج من الرسالة المستقبلة هو "CONSUMABLES".

الشرح: 1. بعد فصل الرسالة (`splitMsg = recvMsg.split()`)، يُفحص محتوى الجزء الأول (`splitMsg[0]`). 2. إذا كان نص هذا المحتوى يساوي السلسلة النصية "CONSUMABLES" تمامًا. 3. عند تحقق هذا الشرط، تستخدم المركبة الدالة `send()` لإرسال النص "1" إلى الحاوية المرسلة (باستخدام المعرف المُستخرج سابقًا). 4. هذا يمثل بروتوكول اتصال محدد بين العقد في الشبكة.

تلميح: تأمل منطق البرنامج بعد عملية فصل الرسالة.

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