الروبوت المضيء

مقدمة:

سنقوم في هذا المشروع ببناء روبوت يشع الضوء لزاوية مقدارها 90 درجة.

light-emitting-robot

روبوت يلقي التحية

مقدمة:

في هذا المشروع سنقوم بإنشاء روبوت يلقي التحية عند الاقتراب منه مسافة معينة.

waving-robot

الأدوات المستخدمة:

waving-robot

Mbot V1.1

waving-robot

mBot Servo Pack

نبدأ بتركيب الروبوت. ومن ثم نقوم بتشكيل الروبوت بإضافة Servo Motor & Ultrasonic Sensor كالتالي :

طريقة التركيب :

أولا : قم بإعادة تركيب mBot  .

waving-robot

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

waving-robot
waving-robot

وبعد ذلك، قم بتثبيت محرك الـ Servo :

waving-robot

ثم نقوم بتثبيت قطعة الـ cuttable linkage :

waving-robot

وأخيرا، قم بتجميع القطع :

waving-robot

التوصيل بلوحة التحكم :

ثم نقوم بتوصيل Servo Motor بمدخل رقم 1 و نوصل Ultrasonic Sensor بمدخل رقم 2

waving-robot

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

أولا: نبدأ بتهيئة محرك الـسيرفو، و الـ LED عن طريق وضع القيم الإبتدائية كالتالي:

waving-robot

بعدها نقوم بإدراج دالة التكرار

waving-robot

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

waving-robot

سوف نقوم بإستخدام الحالات الآتية في الدوال الشرطية :

الحالة الأولى إذاكانت المسافة أكبرمن30 سم.

waving-robot

الحالة الثانية إذاكانت المسافة تساوي30 سم.

waving-robot

الحالة الثالثة إذاكانت المسافة أصغر من30 سم.

waving-robot

في الحالة الأولى، فإن الروبوت لن يكون بإلقاء التحية ويعود إلى حالته الإبتدائية وسيتم إضائة الـ LED باللون الأحمر كما هو موضح :

waving-robot

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

waving-robot

الشكل النهائي للأوامر البرمجية:

waving-robot

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

لعبة Whac-A-Mole

سنقوم في هذا المشروع ببرمجة لعبة Whac-A-mole  المسلية من خلال استخدام عصا التحكم و RGB وحساب النقاط وعرضها على وحدة عرض 7-segment

makeblock-whac-a-mole

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

makeblock-whac-a-mole

Inventor Kit

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

 

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

makeblock-whac-a-mole

 

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

 

makeblock-whac-a-mole

 

المنفذالقطعة الالكترونية
منفذ3RGB LED
منفذ47-segment
منفذ6عصا التحكم joystick

 

الفكرة البرمجية

 

makeblock-whac-a-mole

تحتوي وحدة  RGBعلى   4  LED سنقوم ببرمجتها لتتم إضاءتها عشوائيا وبشكل سريع ، ونلاحق هذه الإضاءة عبر عصا التحكم، عند توافق توجيه العصا باتجاه LED المضاءة يتحول لونها من الأزرق إلى الأحمر وتسجيل نقطة تظهر على وحدة عرض 7-segment

makeblock-whac-a-mole

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

نقوم بتوصيل عصا التحكم باللوحة Orion  في المنفذ 6
واستخدام الكود التالي لعرض القراءة على الشاشة

makeblock-whac-a-mole

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

makeblock-whac-a-mole

 

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

سنحتاج بداية لانشاء 4 متغيرات

المتغيرالوظيفة
LEDيشير إلى رقم LED في وحدة RGB
 Scoreلتسجيل النقاط عند التصويب
X لتخزين قيمة حركة عصا التحكم في اتجاه X
Yلتخزين قيمة حركة عصا التحكم في اتجاه y

 

makeblock-whac-a-mole

 

نبدأ الكود بتعيين قيمة RGB LED وحدة 7-segment  على قيمة 0
وتعيين العداد على 0

makeblock-whac-a-mole

داخل حلقة Forever
نقوم بتعيين المتغير LED بحيث تتغير القيمة بصورة عشوائية من 0 – 4 وفق عدد LED أو من 0-8 لتقليل سرعة التغير في الإضاءة
ثم نضع أمر إضاءة LED بحيث تضاء حسب الرقم العشوائي كل مرة

makeblock-whac-a-mole

نقوم بتعيين المتغيرين X و Y على حركة عصا التحكم Joystick

makeblock-whac-a-mole

