facebook_pixel

مشروع آلة التبريد

 

سنقوم في هذا المشروع بصنع آلة تبريد يمكن استخدامها لتبريد المشروبات باستخدام مستشعر الحرارة وقطع الكترونية أخرى.

makeblock-cooling-machine

 

مشروع المروحة الذكية

سنقوم في هذا المشروع بعمل مروحة ذكية تعمل عند عند الاقتراب منها لمسافة محددة وتزداد سرعتها كلما اقتربت منها أكثر

makeblock-smart-fan

 

الأدوات المطلوبة

makeblock-smart-fan

Inventor Kit

القطع المطلوبة

makeblock-smart-fan

 

طريقة التوصيل

 

 

makeblock-smart-fan

قم بتوصيل مستشعر الموجات فوق الصوتية بالمنفذ رقم 3
وقم بتوصيل المروحة (Me 130 dc motor) بأحد المنفذين المخصصة للمحركات كما هو موضح بالصورة

لاحظ أنك إذا قمت بتوصيل في المنفذ M1  على اللوحة الرئيسية فستعتمد M1 عند كتابة الكود البرمجي.

برمجة المشروع

نقوم بدايةً بإنشاء متغير Distance وتعيينه لتخزين قراءة مستشعر الموجات فوق الصوتية

makeblock-smart-fan

نقوم بإضافة جملة شرطية if.. else
لتحديد المسافة التي تبدأ عندها المروحة بالدوران وهنا اخترنا أن تكون أقل من 70 سم

makeblock-smart-fan

ننشئ متغيرًا باسم speed ونقوم بتعيينه ليتغير قيمته وفق المسافة
أضفنا عبارة رياضية وهي أن تكون السرعة حاصل طرح المسافة من 150
وبذلك ستتغير السرعة وفق المسافة
كلما كانت المسافة صغيرة تزداد السرعة

makeblock-smart-fan

بعد else نضع سرعة المحرك M1 تساوي صفر ليتوقف إذا كانت المسافة أكبر من 70

makeblock-smart-fan

 

الكود البرمجي

 

makeblock-smart-fan

 

للمزيد من المعلومات حول الكود يمكنك الرجوع إلى درس جولة حول الأوامر البرمجية.

 

مشروع محاكاة إشارة المرور

سنقوم في هذا المشروع بدمج عدة عناصر إلكترونية لمحاكاة إشارة المرور مثل إضاءة RGB ومحرك سيرفو ووحدة عرض 7-segment

 

makeblock-traffic-light

 

الأدوات المطلوبة

 

makeblock-traffic-light

حقيبة المخترع (Inventor Kit)

تركيب الدائرة

 

سنستخدم في هذا المشروع القطع الالكترونية التالية:

 

makeblock-traffic-light

