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



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

- ما سنقوم ببناءه هو روبوت متفادي للحواجز " Avoiding Robot " هذا الروبوت يمكنه تحسس الأجسام التي أمامه و تفاديها , مستخدماً حساس الأمواج فوق الصوتية Ultrasonic 

في ما يلي في هذا المقال سستعرف على كل المفاهيم المرتبطة بهذا الروبوت .

- في البداية , ماذا سنحتاج لتنفيذ هذه التجربة ؟ 
القطع المطلوبة لتنفيذ هذا الروبوت قليلة و سهلة التوافر , و طريقة ربطها بعضها سهلة ايضاً , القطع هي 

1) أردوينو Uno او Dumilanova  .
2) هيكل الروبوت Magician Chassis من شركة 
Sparkfun , هيكل سهل التركيب .

او الهيكل رباعي العجلات 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  مع سلكين و توصيلهما لمداخل التغذية مع غطاء الأردوينوالخاص بالمحرك , ليسهل تشغيل و ايقاف الروبوت .
6)الشكل ادناه يوضح طريقة توصيل المحركين بالأردوينو



7) حمل الكود من مقالة غطاء قيادة المحرك  L293 لتتأكد نم ان توصيلك صحيح .

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