> <div dir="rtl"> خريطة من <a href="https://github.com/nitya">Nitya Narasimhan</a> </div>
> <div dir="rtl"> اضغط على الصورة لتكبيرها </div>
</br>
## <div dir="rtl"> اختبار ما قبل المحاضرة </div>
[<div dir="rtl"> اختبار ما قبل المحاضرة </div>](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/3)
## <div dir="rtl"> المقدمة </div>
<divdir="rtl">
يتعمق هذا الدرس في بعض المفاهيم التي تم تناولها في الدرس الأخير.
سنغطي في هذا الدرس:
* [مكونات تطبيق إنترنت الأشياء](#components-of-an-iot-application)
* [التعمق اكثر في المتحكم الدقيق](#deeper-dive-into-microcontrollers)
* [التعمق اكثر في أجهزة الكمبيوتر ذات اللوحة الواحدة](#deeper-dive-into-single-board-computers)
## مكونات تطبيقات إنترنت الأشياء
المكونان لتطبيق إنترنت الأشياء هما الإنترنت و الشيء. لنلقِ نظرة على هذين المكونين بمزيد من التفصيل.
### الشيء
![A Raspberry Pi 4](../../../../images/raspberry-pi-4.jpg)
يشير الشيء من إنترنت الأشياء إلى جهاز يمكنه التفاعل مع العالم المادي. عادةً ما تكون هذه الأجهزة أجهزة كمبيوتر صغيرة ومنخفضة السعر ، وتعمل بسرعات منخفضة وتستخدم طاقة منخفضة - على سبيل المثال ، وحدات تحكم دقيقة بسيطة بها كيلوبايت من ذاكرة الوصول العشوائي (على عكس الجيجابايت في جهاز الكمبيوتر) تعمل ببضع مئات من الميجاهرتز فقط (على عكس الجيجاهيرتز) في جهاز كمبيوتر) ، ولكن في بعض الأحيان يستهلك القليل من الطاقة بحيث يمكن تشغيلها لأسابيع أو شهور أو حتى سنوات على البطاريات.
تتفاعل هذه الأجهزة مع العالم المادي ، إما باستخدام أجهزة استشعار لجمع البيانات من محيطها أو عن طريق التحكم في المخرجات أو المحركات لإجراء تغييرات فيزيائية. المثال النموذجي لذلك هو منظم الحرارة الذكي - جهاز يحتوي على مستشعر درجة الحرارة ، ووسيلة لتعيين درجة الحرارة المرغوبة مثل قرص أو شاشة تعمل باللمس ، ووصلة بنظام تدفئة أو تبريد يمكن تشغيله عند اكتشاف درجة الحرارة خارج النطاق المطلوب. يكتشف مستشعر درجة الحرارة أن الغرفة شديدة البرودة ويقوم المشغل بتشغيل التدفئة.
![A diagram showing temperature and a dial as inputs to an IoT device, and control of a heater as an output](../../../../images/basic-thermostat.png)
هناك مجموعة كبيرة من الأشياء المختلفة التي يمكن أن تعمل كأجهزة إنترنت الأشياء ، من الأجهزة المخصصة التي تستشعر شيئًا واحدًا ، إلى الأجهزة ذات الأغراض العامة ، حتى هاتفك الذكي! يمكن للهاتف الذكي استخدام المستشعرات لاكتشاف العالم من حوله والمحركات للتفاعل مع العالم - على سبيل المثال ، باستخدام مستشعر GPS لاكتشاف موقعك ومكبر صوت لإعطائك إرشادات التنقل إلى وجهة.
✅ فكر في الأنظمة الأخرى الموجودة حولك والتي تقرأ البيانات من جهاز استشعار وتستخدمها لاتخاذ القرارات. أحد الأمثلة على ذلك هو منظم الحرارة الموجود في الفرن. هل يمكنك إيجاد المزيد؟
</br>
### الانترنت
يتكون جانب الإنترنت من التطبيقات التي يمكن لجهاز إنترنت الأشياء توصيلها لإرسال البيانات واستقبالها ، بالإضافة إلى التطبيقات الأخرى التي يمكنها معالجة البيانات من جهاز إنترنت الأشياء والمساعدة في اتخاذ قرارات بشأن الطلبات التي سيتم إرسالها إلى مشغلات أجهزة إنترنت الأشياء.
يتمثل أحد الإعدادات النموذجية في وجود نوع من الخدمة السحابية التي يتصل بها جهاز إنترنت الأشياء ، وتتولى هذه الخدمة السحابية أشياء مثل الأمان ، بالإضافة إلى تلقي الرسائل من جهاز إنترنت الأشياء ، وإرسال الرسائل مرة أخرى إلى الجهاز. ستتصل هذه الخدمة السحابية بعد ذلك بالتطبيقات الأخرى التي يمكنها معالجة بيانات المستشعر أو تخزينها ، أو استخدام بيانات المستشعر مع البيانات من الأنظمة الأخرى لاتخاذ القرارات.
لا تتصل الأجهزة دائمًا مباشرة بالإنترنت عبر شبكة WiFi أو اتصالات سلكية. تستخدم بعض الأجهزة الشبكات المتداخلة للتحدث مع بعضها البعض عبر تقنيات مثل Bluetooth ، والاتصال عبر جهاز لوحة وصل متصل بالإنترنت.
باستخدام مثال منظم الحرارة الذكي ، سيتصل منظم الحرارة باستخدام شبكة WiFi المنزلية بخدمة سحابية تعمل في السحابة. سيرسل بيانات درجة الحرارة إلى هذه الخدمة السحابية ، ومن هناك ستتم كتابتها في قاعدة بيانات بشكل يسمح لمالك المنزل بالتحقق من درجات الحرارة الحالية والسابقة باستخدام تطبيق الهاتف. ستعرف خدمة أخرى في السحابة درجة الحرارة التي يريدها صاحب المنزل ، وترسل الرسائل مرة أخرى إلى جهاز إنترنت الأشياء عبر الخدمة السحابية لإخبار نظام التدفئة بالتشغيل أو الإيقاف.
![A diagram showing temperature and a dial as inputs to an IoT device, the IoT device with 2 way communication to the cloud, which in turn has 2 way communication to a phone, and control of a heater as an output from the IoT device](../../../../images/mobile-controlled-thermostat.png)
يمكن لنسخة أكثر ذكاءً استخدام الذكاء الاصطناعي في السحابة مع بيانات من مستشعرات أخرى متصلة بأجهزة إنترنت الأشياء الأخرى مثل مستشعرات الإشغال التي تكتشف الغرف المستخدمة ، بالاضافة الى البيانات مثل الطقس وحتى التقويم الخاص بك ، لاتخاذ قرارات بشأن كيفية ضبط درجة الحرارة بطريقة ذكية. على سبيل المثال ، يمكن أن يوقف التدفئة إذا كان يقرأ من التقويم الخاص بك أنك في إجازة ، أو أيقاف التدفئة على أساس كل غرفة على حدة اعتمادًا على الغرف التي تستخدمها ، والتعلم من البيانات لتكون أكثر دقة بمرور الوقت .
![A diagram showing multiple temperature sensors and a dial as inputs to an IoT device, the IoT device with 2 way communication to the cloud, which in turn has 2 way communication to a phone, a calendar and a weather service, and control of a heater as an output from the IoT device](../../../../images/smarter-thermostat.png)
✅ ما هي البيانات الأخرى التي يمكن أن تساعد في جعل منظم الحرارة المتصل بالإنترنت أكثر ذكاءً؟
</br>
### إنترنت الأشياء على edge
على الرغم من أن انترنت الاشياء تعني الإنترنت ، إلا أن هذه الأجهزة لا تحتاج إلى الاتصال بالإنترنت. في بعض الحالات ، يمكن للأجهزة الاتصال بأجهزة "edge" - أجهزة البوابة التي تعمل على شبكتك المحلية مما يعني أنه يمكنك معالجة البيانات دون إجراء مكالمة عبر الإنترنت. يمكن أن يكون هذا أسرع عندما يكون لديك الكثير من البيانات أو يكون اتصال الإنترنت بطيئًا ، فهو يسمح لك بالعمل دون اتصال بالإنترنت حيث يكون الاتصال بالإنترنت غير ممكن كما هو الحال على متن سفينة أو في منطقة كوارث عند الاستجابة لأزمة إنسانية ، ويسمح لك الحفاظ على خصوصية البيانات. ستحتوي بعض الأجهزة على كود معالجة تم إنشاؤه باستخدام أدوات السحابة وتشغيله محليًا لجمع البيانات والاستجابة لها دون استخدام اتصال بالإنترنت لاتخاذ قرار.
أحد الأمثلة على ذلك هو جهاز منزلي ذكي مثل Apple HomePod أو Amazon Alexa أو Google Home ، والتي ستستمع إلى صوتك باستخدام نماذج AI المدربة في السحابة ، ولكنها تعمل محليًا على الجهاز. سوف "تستيقظ" هذه الأجهزة عند نطق كلمة أو عبارة معينة ، وعندها فقط ترسل كلامك عبر الإنترنت لمعالجته. سيتوقف الجهاز عن إرسال الكلام في نقطة مناسبة مثل عندما يكتشف توقفًا مؤقتًا في كلامك. كل ما تقوله قبل إيقاظ الجهاز بكلمة التنبيه ، وكل ما تقوله بعد توقف الجهاز عن الاستماع لن يتم إرساله عبر الإنترنت إلى مزود الجهاز ، وبالتالي سيكون خاصًا.
✅ فكر في سيناريوهات أخرى حيث تكون الخصوصية مهمة ، لذا من الأفضل إجراء معالجة البيانات على edge بدلاً من السحابة. كتلميح - فكر في أجهزة إنترنت الأشياء المزودة بكاميرات أو أجهزة تصوير أخرى عليها.
</br>
### أمن إنترنت الأشياء
مع أي اتصال بالإنترنت ، يعد الأمان أحد الاعتبارات المهمة. هناك مزحة قديمة مفادها أن "S in IoT تعني الأمان" - لا يوجد حرف "S" في إنترنت الأشياء ، مما يعني أنه ليس آمنًا.
تتصل أجهزة إنترنت الأشياء بالخدمة السحابية ، وبالتالي فهي آمنة فقط مثل تلك الخدمة السحابية - إذا كانت الخدمة السحابية الخاصة بك تسمح لأي جهاز بالاتصال ، فيمكن إرسال البيانات الضارة ، أو يمكن أن تحدث هجمات الفيروسات. يمكن أن يكون لهذا عواقب حقيقية للغاية حيث تتفاعل أجهزة إنترنت الأشياء وتتحكم في الأجهزة الأخرى. على سبيل المثال ، ملف <ahref="https://wikipedia.org/wiki/Stuxnet">Stuxnet worm</a> التلاعب بالصمامات في أجهزة الطرد المركزي لإتلافها. استفاد القراصنة أيضًا من <ahref="https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable">ضعف الأمن للوصول إلى أجهزة مراقبة الأطفال</a> وأجهزة المراقبة المنزلية الأخرى.
> 💁 في بعض الأحيان ، تعمل أجهزة إنترنت الأشياء والأجهزة الطرفية على شبكة معزولة تمامًا عن الإنترنت للحفاظ على خصوصية البيانات وأمانها. هذا هو المعروف باسم <a href="https://wikipedia.org/wiki/Air_gap_(networking)">air-gapping</a>.
</br>
### التعمق اكثر في المتحكم الدقيق
في الدرس الأخير ، قدمنا المتحكمات الدقيقة. دعونا الآن نلقي نظرة أعمق عليهم.
</br>
### وحدة المعالجة المركزية
وحدة المعالجة المركزية هي "عقل" المتحكم الدقيق. إنه المعالج الذي يقوم بتشغيل الكود الخاص بك ويمكنه إرسال البيانات واستقبال البيانات من أي أجهزة متصلة. يمكن أن تحتوي وحدات المعالجة المركزية (CPU) على مركز واحد أو أكثر - وحدة معالجة مركزية واحدة أو أكثر يمكنها العمل معًا لتشغيل التعليمات البرمجية الخاصة بك.
تعتمد وحدات المعالجة المركزية (CPU) على ساعة لتحديد عدة ملايين أو مليارات المرات في الثانية. تقوم كل علامة أو دورة بمزامنة الإجراءات التي يمكن أن تتخذها وحدة المعالجة المركزية. مع كل علامة ، يمكن لوحدة المعالجة المركزية تنفيذ تعليمات من أحد البرامج ، مثل استرداد البيانات من جهاز خارجي أو إجراء عملية حسابية. تسمح هذه الدورة المنتظمة بإكمال جميع الإجراءات قبل معالجة التعليمات التالية.
كلما كانت دورة الساعة أسرع ، زادت التعليمات التي يمكن معالجتها كل ثانية ، وبالتالي زادت سرعة وحدة المعالجة المركزية. يتم قياس سرعات وحدة المعالجة المركزية بـ<ahref="https://wikipedia.org/wiki/Hertz">Hertz (Hz)</a> ،وحدة قياسية حيث 1 هرتز يعني دورة واحدة أو علامة ساعة في الثانية.
> 🎓 سرعات وحدة المعالجة المركزية تُعطى غالبًا بالميغاهرتز أو الجيجاهرتز. 1 ميجا هرتز هو 1 مليون هرتز ، 1 جيجا هرتز 1 مليار هرتز.
> 💁 تنفذ وحدات المعالجة المركزية البرامج باستخدام امتداد <a href="https://wikipedia.org/wiki/Instruction_cycle">fetch-decode-execute cycle)</a> . لكل علامة ساعة ، ستقوم وحدة المعالجة المركزية بجلب التعليمات التالية من الذاكرة ، وفك تشفيرها ، ثم تنفيذها مثل استخدام وحدة المنطق الحسابي (ALU) لإضافة رقمين. ستستغرق بعض عمليات التنفيذ عدة علامات للتشغيل ، لذا ستعمل الدورة التالية عند العلامة التالية بعد اكتمال التعليمات.
![The fetch decode execute cycles showing the fetch taking an instruction from the program stored in RAM, then decoding and executing it on a CPU](../../../../images/fetch-decode-execute.png)
تتميز المتحكمات الدقيقة بسرعات ساعة أقل بكثير من أجهزة الكمبيوتر المكتبية أو المحمولة ، أو حتى معظم الهواتف الذكية. تحتوي Wio Terminal على سبيل المثال على وحدة معالجة مركزية تعمل بسرعة 120 ميجاهرتز أو 120.000.000 دورة في الثانية.
✅ يحتوي الكمبيوتر الشخصي العادي أو جهاز Mac على وحدة معالجة مركزية متعددة النوى تعمل بسرعة جيجاهرتز متعددة ، مما يعني أن الساعة تدق مليارات المرات في الثانية. ابحث في سرعة الساعة لجهاز الكمبيوتر الخاص بك وقارن عدد المرات التي تكون فيها أسرع من محطة Wio.
تقوم كل دورة على مدار الساعة بسحب الطاقة وتوليد الحرارة. كلما زادت سرعة ضربات الساعة ، زادت الطاقة المستهلكة والمزيد من الحرارة المتولدة. تحتوي أجهزة الكمبيوتر على أحواض حرارية ومراوح لإزالة الحرارة ، والتي بدونها سوف ترتفع درجة حرارتها وتغلق في غضون ثوانٍ. غالبًا ما لا تحتوي المتحكمات الدقيقة على أي منهما لأنها تعمل بشكل أكثر برودة وبالتالي فهي أبطأ بكثير. نفد التيار الكهربائي للكمبيوتر الشخصي أو البطاريات الكبيرة لبضع ساعات ، يمكن أن تعمل وحدات التحكم الدقيقة لأيام أو شهور أو حتى سنوات من البطاريات الصغيرة. يمكن أن تحتوي وحدات التحكم الدقيقة أيضًا على نوى تعمل بسرعات مختلفة ، وتتحول إلى نوى منخفضة الطاقة أبطأ عندما يكون الطلب على وحدة المعالجة المركزية منخفضًا لتقليل استهلاك الطاقة.
> 💁 تتبنى بعض أجهزة الكمبيوتر الشخصية وأجهزة Mac نفس المزيج من النوى السريعة عالية الطاقة ونواتج الطاقة المنخفضة الأبطأ ، مع التبديل لتوفير البطارية. على سبيل المثال ، يمكن لشريحة M1 في أحدث أجهزة كمبيوتر Apple المحمولة التبديل بين 4 نوى أداء و 4 نوى كفاءة لتحسين عمر البطارية أو سرعتها اعتمادًا على المهمة التي يتم تشغيلها.
✅ قم ببعض البحث: اقرأ عن وحدات المعالجة المركزية في <ahref="https://wikipedia.org/wiki/Central_processing_unit">Wikipedia CPU article </a>
### مهمة
تحقق من محطة Wio.
إذا كنت تستخدم Wio Terminal لهذه الدروس ، فحاول العثور على وحدة المعالجة المركزية. ابحث عن قسم نظرة عامة على الأجهزة في <ahref="https://www.seeedstudio.com/Wio-Terminal-p-4509.html">Wio Terminal product page </a> للحصول على صورة للأجزاء الداخلية ، وحاول العثور على وحدة المعالجة المركزية من خلال النافذة البلاستيكية الشفافة الموجودة في الخلف.
### ذاكرة
عادة ما تحتوي المتحكمات الدقيقة على نوعين من الذاكرة - ذاكرة البرنامج وذاكرة الوصول العشوائي (RAM).
ذاكرة البرنامج غير متطايرة ، مما يعني أن كل ما هو مكتوب عليها يبقى عند عدم وجود طاقة للجهاز. هذه هي الذاكرة التي تخزن كود البرنامج الخاص بك.
ذاكرة الوصول العشوائي هي الذاكرة التي يستخدمها البرنامج للتشغيل ، وتحتوي على متغيرات يخصصها برنامجك وبيانات تم جمعها من الأجهزة الطرفية. ذاكرة الوصول العشوائي متقلبة ، عندما تنقطع الطاقة تضيع المحتويات ، مما يؤدي إلى إعادة ضبط البرنامج بشكل فعال.
> 🎓 ذاكرة البرنامج تخزن الكود الخاص بك وتبقى عند انقطاع التيار الكهربائي.
> 🎓 تُستخدم ذاكرة الوصول العشوائي (RAM) لتشغيل برنامجك وتتم إعادة تعيينها عند انقطاع التيار الكهربائي
كما هو الحال مع وحدة المعالجة المركزية ، فإن الذاكرة الموجودة على وحدة التحكم الدقيقة هي أصغر من أجهزة الكمبيوتر الشخصي أو جهاز Mac. قد يحتوي جهاز الكمبيوتر العادي على 8 جيجا بايت من ذاكرة الوصول العشوائي ، أو 8000 مليون بايت ، مع مساحة كافية لكل بايت لتخزين حرف واحد أو رقم من 0-255. سيكون للمتحكم الدقيق فقط كيلو بايت (KB) من ذاكرة الوصول العشوائي ، مع كيلو بايت يبلغ 1000 بايت. تحتوي محطة Wio المذكورة أعلاه على 192 كيلو بايت من ذاكرة الوصول العشوائي ، أو 192000 بايت - أي أكثر من 40000 مرة أقل من متوسط الكمبيوتر الشخصي!
يوضح الرسم البياني أدناه اختلاف الحجم النسبي بين 192 كيلو بايت و 8 جيجابايت - تمثل النقطة الصغيرة في المنتصف 192 كيلو بايت.
![A comparison between 192KB and 8GB - more than 40,000 times larger](../../../../images/ram-comparison.png)
تخزين البرنامج أصغر أيضًا من جهاز الكمبيوتر. قد يحتوي جهاز الكمبيوتر العادي على محرك أقراص ثابت سعة 500 جيجابايت لتخزين البرنامج ، في حين أن وحدة التحكم الدقيقة قد تحتوي على كيلوبايت فقط أو ربما بضعة ميغا بايت (MB) من التخزين (1 ميجابايت تساوي 1،000 كيلو بايت ، أو 1000000 بايت). محطة Wio لديها 4 ميغا بايت من تخزين البرنامج.
✅ قم بإجراء بحث بسيط: ما مقدار ذاكرة الوصول العشوائي ومساحة التخزين التي يمتلكها الكمبيوتر الذي تستخدمه لقراءة هذا؟ كيف يقارن هذا بالمتحكم الدقيق؟
### الإدخال / الإخراج
تحتاج المتحكمات الدقيقة إلى توصيلات الإدخال والإخراج (I / O) لقراءة البيانات من أجهزة الاستشعار وإرسال إشارات التحكم إلى المشغلات. عادة ما تحتوي على عدد من دبابيس الإدخال / الإخراج للأغراض العامة (GPIO). يمكن تكوين هذه المسامير في البرنامج بحيث يتم إدخالها (أي أنها تتلقى إشارة) ، أو إخراج (ترسل إشارة).
🧠⬅️ تُستخدم دبابيس الإدخال لقراءة القيم من أجهزة الاستشعار
🧠➡️ ترسل دبابيس الإخراج التعليمات إلى المشغلات
✅ سوف تتعلم المزيد عن هذا في درس لاحق.
#### مهمة
تحقق من محطة Wio.
إذا كنت تستخدم Wio Terminal لهذه الدروس ، فابحث عن دبابيس GPIO. ابحث عن قسم Pinout diagram في ملف <ahref="https://www.seeedstudio.com/Wio-Terminal-p-4509.html">Wio Terminal product page </a> لمعرفة الدبابيس التي. تأتي Wio Terminal مع ملصق يمكنك تثبيته على ظهره بأرقام الدبوس ، لذا أضف هذا الآن إذا لم تكن قد قمت بذلك بالفعل.
### حجم فيزيائي
عادة ما تكون المتحكمات الدقيقة صغيرة الحجم ، وأصغرها <ahref="https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/">Freescale Kinetis KL03 MCU صغير بما يكفي ليلائم غمازة كرة الجولف </a> . يمكن لوحدة المعالجة المركزية في جهاز الكمبيوتر فقط قياس 40 مم × 40 مم ، وهذا لا يشمل المشتتات الحرارية والمراوح اللازمة لضمان تشغيل وحدة المعالجة المركزية لأكثر من بضع ثوانٍ دون ارتفاع درجة الحرارة ، وهي أكبر بكثير من وحدة تحكم دقيقة كاملة. إن مجموعة مطور Wio الطرفية المزودة بوحدة تحكم دقيقة وحالة وشاشة ومجموعة من التوصيلات والمكونات ليست أكبر بكثير من وحدة المعالجة المركزية Intel i9 ، وهي أصغر بكثير من وحدة المعالجة المركزية مع المشتت الحراري والمروحة!
| وحدة المعالجة المركزية Intel i9 ، المشتت الحراري والمروحة | 136 مم × 145 مم × 103 مم |
### أنظمة التشغيل
نظرًا لانخفاض سرعتها وحجم الذاكرة ، لا تقوم وحدات التحكم الدقيقة بتشغيل نظام تشغيل (OS) بمعنى سطح المكتب . يحتاج نظام التشغيل الذي يعمل على تشغيل الكمبيوتر (Windows أو Linux أو macOS) إلى قدر كبير من الذاكرة وقوة المعالجة لتشغيل المهام غير الضرورية تمامًا لوحدة التحكم الدقيقة. تذكر أن المتحكمات الدقيقة عادة ما تكون مبرمجة لأداء مهمة واحدة أو أكثر من المهام المحددة للغاية ، على عكس أجهزة الكمبيوتر ذات الأغراض العامة مثل الكمبيوتر الشخصي أو جهاز Mac الذي يحتاج إلى دعم واجهة المستخدم أو تشغيل الموسيقى أو الأفلام أو توفير أدوات لكتابة المستندات أو التعليمات البرمجية أو ممارسة الألعاب أو تصفح الانترنت.
لبرمجة متحكم دقيق بدون نظام تشغيل ، فأنت بحاجة إلى بعض الأدوات للسماح لك ببناء الكود الخاص بك بطريقة يمكن للميكروكونترولر تشغيلها ، باستخدام واجهات برمجة التطبيقات التي يمكنها التحدث إلى أي أجهزة طرفية. يختلف كل متحكم عن الآخر ، لذا فإن الشركات المصنعة تدعم عادةً الأطر القياسية التي تسمح لك باتباع "وصفة" قياسية لبناء الكود الخاص بك وتشغيله على أي متحكم يدعم هذا الإطار.
يمكنك برمجة وحدات التحكم الدقيقة باستخدام نظام تشغيل - يشار إليه غالبًا باسم نظام التشغيل في الوقت الفعلي (RTOS) ، حيث تم تصميمه للتعامل مع إرسال البيانات من وإلى الأجهزة الطرفية في الوقت الفعلي. تتميز أنظمة التشغيل هذه بأنها خفيفة الوزن للغاية وتوفر ميزات مثل:
* خيوط متعددة ، مما يسمح للكود الخاص بك بتشغيل أكثر من كتلة واحدة من التعليمات البرمجية في نفس الوقت ، إما على مراكز متعددة أو بالتناوب على نواة واحدة
* الشبكات للسماح بالاتصال عبر الإنترنت بشكل آمن
* مكونات واجهة المستخدم الرسومية (GUI) لبناء واجهات المستخدم (UI) على الأجهزة التي تحتوي على شاشات.
من المحتمل أن يكون إطار عمل وحدة التحكم الدقيقة الأكثر شيوعًا ، خاصة بين الطلاب والهواة والصناع. Arduino عبارة عن منصة إلكترونية مفتوحة المصدر تجمع بين البرامج والأجهزة. يمكنك شراء لوحات Arduino المتوافقة من Arduino نفسها أو من الشركات المصنعة الأخرى ، ثم كتابة التعليمات البرمجية باستخدام إطار عمل Arduino.
يتم ترميز لوحات Arduino في C أو C ++. يتيح استخدام C / C ++ تجميع التعليمات البرمجية الخاصة بك بشكل صغير جدًا وتشغيلها بسرعة ، وهو شيء مطلوب على جهاز مقيد مثل متحكم دقيق. يُشار إلى جوهر تطبيق Arduino بالرسم وهو رمز C / C ++ مع وظيفتين - "الإعداد" و "الحلقة". عند بدء تشغيل اللوحة ، سيعمل كود إطار عمل Arduino على تشغيل وظيفة "الإعداد" مرة واحدة ، ثم يقوم بتشغيل وظيفة "الحلقة" مرارًا وتكرارًا ، وتشغيلها باستمرار حتى يتم إيقاف تشغيل الطاقة.
ستكتب رمز الإعداد الخاص بك في وظيفة "الإعداد" ، مثل الاتصال بشبكة WiFi والخدمات السحابية أو تهيئة المسامير للإدخال والإخراج. سيحتوي رمز الحلقة الخاص بك بعد ذلك على رمز معالجة ، مثل القراءة من جهاز استشعار وإرسال القيمة إلى السحابة. يمكنك عادةً تضمين تأخير في كل حلقة ، على سبيل المثال ، إذا كنت تريد فقط إرسال بيانات المستشعر كل 10 ثوانٍ ، فستضيف تأخيرًا لمدة 10 ثوانٍ في نهاية الحلقة حتى يتمكن المتحكم الدقيق من السكون ، وتوفير الطاقة ، ثم التشغيل الحلقة مرة أخرى عند الحاجة بعد 10 ثوانٍ.
![An arduino sketch running setup first, then running loop repeatedly](../../../../images/arduino-sketch.png)
✅ تُعرف بنية البرنامج هذه باسم حلقة الحدث أو حلقة الرسالة . تستخدم العديد من التطبيقات هذا تحت الغطاء وهو المعيار لمعظم تطبيقات سطح المكتب التي تعمل على أنظمة تشغيل مثل Windows أو macOS أو Linux. "الحلقة" تستمع إلى الرسائل الواردة من مكونات واجهة المستخدم مثل الأزرار أو الأجهزة مثل لوحة المفاتيح وتستجيب لها. يمكنك قراءة المزيد في هذا <ahref="https://wikipedia.org/wiki/Event_loop">article on the event loop </a>
يوفر Arduino مكتبات قياسية للتفاعل مع وحدات التحكم الدقيقة ودبابيس الإدخال / الإخراج ، مع تطبيقات مختلفة أسفل الغطاء للتشغيل على وحدات تحكم دقيقة مختلفة. على سبيل المثال ، ملف <ahref="https://www.arduino.cc/reference/en/language/functions/time/delay/">`delay` function </a> سيوقف البرنامج مؤقتًا لفترة معينة من الوقت ، فإن <ahref="https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/">`digitalRead` function </a> سيقرأ قيمة "HIGH" أو "LOW" من رقم التعريف الشخصي المحدد ، بغض النظر عن اللوحة التي يتم تشغيل الكود عليها. تعني هذه المكتبات القياسية أن كود Arduino المكتوب للوحة واحدة يمكن إعادة تجميعه لأي لوحة Arduino أخرى وسيتم تشغيله ، على افتراض أن الدبابيس هي نفسها وأن اللوحات تدعم نفس الميزات.
يوجد نظام بيئي كبير من مكتبات Arduino الخارجية يسمح لك بإضافة ميزات إضافية إلى مشاريع Arduino الخاصة بك ، مثل استخدام المستشعرات والمشغلات أو الاتصال بخدمات إنترنت الأشياء السحابية.
##### مهمة
تحقق من محطة Wio.
إذا كنت تستخدم Wio Terminal لهذه الدروس ، فأعد قراءة الكود الذي كتبته في الدرس الأخير. ابحث عن وظيفتي "الإعداد" و "الحلقة". راقب الإخراج التسلسلي لوظيفة الحلقة التي يتم استدعاؤها بشكل متكرر. حاول إضافة رمز إلى وظيفة "الإعداد" للكتابة إلى المنفذ التسلسلي ولاحظ أن هذا الرمز يتم استدعاؤه مرة واحدة فقط في كل مرة تقوم فيها بإعادة التشغيل. حاول إعادة تشغيل جهازك باستخدام مفتاح الطاقة الموجود على الجانب لإظهار أن هذا يسمى في كل مرة يتم فيها إعادة تشغيل الجهاز.
## التعمق اكثر في أجهزة الكمبيوتر ذات اللوحة الواحد
في الدرس الأخير ، قدمنا أجهزة كمبيوتر أحادية اللوحة. دعونا الآن نلقي نظرة أعمق عليهم.
### Raspberry Pi
![The Raspberry Pi logo](../../../../images/raspberry-pi-logo.png)
<ahref="https://www.raspberrypi.org">Raspberry Pi Foundation </a> هي مؤسسة خيرية من المملكة المتحدة تأسست عام 2009 للترويج لدراسة علوم الكمبيوتر ، وخاصة على مستوى المدرسة. كجزء من هذه المهمة ، قاموا بتطوير جهاز كمبيوتر ذو لوحة واحدة ، يسمى Raspberry Pi. يتوفر Raspberry Pi حاليًا في 3 متغيرات - إصدار بالحجم الكامل ، و Pi Zero الأصغر ، ووحدة حسابية يمكن دمجها في جهاز IoT النهائي الخاص بك.
![A Raspberry Pi 4](../../../../images/raspberry-pi-4.jpg)
أحدث نسخة من Raspberry Pi بالحجم الكامل هي Raspberry Pi 4B. يحتوي هذا على وحدة معالجة مركزية رباعية النواة (4 نواة) تعمل بسرعة 1.5 جيجاهرتز أو 2 أو 4 أو 8 جيجابايت من ذاكرة الوصول العشوائي و Gigabit ethernet و WiFi ومنفذين HDMI يدعمان شاشات 4K ومنفذ إخراج الصوت والفيديو المركب ومنافذ USB (2 USB 2.0 ، 2 USB 3.0) ، 40 GPIO ، موصل كاميرا لوحدة كاميرا Raspberry Pi ، وفتحة بطاقة SD. كل هذا على لوحة مقاس 88 مم × 58 مم × 19.5 مم ويتم تشغيلها بواسطة مصدر طاقة 3 أمبير USB-C. يبدأ سعرها من 35 دولارًا أمريكيًا ، وهو أرخص بكثير من جهاز الكمبيوتر الشخصي أو جهاز Mac.
> 💁 يوجد أيضًا جهاز كمبيوتر Pi400 الكل في واحد مع Pi4 المدمج في لوحة المفاتيح.
![A Raspberry Pi Zero](../../../../images/raspberry-pi-zero.jpg)
Pi Zero أصغر بكثير ، مع طاقة أقل. يحتوي على وحدة معالجة مركزية أحادية النواة بسرعة 1 جيجاهرتز ، وذاكرة وصول عشوائي (RAM) سعة 512 ميجابايت ، و WiFi (في طراز Zero W) ، ومنفذ HDMI واحد ، ومنفذ micro-USB ، و 40 دبوس GPIO ، وموصل كاميرا لوحدة كاميرا Raspberry Pi ، وبطاقة SD فتحة. يقيس 65 مم × 30 مم × 5 مم ، ولا يستهلك سوى القليل من الطاقة. سعر Zero 5 دولارات أمريكية ، مع إصدار W مع شبكة WiFi بقيمة 10 دولارات أمريكية.
> 🎓 وحدات المعالجة المركزية في كلاهما هي معالجات ARM ، على عكس معالجات Intel / AMD x86 أو x64 التي تجدها في معظم أجهزة الكمبيوتر الشخصية وأجهزة Mac. هذه تشبه وحدات المعالجة المركزية التي تجدها في بعض المتحكمات الدقيقة ، وكذلك جميع الهواتف المحمولة تقريبًا ، ومايكروسوفت سيرفس إكس ، وأجهزة آبل ماك الجديدة القائمة على السيليكون.
تعمل جميع متغيرات Raspberry Pi على إصدار من Debian Linux يسمى Raspberry Pi OS. يتوفر هذا كإصدار خفيف بدون سطح مكتب ، وهو مثالي لمشروعات "بلا رأس" حيث لا تحتاج إلى شاشة ، أو نسخة كاملة مع بيئة سطح مكتب كاملة ، مع متصفح الويب ، والتطبيقات المكتبية ، وأدوات الترميز والألعاب. نظرًا لأن نظام التشغيل هو إصدار من Debian Linux ، يمكنك تثبيت أي تطبيق أو أداة تعمل على Debian ومصممة لمعالج ARM داخل Pi.
#### مهمة
تحقق من Raspberry Pi.
إذا كنت تستخدم Raspberry Pi لهذه الدروس ، فاقرأ عن مكونات الأجهزة المختلفة الموجودة على اللوحة.
* يمكنك العثور على تفاصيل حول المعالجات المستخدمة في <ahref="https://www.raspberrypi.org/documentation/hardware/raspberrypi/">Raspberry Pi hardware documentation page </a> اقرأ عن المعالج المستخدم في Pi الذي تستخدمه.
* حدد موقع دبابيس GPIO. اقرأ المزيد عنها في <ahref="https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md">Raspberry Pi GPIO documentation </a> . استخدم <ahref="https://www.raspberrypi.org/documentation/usage/gpio/README.md">GPIO Pin Usage guide </a> لتحديد الدبابيس المختلفة على Pi الخاص بك.
### برمجة أجهزة الكمبيوتر ذات اللوحة الواحدة
أجهزة الكمبيوتر أحادية اللوحة هي أجهزة كمبيوتر كاملة تعمل بنظام تشغيل كامل. هذا يعني أن هناك مجموعة واسعة من لغات البرمجة والأطر والأدوات التي يمكنك استخدامها لترميزها ، على عكس المتحكمات الدقيقة التي تعتمد على دعم اللوحة في أطر مثل Arduino. تحتوي معظم لغات البرمجة على مكتبات يمكنها الوصول إلى دبابيس GPIO لإرسال واستقبال البيانات من أجهزة الاستشعار والمشغلات.
✅ ما هي لغات البرمجة التي تعرفها؟ هل هم مدعومون على لينكس؟
لغة البرمجة الأكثر شيوعًا لبناء تطبيقات إنترنت الأشياء على Raspberry Pi هي Python. يوجد نظام بيئي ضخم للأجهزة المصممة لـ Pi ، وكلها تقريبًا تشتمل على الكود ذي الصلة اللازم لاستخدامها كمكتبات Python. تعتمد بعض هذه الأنظمة البيئية على "القبعات" - وهذا ما يسمى لأنها تجلس على قمة Pi مثل القبعة وتتصل بمقبس كبير إلى 40 دبوس GPIO. توفر هذه القبعات إمكانات إضافية ، مثل الشاشات أو المستشعرات أو السيارات التي يتم التحكم فيها عن بُعد أو المحولات للسماح لك بتوصيل المستشعرات بكابلات قياسية
### استخدام أجهزة الكمبيوتر أحادية اللوحة في عمليات نشر إنترنت الأشياء الاحترافية
تُستخدم أجهزة الكمبيوتر أحادية اللوحة في عمليات نشر إنترنت الأشياء الاحترافية ، وليس فقط كمجموعات للمطورين. يمكن أن توفر طريقة قوية للتحكم في الأجهزة وتشغيل المهام المعقدة مثل تشغيل نماذج التعلم الآلي. على سبيل المثال ، <ahref="https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/">Raspberry Pi 4 compute module </a> توفر كل قوة Raspberry Pi 4 ولكن في عامل شكل مدمج وأرخص بدون معظم المنافذ ، مصمم ليتم تثبيته في الأجهزة المخصصة.
---
## 🚀 تحدي
كان التحدي في الدرس الأخير هو سرد أكبر عدد ممكن من أجهزة إنترنت الأشياء الموجودة في منزلك أو مدرستك أو مكان عملك. لكل جهاز في هذه القائمة ، هل تعتقد أنه مبني على وحدات تحكم دقيقة أو أجهزة كمبيوتر أحادية اللوحة ، أو حتى مزيج من الاثنين؟
## مسابقة ما بعد المحاضرة
[<div dir="rtl"> اختبار ما بعد المحاضرة </div>](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/4)
## مراجعة ودراسة ذاتية
* اقرأ <ahref="https://www.arduino.cc/en/Guide/Introduction">Arduino getting started guide </a> لفهم المزيد حول نظام Arduino الأساسي.
* اقرأ <ahref="https://www.raspberrypi.org/products/raspberry-pi-4-model-b/">introduction to the Raspberry Pi 4</a> لمعرفة المزيد عن Raspberry Pi.
✅ استخدم هذه الأدلة ، جنبًا إلى جنب مع التكاليف الموضحة باتباع الروابط الموجودة في ملف [hardware guide](../../../hardware.md) لتحديد النظام الأساسي للأجهزة الذي تريد استخدامه ، أو إذا كنت تفضل استخدام جهاز افتراضي.
## واجب
[قارن بين المتحكمات الدقيقة وأجهزة الكمبيوتر أحادية اللوحة](assignment.ar.md)