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

متوسط

image_pdf

سنقوم في هذا المشروع باستخدام مستشعر الصوت الموجود في اللوحة الرئيسية 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 عند التصفيق

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

 

 

X
Product added to the cart