نلاحظ أن منافذ محرك السيرفو تختلف عن منافذ لوحة (Orion (RJ25 لذلك نستخدم محول RJ25 الذي يقوم بتحويل المنافذ القياسية Rj25 إلى 6 دبابيس لتتوافق مع العناصر الالكترونية الأخرى مثل محرك السيرفو في هذا المشروع.

طريقة التوصيل

 

makeblock-traffic-light

 

المنفذالقطعة الالكترونية
منفذ 4وحدة عرض 7-segment
منفذ 8RGB LED
منفذ 6محول RJ25

 

ويتم توصيل محرك السيرفو بمحول RJ25

 

برمجة المشروع

 

سنقوم ببرمجة المشروع بحيث تكون الإضاءة حمراء لمدة 10 ثوان ويكون ذراع محرك السيرفو على زاوية 180 درجة
ليمنع السيارات من العبور
يبدأ العد التنازلي يظهر على وحدة عرض 7-segment من 10 إلى 0
ثم تتحول الإضاءة إلى الأخضر ويتحرك ذراع محرك السيرفو إلى 90 درجة ليسمح للسيارات بالعبور
في البداية سننشيء متغير second  ليمثل عدد الثواني في العداد

makeblock-traffic-light

قم بتعيين قيمة المتغير second على عدد الثواني التي سيبدأ بها العد التنازلي
10هنا اخترنا أن يبدأ العداد من

makeblock-traffic-light

لنجعل العدد يتناقص سنستخدم الأمر التالي

makeblock-traffic-light

وليكون مقدار التناقص كل ثانية سنستخدم الأمر wait

makeblock-traffic-light

خلال العد التنازلي نريد أن يظهر العداد على وحدة 7-segment
وكذلك تكون الإضاءة حمراء

makeblock-traffic-light

وأن يكون الحاجز مغلقا لمنع مرور السيارات أي يكون ذراع محرك السيرفو على زاوية 180 درجة

makeblock-traffic-light

سنضع هذه الأوامر داخل حلقة Repeat until

makeblock-traffic-light

ستتكرر الأوامر داخل الحلقة إلى أن يصل العداد إلى الصفر أي يتحقق الشرط الذي تم وضعه في الأمر البرمجي Repeat until
عند وصول العداد إلى الصفر سنعيد تعيينه ليبدأ العد من 10 أي عند فتح الإشارة والحاجز
سنستخدم الأمر if then
ونضع الشرط إذا كانت الثواني = 0

makeblock-traffic-light

 

 وعند تحقق هذا الشرط نريد أن  تكون الإضاءة خضراء (green=60)
ويتم فتح المزلاق أيتحرك ذراع السيرفو إلى 90 درجة
كذلك نضيف الأمر الذي يظهر العد التنازلي في وحدة عرض 7-segment

makeblock-traffic-light

بعد مرور هذه العشر ثوان سنستخدم أمر تعيين العداد مرة أخرى ليستمر في تكرار فتح إشارة المرور وغلقها

makeblock-traffic-light

الكود البرمجي

 

makeblock-traffic-light

 

لمزيد من المعلومات حول الأوامر البرمجية الأخرى يمكنك الرجوع إلى درس جولة حول الأوامر البرمجية

 

التحكم بالروبوت عبر الأوامر الصوتية

سنقوم في هذا المشروع باستخدام مستشعر الصوت الموجود في اللوحة الرئيسية Auriga لروبوت Ranger
لبرمجة روبوت يستجيب للأوامر الصوتية

 

voice-control-robot

 

الأدوات المطلوبة

voice-control-robot

mBot Ranger Kit

 Sound Sensor مستشعر الصوت

 

يمكن أن نقول بأن مستشعر الصوت  هو عبارة عن مايكروفون صغير يقوم بتحويل الصوت إلى إشارة كهربائية،  ويعطي قيمة  تتراوح بين 0-1023.  تختلف القيمة باختلاف المحيط الذي نقوم بتشغيل الروبوت فيه
لا يستطيع مستشعر الصوت التمييز بين الكلمات لكن يستطيع التمييز بين الأصوات المرتفعة والمنخفضة التي تقع في المدى الخاص به. كلما كانت شدة الصوت أعلى كانت الإشارة الكهربائية أكثر

voice-control-robot

 

تحديد مدى قراءة المستشعر

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

قم بانشاء متغير Sound
اختيار الأمر say وتعيينه على مستشعر الضوء
ووضع الأمر داخل حلقة forever

voice-control-robot

 

ستظهر قراءة المستشعر على الشاشة

voice-control-robot

نلاحظ أن القيمة تتغير بسرعة كبيرة جدا وبهذا يصعب تحديد أعلى قيمة وأقل قيمة،  لذا سنضيف متغيرين آخرين
Max ليمثل أعلى قيمة،  و Min ليمثل أقل قيمة

voice-control-robot

سنقوم بتعيين المتغيرين على قراءة مستشعر الصوت

voice-control-robot

ونقوم كذلك بتعيين المتغير Sound لقراءة مستشعر الصوت

voice-control-robot

في البداية ستكون Max = Min
داخل حلقة forever  ستتغير قيمة المتغير Sound
ولتحديد أعلى وأقل قيمة نستخدم if ..then
بحيث إذا كانت قيمة sound أكبر من قيمة max
يتم إعادة تعيين قيمة max إلى هذه القيمة كأعلى قيمة
ويتم إعادة تعيين قيمة min إلى أقل قيمة تمت قراءتها في المتغير Sound

 

voice-control-robot

 

 

الكود البرمجي

سنقوم ببرمجة الروبوت بحيث يتراجع للوراء عند التصفيق أو إعطاءه أي أمر صوتي

سنأخذ بالاعتبار القيم  التي حصلنا عليها من الكود السابق،  لاستخدامها في كتابة كود الروبوت الجديد

نقوم بفتح صفحة جديدة في برنامج mBlock
وانشاء متغير Sound  وتعيينه لقراءة مستشعر الصوت في اللوحة الرئيسية

voice-control-robot

 

نقوم بإضافة شرط if then
بحيث إذا كانت قراءة مستشعر الصوت أعلى من قيمة معينة يتحرك الروبوت للخلف
لتحديد هذه القيمة نعود إلى القيم التي حصلنا عليها من الكود السابق

voice-control-robot

نلاحظ في الصورة أن قيمة max = 184 وهذه القيمة تم تسجيلها قبل إصدار أي صوت
مما يعني أنه عند التصفيق مثلا ستكون قيمة المستشعر أكبر من هذه القيمة

 

voice-control-robot

 

إذا كانت قيمة القراءة أقل،  يتم تنفيذ الأوامر بعد else وهو التحرك للأمام

 

الكود البرمجي:

 

voice-control-robot

 

قم  بتجربة إضافة أوامر برمجية تقوم بإضاءة LED عند التصفيق

لمزيد من المعلومات حول الأوامر البرمجية الأخرى قم بالرجوع لدرس جولة حول الأوامر البرمجية

 

 

روبوت السومو

 

مصارعة السومو من الفنون القتالية اليابانية القديمة، سنقوم في هذا المشروع ببرمجة الروبوت ليكون جاهزًا للمشاركة بحيث يقوم الروبوت بالبحث عن الخصم في مساحة محددة بواسطة مستشعر الموجات فوق الصوتية وعندما يجده يقوم بالهجوم على الروبوت الخصم.

sumo-mbot

الأدوات المطلوبة:

 

sumo-mbot

mBot Kit (عدد 2)

 

فكرة المشروع

سنقوم في هذا المشروع باستخدام مستشعر الموجات فوق الصوتية ووحدة تتبع المسار. بحيث يتحرك الروبوت على ساحة المعركة دون الخروج من الحدود المرسومة باللون الأسود باستخدام مستشعر تتبع المسار.

 

sumo-mbot

 

يعطي المستشعر قراءة تساوي 3 إذا كان على سطح أبيض وقراءة تساوي 0 إذا كان على سطح أسود، وقيم تساوي 1 أو 2 إذا كانت إحدى جهتي المستشعر على اللون الأسود والأخرى على الأبيض.  لفهم كيفية عمل مستشعر وحدة المسار راجع مشروع روبوت تفادي السقوط

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

رصد حافة الطاولةرصد الخصمالفعل
نعمنعمالانعطاف يمينًا أو يسارًا
نعملاالانعطاف يمينًا أو يسارًا
لانعمزيادة السرعة (هجوم)
لالاالتحرك للأمام

 

 

الكود البرمجي

 

سنحتاج عند برمجة روبوت السومو إلى وضع الأوامر باعتبار قراءة مستشعر تتبع المسار ومستشعر الموجات فوق الصوتية.

سنقوم بدايةً بوضع مجموعة من الأوامر داخل حلقة تكرار Repeat until ، يقوم هذا الأمر بتنفيذ الأوامر التي بداخل الحلقة إلى أن يتحقق الشرط الذي يتم وضعه
وهنا قمنا باختيار الشرط أن تساوي قراءة مستشعر تتبع المسار 3
(عندما تكون القيمة 3 فذلك يعني أن كلا المستشعرين في وحدة تتبع المسار على سطح أبيض أي أن الروبوت لم يصل لحافة ساحة القتال)

sumo-mbot

 

الأوامر التي بداخل حلقة repeat until ستعتمد على المسافة على قراءة مستشعر الموجات فوق الصوتية ، أي إذا كان الروبوت يسير على السطح الأبيض سننتقل لاختبار شرط المسافة
وهو إذا كانت المسافة بين الروبوت والخصم أقل من 12 سم سيقوم بالهجوم عليه عن طريق زيادة السرعة إلى 255،  وإن لم تكن المسافة كذلك يستمر الروبوت في الحركة للأمام بسرعة متوسطة

 

sumo-mbot

نعود إلى شرط مستشعر تتبع المسار
إذا تحقق الشرط أن القراءة أصغر من 3، فذلك يعني أن الروبوت لم يعد على السطح الأبيض أي وصل إلى حافة ساحة القتال
فهنا يتم تنفيذ الأوامر بعد else،  وهي الحركة للخلف لمدة ثانيتين وفائدة الأمر wait  أن يسمح له بالرجوع مسافة كافية تمكنه من الانعطاف

sumo-mbot

 

بعد أن يعود الروبوت للخلف هل ينعطف يمينا أو يسارًا؟
ليتمكن الروبوت من اتخاذ القرار
سنستخدم الأمر pick random من 1 إلى 10

sumo-mbot

 

وهذا الأمر يقوم في كل مرة بأخذ رقم عشوائي بين العددين اللذان تم اختيارهما
وتبعا لهذا الرقم قمنا بوضع شرط إذا كان الرقم أقل من 5 ينعطف الروبوت لليمين
وإلا فينعطف لليسار

sumo-mbot

قمنا بوضع أمر التأخير الزمني.wait ليكون لدى الروبوت زمن كافي للانعطاف

الكود البرمجي

 

sumo-mbot

بذلك سيكون الروبوت جاهزًا للمشاركة في مسابقة السومو قم بتنزيل الكود على روبوت آخر لتبدأ المنافسة.
لمزيد من المعلومات حول الأوامر البرمجية الأخرى يمكنك مراجعة درس جولة حول الأوامر البرمجية.

 

مصباح الطاولة الذكي

سنقوم في هذا المشروع بعمل مصباح طاولة ذكي باستخدام مستشعر الحركة  بحيث يضيء المصباح عند استشعار الحركة ويُطفأ عند عدم وجود حركة

 

makeblock-smart-lamp

 

الأدوات المطلوبة

makeblock-smart-lamp

Inventor Kit

 

تركيب الدائرة

سنستخدم في هذا المشروع القطع التالية

 

makeblock-smart-lamp

 

طريقة التوصيل

 

 

makeblock-smart-lamp
المنفذالقطعة الالكترونية
منفذ3RGB LED
منفذ4مستشعر الحركة PIR
منفذ6المقاومة المتغيرة Potentiometer

برمجة المشروع

 

سنقوم ببرمجة المشروع بحيث يمكن التحكم بإضاءة RGB بطريقتين، إما التحكم بشدة الإضاءة عن طريق المقاومة المتغيرة وإما باستخدام مستشعر الحركة بحيث يضيء المصباح عند استشعار الحركة ويُطفأ عند عدم وجود حركة.

سنقوم بدايةً بإنشاء متغيرين
الأول ولنسميه LEDcount للتحكم بالإضاءة التدريجية حيث تحتوي وحدة RGB على 4 LED
وسنسمي المتغير الآخر Brightness للتحكم في شدة الإضاءة

 

makeblock-smart-lamp

 

يعطي مستشعر الحركة قيمتين إما 0 عند عدم وجود حركة أو 1 عند رصد الحركة

 

makeblock-smart-lamp

 

نضع جملة شرطية if  then بحيث عند رصد الحركة (قراءة المستشعر = 1) تتم إضاءة RGB بشكل تدريجي
يتم تعيين المتغير LEDcount على القيمة 0

 

makeblock-smart-lamp

 

نختار أن يتم تغير القيمة بقيمة 1 تدريجيا لتتم الإضاءة تدريجيا

 

makeblock-smart-lamp

 

للتحكم في شدة الإضاءة عبر المقاومة المتغيرة potentiometer
نستخدم الأمر البرمجي if…the.. else
ونقوم بوضع شرط بحيث يحدد أقل وأعلى قيمة للمقاومة
أقل قيمة = 0   ،  أعلى قيمة = 975

 

makeblock-smart-lamp

 

نقوم بتعيين قيمة المتغير Brightness لقراءة قيمة المقاومة المتغيرة potentiometer
أعلى شدة لإضاءة RGB تساوي 255
لذلك سنقوم بقسمة قيمة المقاومة على 4 لنحصل على قيم بين 0 – 255

 

makeblock-smart-lamp

ومن ثم تعيين قيمة شدة LED وفق قيمة المتغير Brightness

makeblock-smart-lamp

 

بعد الأمر else  نعين الإضاءة على 0 أي مطفأة

makeblock-smart-lamp

 

الكود البرمجي

 

makeblock-smart-lamp

 

للمزيد من المعلومات حول الكود يمكنك الرجوع لدرس جولة حول الأوامر البرمجية

 

 

روبوت تفادي السقوط

 

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

 

falling-avoiding-robot

 

 

 

الأدوات المطلوبة:

 

mBot Ranger - Transformable STEM Educational Robot Kit

mBot Ranger Kit

 

وحدة تتبع المسار Line Follower

 

تتكون وحدة تتبع المسار من مستشعرين كل مستشعر يتكون من  مصدر للأشعة تحت حمراء (LED) ومستقبل لهذه الأشعة
فكرة عمل مستشعر تتبع المسار تقوم على إطلاق أشعة تحت حمراء ورصد انعكاسها
عند سير الروبوت على الأسطح البيضاء فإن معظم الأشعة تنعكس من على السطح ويتم رصدها
أما عند سير الروبوت  على الأسطح السوداء فإن اللون الأسود يمتص معظم الأشعة فلا ينعكس إلا مقدار بسيط منها إلى المستشعر

falling-avoiding-robot

 

الأمر البرمجي لقراءة وحدة تتبع المسار

falling-avoiding-robot

يعطي قيم بين 0 – 3 بناء على الحالات التالية

الحالاتقيمة القراءةالمستشعر الأيمنالمستشعر الأيسر
كلا المستشعرين على اللون الأسود0
المستشعر الأيسر فقط على اللون الأسود1
المستشعر الأيمن فقط على اللون الأسود2
كلا المستشعرين على اللون الأبيض3

 

 

 

 

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

 

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

نقوم أولا بإنشاء متغير edge

falling-avoiding-robot

 

نقوم بتعيين قيمة المتغير لتخزين قراءة وحدة تتبع المسار

falling-avoiding-robot

 

نستخدم الجملة الشرطية if else بحيث
إذا كانت قيمة قراءة المستشعر تساوي 3 يتم تنفيذ الأمر التالي وهو التحرك للأمام
عندما تكون القراءة 3 فذلك يعني أن كلا المستشعرين في وحدة تتبع المسار على اللون الأبيض

 

falling-avoiding-robot

 

 عندما يصل الروبوت إلى حافة الطاولة  لن يكون كلا المستشعرين على اللون الأبيض وبالتالي لن تكون قراءة المستشعر تساوي3
فيقوم الروبوت بتنفيذ الأوامر المكتوبة بعد الأمر else
وهي التحرك للخلف لمدة ثانيتين ثم الانعطاف نحو اليمين
نقوم بوضع أمر التأخير الزمني wait بعد أمر التحرك للخلف لكي نسمح للروبوت بالرجوع مسافة كافية حتى يتمكن من الانعطاف
ونضيف wait بعد أمر الانعطاف لليمين لتحديد مقدار الانعطاف ستحتاج إلى تغيير القيمة حسب شكل وحجم الطاولة التي لديك

falling-avoiding-robot

 

 

الكود البرمجي:

 

falling-avoiding-robot

 

لمعلومات أكثر حول الأوامر البرمجية الأخرى يمكنك العودة إلى درس جولة حول الأوامر البرمجية.

تحدي الروبوت

قم ببرمجة روبوت يتفادى السقوط من الطاولة وفي نفس الوقت يتفادى الاصطدام بأي حاجز على الطاولة.
يمكنك مراجعة مشروع روبوت تتبع الكائنات لمعرفة كيفية استخدام مستشعر الموجات فوق الصوتية لتفادي الحواجز.

مشروع الاتصال اللاسلكي IR

 

تحتوي لوحة التحكم  mCore على LED (مُرسل IR Emitter) تقوم بإرسال أشعة تحت حمراء تحمل المعلومات المراد إرسالها
وتحتوى اللوحة كذلك على عنصر مستقبل لهذه الأشعة (IR Receiver).
سنقوم في هذا الدرس بعمل اتصال لاسلكي بين لوحتين mCore بحيث يقوم الروبوت الأول بالتوقف عند الحواجز وإرسال أمر إلى الروبوت الآخر بالتوقف أيضًا.

mbot-ir-communication

 

الأدوات المطلوبة:

 

mbot-ir-communication

mBot Kit (عدد 2)

الاتصال عبر الأشعة تحت الحمراء IR Communication

 

يعتبر الاتصال عبر الأشعة تحت الحمراء من التقنيات  الشائعة للتواصل بين الأجهزة مثل المستخدمة في الريموت كونترول للتحكم بقنوات التلفاز ، تحمل الأشعة تحت الحمراء والتي لا يمكن رؤيتها بالعين المجردة المعلومات المراد إرسالها المستقبل.

 

mbot-ir-communication

 

تحتوي مجموعة الأوامر البرمجية لروبوت mBot على أمرين متعلقين بالاتصال اللاسلكي

mbot-ir-communication

الروبوت المُرسل

 

يتم تعيين أحد الروبوتات كمُرسل
وكتابة الرسالة داخل الأمر البرمجي send mBot’s message

mbot-ir-communication

 يكفي أن تحتوي الرسالة على أحد الأحرف ويجب أن تكون قيمة ثابتة حيث لا يمكن للروبوت إرسال قيمة متغيرة (مثل قراءة مستشعر) كما لا يمكن للروبوت المستقبل استخدام القيم المتغيرة لآداء وظائف أخرى

في هذا المشروع سنقوم ببرمجة الروبوت الأول لتفادي الحواجز بحيث عندما يقترب من حاجز ما يتوقف ويرسل رسالة إلى الروبوت الآخر بالتوقف كذلك.

بدايةً نقوم بوضع أمر الحركة للأمام داخل حلقة  forever وإضاءة LED على وضع الإطفاء
سيتحرك الروبوت للأمام فور تشغيله

mbot-ir-communication

نقوم بإنشاء متغير Distance وتعيينه لقؤاءة مستشعر الموجات فوق الصوتية

mbot-ir-communication

نقوم بإضافة شرط (if then)لتحديد المسافة التي يتوقف عندها الروبوت إذا واجه أحد الحواجز
إذا كانت المسافة بين الروبوت والحاجز أقل من 20 يتوقف الروبوت (السرعة صفر) ويرسل رسالة عبر الأشعة تحت الحمراء IR
ويعطي إضاءة LED باللون الأحمر  لتتم معرفة أن الروبوت أرسل رسالة

الكود البرمجي للروبوت المُرسل

 

mbot-ir-communication

 

يجب وضع الأوامر البرمجية المتعلقة بالاتصال اللاسلكي داخل loop ليتم إرسال واستقبال الرسائل في نفس الوقت

ملاحظة: إذا قمت بوضع الأمر البرمجي للإرسال داخل حلقة Repeat لإرسال رسائل متتالية سيتوقف الروبوت الآخر عن الاستجابة بعد فترة ، لتفادي ذلك قم بإضافة تأخير زمني بين إرسال الرسائل باستخدام الأمر wait

mbot-ir-communication

 

الروبوت المستقبل

 

تتغير وظيفة الروبوت المُستقبل عند استلام الرسالة التي يرسلها الروبوت الأول
يجب كتابة الرسالة داخل علامتي تنصيص double quote  ليعمل البرنامج بشكل صحيح

mbot-ir-communication

سنستخدم الجملة الشرطية if ونضع بداخلها مجموعة الأوامر التي يقوم  بها الروبوت المُستقبل عند استلام الرسالة
أي إذا استلم الروبوت الرسالة من الروبوت الأول  (المُرسل) سيتم تنفيذ الأوامر البرمجية المبنية على هذه الرسالة
في هذا المشروع سنقوم ببرمجة الروبوت المُستقبِل على أن يتحرك للأمام إلى أن يستقبل رسالة من الروبوت الأول فيتوقف ويعطي وميض ضوئي أخضر

 

برمجة الروبوت المستقبِل

 

بدايةً نقوم بوضع أمر الحركة للأمام داخل حلقة  forever وإضاءة LED على وضع الإطفاء
سيتحرك الروبوت للأمام فور تشغيله

mbot-ir-communication

نقوم بإضافة شرط if else
بحيث إذا استقبل الروبوت الرسالة من الروبوت الأول (a) يقوم بتنفيذ الأوامر التالية في الكود
وهي التوقف عن الحركة باستخدام أمر الحركة واختيار السرعة 0

mbot-ir-communication

لإعطاء وميض ضوئي أخضر نقوم بوضع أمر إضاءة LED
واختيارقيمة معينة للون الأخضر
ثم وضع نفس الأمر على وضع الإطفاء (جميع الألوان على القيمة 0)
ووضع أمر التأخير الزمني wait بينهم لنتمكن من ملاحظة الوميض

mbot-ir-communication

بعد الأمر else أي إذا لم يستقبل الروبوت رسالة من الروبوت الأول
يعاود الحركة ويطفئ إضاءة LED

mbot-ir-communication

 

الكود البرمجي للروبوت المستقبِل

 

mbot-ir-communication

 

لمعلومات أكثر حول الأوامر البرمجية الأخرى التي تم استخدامها في الكود راجع درس جولة حول الأوامر البرمجية.

مشروع روبوت تتبع الكائنات

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

 

mbot-object-follower

 

تعتمد فكرة الروبوت على أساس قياس المسافة باستخدام مستشعر الموجات فوق الصوتية بين الروبوت والجسم الذي أمامه ومن ثم التحرك وفق هذه المسافة.

الأدوات المطلوبة:

 

mbot-object-follower

 

mBot Kit

أو mBot Ranger Kit

 

مستشعر الموجات فوق الصوتية (Ultrasonic Sensor)

 

يقوم مستشعر الموجات فوق الصوتية بقياس المسافة حيث يقوم باطلاق موجات صوتية عالية التردد لا يمكن للأذن البشرية سماعها وعند اصطدام هذه الموجات بجسم ما ترتد على شكل صدى Echo ،عند ارتداد هذه الموجات يتم حساب الزمن الذي استغرقته للعودة إلى المستشعر وحساب المسافة.

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

 

mbot-object-follower

 

 

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

 

 سنقوم بكتابة برنامج للروبوت بحيث يتحرك للأمام متتبعا للجسم الذي أمامه عند مسافة محددة  وإذا أصبحت المسافة صغيرة جدا يتحرك  الروبوت للخلف متفاديا للاصطدام
في البداية سنقوم بإنشاء متغير باسم Distance وتعيينه لتخزين قراءة مستشعر الموجات فوق الصوتية

 

mbot-object-follower

 

نقوم بتحديد المسافة التي يتتبع خلالها الروبوت الجسم الذي أمامه ويتحرك للأمام
باستخدام الأمر البرمجي if else
إذا كانت المسافة أكبر من 12 سم أو أقل من 30 سم
يتحرك الروبوت للأمام بسرعة 100
وتبقى إضاءة LED مطفأة

 

mbot-object-follower

 

نقوم بوضع شرط آخر تحديد المسافة التي يتحرك فيها الروبوت للخلف Backward وهنا قمنا بتحديد إذا كانت أقل من 12 سم

 

mbot-object-follower

 

داخل أمر التكرار Repeat كما نلاحظ في الصورة السابقة

قمنا باختيار الأمر البرمجي الذي يتحكم بإضاءة LED لإصدار وميض ضوئي
قمنا باختيارشدة إضاءة اللون الأحمر 150 ثم أضفنا أمر التأخير الزمني wait لجعل الإضاءة تفتح وتغلق كل  0.2ثانية

 أضفنا كذلك أمر برمجي يقوم بتشغيل تنبيه صوتي بنغمة معينة

 

mbot-object-follower

 

الكود البرمجي:

 

mbot-object-follower

 

لمعلومات أكثر حول الأوامر البرمجية الأخرى يمكنك مراجعة درس جولة حول الأامر البرمجية.

 

 

 

قياس وعرض المسافة على وحدة 7-segment

 

في هذا المشروع سنقوم باستخدام مستشعر الموجات فوق الصوتية لحساب المسافة وعرضها على وحدة عرض 7-segment. يمكن أن تستخدم فكرة قياس المسافة في أنظمة الإنذار والروبوتات وغيرها.

distance-display

الأدوات المطلوبة

 

distance-display

حقيبة المخترع Inventor Kit

لوحة Orion

 

اللوحة الرئيسية في حقيبة المخترع هي لوحة Orion المبنية على الأردوينو تحتوي على 8 منافذ RJ25  بألوان محددة
عند توصيل المستشعرات باللوحة سنأخذ بالاعتبار هذه الألوان كدليل بحيث يحمل  كل مستشعر لون أو عدة ألوان فيتم توصيله في المنفذ الذي يشمل كل هذه الألوان.

القطع المستخدمة

distance-display

طريقة التوصيل

 

distance-display

يحمل مستشعر الموجات فوق الصوتية اللون الأصفر قمنا بتوصيله بالمنفذ رقم 3 (هناك 5 منافذ أخرى يمكن توصيل المستشعر بها تحمل اللون الأصفر)
وتحمل وحدة العرض 7-segment اللون الأزرق ، قمنا بتوصيلها بالمنفذ رقم 6
(هناك 3 منافذ أخرى يمكن توصيل 7-segment بها تحمل اللون الأزرق)

برمجة المشروع

نقوم بتوصيل اللوحة Orion إلى الحاسوب عن طريق كيبل microUSB المرفق في الحقيبة
من برنامج mBlock نقوم باختيار نوع اللوحة من قائمة Boards

distance-display

 

يقوم مستشعر الموجات فوق الصوتية بإرسال الموجات وعند اصطدامها بأي كائن ترتد إلى المستشعر ، وبذلك نستطيع حساب المسافة بين المستشعر وذلك الكائن من خلال الزمن الذي يحسبه المستشعر
المسافة = الزمن × سرعة الموجات الصوتية
نستخدم الأمر التالي لقراءة مستشعر الموجات فوق الصوتية وتحديده رقم منفذ التوصيل

distance-display

لعرض البيانات على وحدة العرض 7-segment
نستخدم الأمر البرمجي التالي

distance-display

ونقوم بتعيينه لعرض قراء مستشعر الموجات فوق الصوتية

distance-display

الكود البرمجي

 

distance-display

 

قمنا بإضاقة أمر التأخير الزمني wait
لتظهر القراءات بشكل مستقر ، جرب إزالة هذا الأمر وتشغيل الكود لمشاهدة الفرق.

لمزيد من المعلومات حول الأوامر البرمجية يمكنك الرجوع لدرس جولة حول الأوامر البرمجية

التحكم بسرعة الروبوت باستخدام مستشعر الضوء

 

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

mbot-light-control

 

سنقوم في هذا المشروع ببرمجة mBot  ليتم التحكم بسرعة محركات الروبوت تبعا لشدة الضوء الساقط على المستشعر . يتحرك الروبوت بسرعة أكبر كلما كانت شدة الإضاءة أعلى

 

الأدوات المطلوبة:

 

mbot-light-control

 

mBot Kit

أو mBot Ranger Kit

 

مستشعر الضوء

 

سنستخدم في هذا المشروع مستشعر الضوء المدمج في لوحة  mCore
مستشعر الضوء عبارة عن مكوّن الكتروني يصنع من مادة شبه موصلة للكهرباء، يتغير مقدار توصيل المستشعر للكهرباء تبعًا لتغير شدة الإضاءة الساقطة على سطح المستشعر
كلما كانت شدة الإضاءة أعلى أصبحت قدرة المستشعر على توصيل الكهرباء أكبر

 

mbot-light-control

 

 

الكود البرمجي

 

سنقوم بكتابة برنامج يقوم  بتخزين قراءة مستشعرالضوء ومن ثم مقارنتها بالقيم التي نقوم بتحديدها في الكود، ووفقًا لنتيجة المقارنة يتم إعطاء الأوامر للمحركات لزيادة السرعة، شرح الكود:

نقوم بإنشاء متغير باسم Light وتعيينه لتخزين قراءة مستشعر الضوء

mblock-programming-blocks

نقوم بإضافة جمل شرطية if else
وتحديد إذا كانت قراءة المستشعر لشدة الضوء أكبر من 500 وأقل من 950
يتحرك الروبوت بسرعة 50

mblock-programming-blocks

 

نضيف جملة شرطية أخرى عند زيادة شدة الإضاءة
بحيث إذا كانت قيمة قراءة المستشعر أكبر من 996 يتحرك الروبوت بسرعة 100

mblock-programming-blocks

وبعد الأمر else
نضيف أمر التوقف باختيار السرعة 0  أي إذا لم تتحقق إحدى الشروط السابقة لشدة الإضاءة يتوقف الروبوت عن الحركة

الكود البرمجي:

 

mbot-light-control

 

 يمكن مراجعة درس جولة على الأوامر البرمجية لمعلومات أكثر حول وظائف الأوامر البرمجية الأخرى

ستحتاج إلى مصباح ضوئي أو تنزيل أحد تطبيقات Flash light  في هاتفك المحمول أو iPad لتجربة الروبوت.

 

جولة حول الأوامر البرمجية

 

يتواصل البشر فيما بينهم بلغات مختلفة مثل العربية والانجليزية وغيرها
وللتواصل مع الروبوتات نحتاج كذلك إلى لغات برمجة ومن أبسط لغات البرمجة المرئية هي لغة سكراتش Scratch التي سنستخدمها في برنامج mBlock لبرمجة روبوتات MakeBlock.

 

mblock-programming-blocks

 

في هذا الدرس سنأخذ جولة على الأوامر البرمجية الأكثر استخداما في بناء الروبوتات والمشاريع المختلفة.

 

الأوامر البرمجية

تنقسم الأوامر البرمجية في برنامج mBlock  إلى عدة أقسام منها ما هو متعلق بالحركة أو الأصوات أو التحكم وغيرها

والتي تمكننا من برمجة الرسوم المتحركة والألعاب التفاعلية.

mblock-programming-blocks

لكن عند كتابة برنامج والرغبة في رفعه على لوحة الروبوت فإن 4 أقسام فقط من الأوامر البرمجية يمكن استخدامها
وهي المتعلقة بالبيانات والتحكم والعمليات والروبوت كما هو موضح في الصورة.

mblock-programming-blocks

سنستعرض الآن كل قسم وأكثر الأوامر البرمجية استخدامًا.

 

القسم الأول: البيانات Data and Blocks

 

mblock-programming-blocks

 

mblock-programming-blocks
mblock-programming-blocks
يستخدم هذا الأمر لإنشاء المتغيرات  وتعيين قيمة المتغير

والمتغير يمكن تشبيهه بوعاء لتخزين البيانات مثل إنشاء متغير باسم  Light يقوم بتخزين قراءة مستشعر الضوء

mblock-programming-blocks
تعيين قيمة للمتغير
mblock-programming-blocks
تغيير قيمة المتغير بمقدار معيّن
mblock-programming-blocks
إظهار أو إخفاء قيمة المتغير

 

 

القسم الثاني: أوامر التحكم Control

mblock-programming-blocks

 

mblock-programming-blocks
يستخدم الأمر البرمجي wait لإضافة تاخير زمني بين أمرين برمجين
mblock-programming-blocks
يقوم هذا الأمر بتكرار الأوامر البرمجية التي توضع داخله عدد محدد من المرات
mblock-programming-blocks
 If.. then
يقوم هذا الأمر بالتحقق من الشرط، إذا كان الشرط صحيحا، سيتم تنفيذ التعليمات البرمجية داخل  هذا الـ Block ، وإذا لم يتحقق الشرط لن يتم تنفيذها.If.. then.. else
يقوم هذا الأمر بالتحقق من الشرط، إذا كان الشرط صحيحا، سيتم تنفيذ التعليمات البرمجية داخل  Block if ، وإذا لم يتحقق الشرط يتم تنفيذ  التعليمات البرمجية داخل else Block .
mblock-programming-blocks
 يتوقف البرنامج عند الأمر البرمجي wait until حتى يتحقق الشرط الذي تم تحديده داخل الأمر Block
عند تحقق الشرط يكمل البرنامج تنفيذ الأوامر التالية في الكود
mblock-programming-blocks
 يتم تكرار الأوامر البرمجية التي توضع بداخل الأمر Repeat until حتى يتحقق الشرط الذي تم تحديده
عند تحقق الشرط ينتقل لتنفيذ الأوامر التالية في الكود

 

القسم الثالث: أوامر العمليات Operators

mblock-programming-blocks

 

mblock-programming-blocks
مجموعة الأوامر المتعلقة بالعمليات الحسابية
(الجمع، الطرح ، الضرب، القسمة)
mblock-programming-blocks
Pick a random
لاختيار رقم عشوائي من بين قيمتين
مثلا بين 1 و 10
سيختار البرنامج كل مرة رقما مختلفا بين هاتين القيمتين
mblock-programming-blocks
أكبر من .. أصغر من .. يساوي
تستخدم الأوامر البرمجية للمقارنة بين قيمتين مختلفتين
mblock-programming-blocks
عند استخدام And
يتم تنفيذ الكود البرمجي التالي إذا تحقق كلا الشرطين
mblock-programming-blocks
عند استخدام or
يتم تنفيذ الكود البرمجي التالي إذا كان أحد الشرطين صحيحا
mblock-programming-blocks
يتم استخدامه لعكس الحالة المنطقية للمعامل
إذا كان الشرط صحيحا فإن العامل المنطقي not يجعله خاطئا

القسم الرابع: أوامر الروبوت Robot

في هذا القسم تظهر الأوامر وفق نوع الروبوت الذي تم اختيار من قائمة Boards

ونوع الامتداد من قائمة Extensions

mblock-programming-blocks

 

 

mblock-programming-blocks
يشير هذا الأمر البرمجي Block إلى أن البرنامج سيتم ترجمته
إلى كود أردوينو وتحميله على لوحة mCoreعند اختيار نوع الروبوت mBot.
ويختلف مسمى هذا الأمر Block وفقًا لنوع لوحة الروبوت التي تستخدمها وتقوم باختيارها من قائمة Board.
mblock-programming-blocks
يقوم هذا الأمر البرمجي بإعطاء الأمر لجميع محركات الروبوت بالحركة إما للأمام أو الخلف أو لليمين أو اليسار
وكذلك تحديد السرعة
mblock-programming-blocks
يستخدم لتحديد اتجاه وسرعة أحد المحركات M1 المحرك الأول M2المحرك الثاني
عند اختيار السرعة قيمة موجبة (100)
يتحرك للأمام
عند اختيار قيمة سالبة ( -100 ) يتحرك للخلف
mblock-programming-blocks
يتم عبر هذا الأمر البرمجي التحكم بالإضاءة RGB LED المدمجة في اللوحة الرئيسية وشدة الإضاءة ودمج الألوان
mblock-programming-blocksيستخدم هذا الأمر البرمجي عند توصيل RGB LED خارجية باللوحة الرئيسية ويتم تحديد رقم منفذ التوصيل
mblock-programming-blocks
يستخدم الأمر البرمجي play note لإصدار الأصوات مثل التنبيهات والنغمات عبر الطنان الكهربائي (Buzzer)المدمج في اللوحة الرئيسية
mblock-programming-blocks
يستخدم لقراءة مستشعر الضوء المدمج في اللوحة الرئيسية
mblock-programming-blocks
يستخدم عند توصيل مستشعر ضوء خارجي باللوحة الرئيسية بأحد المنافذ
وتحديد وضع التشغيل إما On أو Off لإغلاقه
mblock-programming-blocks
يستخدم لبرمجة المفتاح (push button) المدمج في اللوحة الرئيسية
تحت هذا الأمر يتم وضع الأوامر البرمجية التي يطلب من البرنامج تنفيذها عند ضغط المفتاح
mblock-programming-blocks
يستخدم هذا الأمر لقراءة مستشعر الموجات فوق الصوتية
ويتم تحديد المنفذ الذي تم توصيل المستشعربه
mblock-programming-blocks
يستخدم هذا الأمرلقراءة مستشعر تتبع المسار وتحديد منفذ توصيل المستشعر

 

 

رفع الكود على لوحة الروبوت

 

عند الانتهاء من بناء الكود البرمجي الخاص بك قم بتوصيل الروبوت عبر كيبل USB واختيار رقم المنفذ الخاص بالروبوت

mblock-programming-blocks

 

قم باختيار القائمة Edit ثم Arduino mode

mblock-programming-blocks

سيظهر الكود بلغة الأردوينو في يمين الشاشة، قم باختيار Upload to Arduino  لرفع الكود على الروبوت

mblock-programming-blocks