- ما سنقوم ببناءه هو روبوت متفادي للحواجز " Avoiding Robot " هذا الروبوت يمكنه تحسس الأجسام التي أمامه و تفاديها , مستخدماً حساس الأمواج فوق الصوتية Ultrasonic
في ما يلي في هذا المقال سستعرف على كل المفاهيم المرتبطة بهذا الروبوت .
- في البداية , ماذا سنحتاج لتنفيذ هذه التجربة ؟
القطع المطلوبة لتنفيذ هذا الروبوت قليلة و سهلة التوافر , و طريقة ربطها بعضها سهلة ايضاً , القطع هي
1) أردوينو Uno او Dumilanova .
2) هيكل الروبوت Magician Chassis من شركة
Sparkfun , هيكل سهل التركيب .
او الهيكل رباعي العجلات 4Wheel المميز ذو العزم العالي و
الدقة الأكبر في الحركة .
او الهيكل رباعي العجلات 4Wheel المميز ذو العزم العالي و
الدقة الأكبر في الحركة .
3) Arduino L293 Motor Sheild و هو غطاء مصمم خصيصاً ليتناسب مع بطاقات الأردوينو المختلفة , يحتوي على دارة متكاملة هي L293 خاصة لقيادة المحركات الكهربائية بالأضافة لمسجل الازاحة 74595 لزيادة مجال التحكم بسرعة المحركات .
4) حساس الأمواج فوق الصوتية Ultrasonic HC-SR04
تحدثت في مقال سابق لي في المدونة عن هذا الحساس , يمكنك الرجوع إلى هذا المقال و الأستزادة أكثر عنه .
5)بطاريتان , واحدة لتغذية المحرك "يجب ان تكون أكبر من 5 فولت " و الثانية بطارية 9 فولت مع الحاضنة لتغذية الأردوينو .
![]() |
غذي بها الأردوينو , حتى تكون تغذية الروبوت منفصلة عن تغذية المحركات |
6) قطع اخرى , مثل اسلاك توصيل , ستحتاج لأسلاك توصيل female-female عدد 4 , و ايضاً ستحتاج ل dc jack male+ female لتسهيل توصيل البطارية مع غطاء الأردوينو الخاص بالمحرك , و اخيراً pin header male عدد 1 .
توصيل القطع :
توصيل القطع :
1) قم بتجميع هيكل الروبوت .
2) قم بتوصيل الpin header male مع غطاء الأردوينو الخاص بالمحرك .
3) قم بوضع غطاء الأردوينوالخاص بالمحرك فوق بطاقة الأردوينو كما في الصورة .
4) ثبت الألتراسونيك في الأمام و قم بتوصيله كالأتي
tri >>>pin15 "A1 "
echo>>pin16 "A2"
vcc>> vcc
Gnd>>Gnd
ستحتاج لعملية لحام بسيطة ل Pin header حتى يسهل عليك تثبيت اطراف الألتراسونيك بالغطاءShield و ستراها بوضوح اسفل يمين الغطاء .
5) ثبت البطاريات بهيكل الروبوت , قم بعملية لحام ل ل dc jack female مع سلكين و توصيلهما لمداخل التغذية مع غطاء الأردوينوالخاص بالمحرك , ليسهل تشغيل و ايقاف الروبوت .
7) حمل الكود من مقالة غطاء قيادة المحرك L293 لتتأكد نم ان توصيلك صحيح .
8) للتأكد حمل برنامج الألتراسونيك من هذا المقال لتتأكد من تثبيت الالتراسونيك صحيح " فقط غير السطر :
حتى يناسب توصيلك , و افتح شاشة العرض Serial monitor يجب ان تتغير القراءة كلما اقتربت يدك من الاتراسونيك .
9) حمل الكود الرئيسي التالي :
Vd: ➤➤➤ ici
8) للتأكد حمل برنامج الألتراسونيك من هذا المقال لتتأكد من تثبيت الالتراسونيك صحيح " فقط غير السطر :
Ultrasonic ultrasonic (12,13);
إلى : Ultrasonic ultrasonic (15,16);
حتى يناسب توصيلك , و افتح شاشة العرض Serial monitor يجب ان تتغير القراءة كلما اقتربت يدك من الاتراسونيك .
9) حمل الكود الرئيسي التالي :
// Avoiding robot Code
AIT LASRI YOUNES
//................
#include <AFMotor.h>
#include "Ultrasonic.h"
int distance = 0;
AF_DCMotor right_motor(1, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
AF_DCMotor left_motor (2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
Ultrasonic ultrasonic (15,16);
void setup () {
left_motor.setSpeed(200); // set the speed to 200/255
right_motor.setSpeed(200); // set the speed to 200/255
delay(2000);
}
void Forward(int SpeedR,int SpeedL){
left_motor.setSpeed(SpeedL); // set the speed to 200/255
right_motor.setSpeed(SpeedR); // set the speed to 200/255
left_motor.run(FORWARD);
right_motor.run(FORWARD); // turn it on going forward
}
void right(int SPEED,int timer){
left_motor.setSpeed(SPEED); // set the speed to 200/255
right_motor.setSpeed(SPEED); // set the speed to 200/255
left_motor.run(BACKWARD);
right_motor.run(FORWARD); // turn it on going forward
delay(timer);
}
void left(){
left_motor.run(FORWARD);
right_motor.run(BACKWARD); // turn it on going forward
}
void backward(){
left_motor.run(BACKWARD);
right_motor.run(BACKWARD); // turn it on going forward
}
void Stop(){
left_motor.run(RELEASE);
right_motor.run(RELEASE); // turn it on going forward
}
void loop ()
{
distance=ultrasonic.Ranging(CM);
delay(80);
if(distance>30){
Forward(110,130);
}
if(distance<=30 && distance>15){
Forward(100,120);
}
if(distance<=20){
Stop();
delay(10);
right(120,15);
} }
Vd: ➤➤➤ ici
EmoticonEmoticon