نستخدم جملتين  شرطيتين  if ..then
بحيث إذا كانت قيمة LED تساوي 1 (أي LED1 مضاءة)
وتم تصويب عصا التحكم في اتجاه LED (نضع قيمةY وفق القيمة التي حصلنا عليها عند اختبار عصا التحكم)

makeblock-whac-a-mole

نضيف الأمر بحيث تتغير الإضاءة من أزرق إلى أحمر

makeblock-whac-a-mole

وتسجيل نقطة في المتغير Score

makeblock-whac-a-mole

وعرض عدد النقاط على وحدة 7-segment

makeblock-whac-a-mole

 

makeblock-whac-a-mole

يتم كتابة الأكواد للاتجاهات و LED الأخرى بنفس الطريقة مع وضع القيم المناسبة

قم بالإطلاع على الكود كاملا :

makeblock-whac-a-mole

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

 

 

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

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

line-follower-robot

 

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

line-follower-robot

mBot Kit

أو

line-follower-robot

mBot Ranger Kit

مستشعر تتبع المسار Line Follower

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

falling-avoiding-robot

 

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

falling-avoiding-robot

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

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

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

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

line-follower-robot

نستخدم الجملة الشرطية if.. then.. else

بحيث إذا كان مستشعر تتبع المسار على اللون الأسود (أي القيمة تساوي 0 ) يتحرك الروبوت للأمام  بسرعة تساوي 100، وإذا كانت المستشعر الأيمن على الخط الأسود والمستشعر الأيسر على الخط الأبيض يتحرك الروبوت إلى اليمين، والعكس… .

line-follower-robot

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

استخدام التطبيق

يمكن كذلك استخدام روبوت Ranger كروبوت متتبع للمسار عبر تطبيق MakeBlock

بعد فتح التتطبيق وربطه بالروبوت  قم باختيار Ranger ثم Line following

line-follower-robot

الروبوت متتبع الضوء

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

في هذا المشروع سنستخدم روبوت Ranger  الذي يحتوي على مستشعرين للضوء لبرمجة روبوت يتتبع مصدر الضوء .

light-follower-robot

 

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

light-follower-robot

mBot Ranger Kit

 

فكرة المشروع

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

light-follower-robot

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

اختبار المستشعر

قد تختلف دقة المستشعرات الالكترونية بنسب بسيطة تعود إلى عوامل في التصنيع
سنقوم بعمل اختبار لمستشعري الضوء الموجودين في لوحة Auriga لمعرفة الفرق في دقة القياس بين المستشعرين

أولا قم بإنشاء متغيرين Light1  و Light2 مثلا

light-follower-robot

قم بتعيين المتغير الأول لقراءة المستشعر الأول on board 1
والمتغير الثاني لقراءة المستشعر الثاني on board 2

light-follower-robot

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

light-follower-robot

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

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

 

سنقوم في البداية بإنشاء متغيرين Light 1  وتعيينه لقراءة المستشعر الأيسر (كما هو مكتوب على اللوحة الرئيسية)
ومتغير Light2 وتعيينه لقراءة المستشعر الأيمن  في اللوحة

 

light-follower-robot

 

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

الشرط الذي يمثل حالة أن تكون قراءة المستشعر الأول = الثاني

light-follower-robot

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

 light-follower-robot

وهذا يعني أنه إذا كان الفرق بين قيمة المستشعر الأول والثاني أقل من 6 فسيتم اعتبار أنهما متساويان ويتحرك الروبوت للأمام
أضفنا abs القيمة المطلقة لتعطي ناتج الطرح قيمة موجبة دائمًا سواء كانت قيمة Light1 أكبر من Light2 أو العكس.

light-follower-robot

 

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

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

light-follower-robot

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

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

 

light-follower-robot

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

 

روبوت الانقاذ

يصبح الروبوت في بعض الظروف مناسبًا لتأدية المهام أكثر من الانسان مثل حالات الحرائق والأماكن الغير آمنة وذلك لحماية الانسان من الخطر.
سنقوم في هذا المشروع ببرمجة الروبوت لإرساله في عملية إنقاذ والتحكم به بواسطة حركة الهاتف الذكي أو الجهاز اللوحي الذي يحتوي على مستشعر التسارع Accelerometer وباستخدام تطبيق Makeblock.

rescue-robot

 

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

 

rescue-robot

Ultimate 2.0 Kit

مستشعر التسارع Accelerometer

 

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

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

rescue-robot

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

البرمجة باستخدام التطبيق

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

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

للتحكم في حركة الروبوت سنقوم ببرمجته بحيث يتحرك في نفس الاتجاه الذي يميل فيه الهاتف المحمول
من خلال واجهة التطبيق سنقوم باختيار الروبوت Ultimate  واختيار إضافة مشروع جديد New Project

