Affichage des articles dont le libellé est Avoiding Ultrasonic Robot. Afficher tous les articles
Affichage des articles dont le libellé est Avoiding Ultrasonic Robot. Afficher tous les articles

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



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

- ما سنقوم ببناءه هو روبوت متفادي للحواجز " 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 

Kategori

Kategori