الروبوتات عبارة عن آلات تقلل من الجهود البشرية في الأعمال الثقيلة عن طريق أتمتة المهام في الصناعات والمصانع والمستشفيات وما إلى ذلك. يتم تشغيل معظم الروبوتات باستخدام بعض وحدات التحكم أو المكونات مثل زر الضغط وجهاز التحكم عن بعد وعصا التحكم والكمبيوتر الشخصي والإيماءات وعن طريق تنفيذ بعض الأوامر باستخدام وحدة تحكم أو معالج. لكننا اليوم هنا مع روبوت آلي يتحرك بشكل مستقل دون أي أحداث خارجية وتجنب كل العقبات في طريقه ، نعم نحن نتحدث عن Obstacle Avoiding Robot. في هذا المشروع ، استخدمنا Raspberry Pi و Motor driver لقيادة الروبوت ومستشعر الموجات فوق الصوتية لاكتشاف الأشياء في مسار الروبوت.
في السابق قمنا بتغطية العديد من الروبوتات المفيدة ، يمكنك العثور عليها في قسم مشاريع الروبوتات لدينا.
المكونات المطلوبة:
- فطيرة التوت
- وحدة الاستشعار بالموجات فوق الصوتية HC-SR04
- هيكل الروبوت كاملة مع المسمار
- دي سي موتورز
- L293D إيك
- عجلات
- مجلس الخبز
- المقاوم (1 ك)
- مكثف (100nF)
- توصيل الأسلاك
- مزود الطاقة أو بنك الطاقة
وحدة الاستشعار بالموجات فوق الصوتية:
و العقبة متجنب روبوت هو الروبوت الآلي، وأنه لا بد من التحكم باستخدام أي جهاز التحكم عن بعد. تحتوي هذه الأنواع من الروبوتات الآلية على بعض مستشعرات "الحاسة السادسة" مثل كاشفات العوائق ، وكاشف الصوت ، وكاشف الحرارة أو أجهزة الكشف عن المعادن. هنا قمنا باكتشاف العوائق باستخدام إشارات الموجات فوق الصوتية. لهذا الغرض ، استخدمنا وحدة الاستشعار بالموجات فوق الصوتية.
تستخدم أجهزة الاستشعار بالموجات فوق الصوتية بشكل شائع لاكتشاف الأشياء وتحديد مسافة العائق من المستشعر. هذه أداة رائعة لقياس المسافة دون أي اتصال مادي ، مثل قياس مستوى الماء في الخزان ، وقياس المسافة ، وروبوت تجنب العقبات وما إلى ذلك. لذلك هنا ، اكتشفنا الكائن وقياس المسافة باستخدام مستشعر الموجات فوق الصوتية و Raspberry Pi.
يستخدم مستشعر الموجات فوق الصوتية HC-SR04 لقياس المسافة في نطاق 2 سم إلى 400 سم بدقة 3 مم. تتكون وحدة الاستشعار من جهاز إرسال واستقبال بالموجات فوق الصوتية ودائرة تحكم. يتكون المستشعر بالموجات فوق الصوتية من عينين دائريتين تستخدم إحداهما لنقل الموجات فوق الصوتية والأخرى لاستقبالها.
يمكننا حساب مسافة الجسم بناءً على الوقت الذي تستغرقه الموجات فوق الصوتية للعودة إلى المستشعر. نظرًا لأن وقت الصوت وسرعته معروفان ، يمكننا حساب المسافة بالصيغ التالية.
- المسافة = (الوقت × سرعة الصوت في الهواء (343 م / ث)) / 2.
يتم تقسيم القيمة على اثنين حيث أن الموجة تنتقل للأمام وللخلف تغطي نفس المسافة ، وبالتالي فإن الوقت اللازم للوصول إلى العائق هو نصف إجمالي الوقت المستغرق.
لذلك قمنا بحساب المسافة (بالسنتيمتر) من العائق كما يلي:
pulse_start = time.time () بينما GPIO.input (ECHO) == 1: # تحقق مما إذا كان ECHO مرتفعًا GPIO. الناتج (led ، خطأ) المسافة = الجولة (المسافة ، 2) متوسط المسافة = متوسط المسافة + المسافة
حيث pulse_duration هو الوقت بين إرسال واستقبال إشارة الموجات فوق الصوتية.
شرح الدائرة:
الدائرة بسيطة للغاية لهذا الروبوت الذي يتجنب عقبة باستخدام Raspberry Pi. و حدة الاستشعار بالموجات فوق الصوتية متصل، وتستخدم للكائنات كشفها عند GPIO دبوس 17 و 27 من التوت بي. A سائق سيارات IC L293D متصل التوت بي 3 للقيادة المحركات الروبوت. دبابيس إدخال سائق المحرك 2 و 7 و 10 و 15 متصلة بـ Raspberry Pi GPIO pin رقم 12 و 16 و 20 و 21 على التوالي. لقد استخدمنا هنا محركين من محركات التيار المستمر لقيادة الروبوت الذي يتم فيه توصيل محرك واحد بطرف الإخراج 3 و 6 لمحرك IC ومحرك آخر متصل في Pin 11 و 14 لمحرك IC.
كيف تعمل:
إن عمل هذا الروبوت المستقل سهل للغاية. عندما يتم تشغيل الروبوت ويبدأ في العمل ، يقيس Raspberry Pi مسافات الأشياء ، أمامه ، باستخدام وحدة الاستشعار بالموجات فوق الصوتية ويخزن في متغير. ثم يقارن RPi هذه القيمة بالقيم المحددة مسبقًا ويتخذ القرارات وفقًا لذلك لتحريك الروبوت إلى اليسار أو اليمين أو للأمام أو للخلف.
هنا في هذا المشروع ، اخترنا مسافة 15 سم لاتخاذ أي قرار من قبل Raspberry Pi. الآن كلما حصل Raspberry Pi على مسافة أقل من 15 سم من أي كائن ، يقوم Raspberry Pi بإيقاف الروبوت وتحريكه للخلف ثم يديره إلى اليسار أو اليمين. الآن قبل تحريكه للأمام مرة أخرى ، يتحقق Raspberry Pi مرة أخرى مما إذا كان هناك أي عائق موجود في نطاق مسافة 15 سم ، إذا كانت الإجابة بنعم ، فكرر العملية السابقة مرة أخرى ، وإلا حرك الروبوت للأمام حتى يكتشف أي عائق أو كائن مرة أخرى.
شرح البرمجة:
نحن نستخدم لغة Python هنا للبرنامج. قبل البرمجة ، يحتاج المستخدم إلى تكوين Raspberry Pi. يمكنك التحقق من البرامج التعليمية السابقة الخاصة بنا لبدء استخدام Raspberry Pi وتثبيت وتكوين Raspbian Jessie OS في Pi.
يلعب جزء البرمجة في هذا المشروع دورًا مهمًا للغاية لأداء جميع العمليات. بادئ ذي بدء ، نقوم بتضمين المكتبات المطلوبة ، وتهيئة المتغيرات وتحديد دبابيس لجهاز الاستشعار بالموجات فوق الصوتية والمحرك والمكونات.
استيراد RPi.GPIO كوقت استيراد GPIO # مكتبة وقت الاستيراد GPIO.set warnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27………………….
بعد ذلك ، قمنا بإنشاء بعض الوظائف def forward () و def back () و def left () و def right () لتحريك الروبوت في الاتجاه الأمامي أو الخلفي أو الأيسر أو الأيمن على التوالي و def stop () لإيقاف الروبوت ، تحقق من الوظائف في التعليمات البرمجية الواردة أدناه.
بعد ذلك ، في البرنامج الرئيسي ، بدأنا جهاز الاستشعار بالموجات فوق الصوتية وقراءة الوقت بين إرسال واستقبال الإشارة وحساب المسافة. هنا كررنا هذه العملية 5 مرات للحصول على دقة أفضل. لقد أوضحنا بالفعل عملية حساب المسافة باستخدام مستشعر الموجات فوق الصوتية.
i = 0 avgDistance = 0 لـ i في النطاق (5): GPIO.output (TRIG، False) time.sleep (0.1) GPIO.output (TRIG، True) time.sleep (0.00001) GPIO.output (TRIG، False) بينما GPIO.input (ECHO) == 0: GPIO.output (led ، False) pulse_start = time.time () بينما GPIO.input (ECHO) == 1: # تحقق مما إذا كان ECHO مرتفع GPIO.output (led ، خطأ) pulse_end = time.time () pulse_duration = pulse_end - مسافة بدء النبض = pulse_duration * 17150 مسافة = الجولة (المسافة ، 2) avgDistance = متوسط المسافة + المسافة
أخيرًا ، إذا وجد الروبوت أي عقبة أمامه ، فبعد الابتعاد عن العقبة ، قمنا ببرمجة الروبوت ليأخذ طريقًا مختلفًا.
إذا كان avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count٪ 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
يتم تقديم الكود الكامل لهذا الروبوت Raspberry Pi Obstacle Avoiding أدناه مع فيديو توضيحي.