rescue-robot

 

سنقوم بإضافة مفتاح Switch ونسميه Tilt

rescue-robot

 

rescue-robot

تحت أمر تشغيل المفتاح سنضيف كود تحكم الحركة بإضافة أوامر شرطية
بحيث إذا تم توجيه الهاتف للأمام يتحرك الروبوت للأمام

rescue-robot

وكذلك بالنسبة للخلف واليمين واليسار

rescue-robot
rescue-robot
rescue-robot

تحت أمر إغلاق المفتاح نضع أمر توقف الحركة

rescue-robot

يتم وضع الأوامر البرمجية داخل أمر Repeat Forever

 

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

rescue-robot

 

 


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

ينقسم التحكم بذراع الروبوت إلى قسمين : حركة الذراع للأعلى والأسفل وحركة المقبض للإمساك بالأشياء وإفلاتها
سنقوم بإضافة 4 أزرار تحكم
لتحرك الذراع للأعلى سوف نسمي الزر الأول Up بالنقر عليه واختيار علامة تعديل الاسم
عند  ضغط الزر سنضيف الأمر البرمجي المتعلق بتحريك محرك التشفير encoder motor  المسؤول عن تحريك الذراع واختيار رقم المنفذ الذي تم توصيله به
وعند ترك الزر نضع السرعة صفر للتوقف

rescue-robot

لتحريك الذراع للأسفل سوف نسمي الزر الآخر Down
ونضيف نفس الكود البرمجي لمحرك التشفير لكن بوضع قيمة السرعة سالبة ( – ) لعكس اتجاه الحركة

rescue-robot

 

برمجة القابض Gripper

لتحريك القابض للإمساك بالأشياء، سوف نسمي الزر الثالث Grip
عند ضغط الزر سنضيف الأمر المتعلق بحركة محرك DC المسؤول عن حركة القابض
وتحديد منفذ التوصيل

rescue-robot

الزر الرابع سوف نسميه Un-Grip،  لتحريك القابض لإفلات الأشياء
سنضيف نفس الكود البرمجي لكن بوضع السرعة بعلامة سالبة ( – ) لعكس اتجاه حركة المحرك وبالتالي عكس حركة القابض

rescue-robot

 

الواجهة النهائية للتطبيق

rescue-robot

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

نقوم بعد ذلك بحفظ المشروع Save وتحديث البرامج الثابتة من واجهة التطبيق Firmware  لتتمكن من تجربة المشروع.

بث  الفيديو على الحاسوب

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

rescue-robot

قم بتنزيل تطبيق Droidcam   من Google Play  على هاتف محمول أندرويد

سيظهر عند فتح التطبيق عنوان IP الخاص بهاتفك
ورقم المنفذ Port وعنوان المتصفح

rescue-robot

 

قم بفتح الكاميرا من خلال التطبيق

rescue-robot

على جهاز الحاسوب قم بفتح المتصفح وإدخال عنوان المتصفح Browser IP Cam Access بهذا الشكل

http://192.168.11.118 :4747/

يمكنك الآن متابعة البث لمباشر من كاميرا الهاتف المحمول على صفحة الويب

rescue-robot

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

 

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

makeblock-cooling-machine

 

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

makeblock-cooling-machine

Inventor Kit

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

makeblock-cooling-machine

 

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

 

نقوم بتوصيل مستشعر الحرارة إلى اللوحة الرئيسية عبر محول Rj25

makeblock-cooling-machine

 

المنفذالقطعة الالكترونية
منفذ4 وحدة 7-segment
منفذ6محول RJ25
منفذ8المقاومة المتغيرة
منفذ المحركات M1المروحة Me 130 dc motor

 

 

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

 

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

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

makeblock-cooling-machine

ننشئ متغيرًا باسم temperature ونقوم بتعيينه لقراءة قيمة المقاومة المتغيرة

makeblock-cooling-machine

نقوم بتعيين وحدة 7-segment لعرض درجة الحرارة temperature

makeblock-cooling-machine

نستخدم الأمر التالي لقراءة مستشعر درجة الحرارة

makeblock-cooling-machine

باستخدام حلقة Repeat until
نضع أمر المحرك M1  المتعلق بالمروحة ليتحرك بسرعة 100 إلى أن تصبح درجة الحرارة التي اخترناها أكبر من الحرارة التي يقرأها المستشعر

makeblock-cooling-machine

عند تبريد الكوب إلى درجة الحرارة المطلوبة تتوقف المروحة

makeblock-cooling-machine

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

 

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

 

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