الاثنين، 5 مايو، 2014

روبوت تفادي الحواجز الصغير

روبوت تفادي الحواجز الصغير 





Mini avoiding Robot

في تدوينات سابقة من سلسلة اصنع الروبوت على المدونة تناولت كيفية بناء روبوت متفادي للحواجز avoiding robot بعدة طرق , سواءاً بالألتراسونيك او بحساس الأشعة تحت الحمراء 

في هذه المقال سنرى طريقة الألتراسونيك مرة أخرى و لكن باستخدام حساس مختلف يسمى EZ0 Max sonar

كتبت عن هذا الحساس في موقع Instructables يمكن زيارة المقال باللغة الأنجليزية للتعرف على هذا الحساس .

سنستخدم هيكل رائع و صغير الأ وهو Zumo robot chassis .

سنستعمل أيضاً غطاء قيادة المحرك L293 Motor driver module الذي تحدثنا عنه سابقاً في هذه السلسلة .

ستحتاج لتنفيذ هذه التجربة :

1) بطاقة أردوينو Uno


2)غطاء قيادة المحرك  L293 Motor driver Module

3)الحساس EZ0 Max sonar




4)بطارية 9فولت مع وصلة DC Jack




5)بطاريات عدد 4 "استخدمت بطاريات MH-Ni 1200mA-1.2V

6)هيكل الروبوت Zumo robot chassis



التوصيل :





طبعاً استخدمت دارة القيادة L293 Module و توصيل المحرك الأيمن على المدخل M1  و المحرك الأيسر على M2 و السيرفو مثبت على المدخل D9 و الرائع في هذا الموديول هو ان المدخل العلوي الأيسر منه يحتوي على مدخلي سيرفو موصولان مع المدخلين D9, D10 كما هو مبين في الصورة يمكن توصيل مخرج الالتراسونيك عليه بسهولة 




البرنامج :

سيقوم هذا البرنامج بقراءة المسافة بين الروبوت و بين اقرب حاجز امامه باستخدام الألتراسونيك EZ0 و اذا كان الحاجز على بعد اقل من 20سم سيقوم بالإلتفاف عنه و السير بعيداً عنه .

كملاحظة الحساس EZ0 لا يستطيع القراءة بدقة عند مسافة اقل من 15 سم لذلك كن منتهباً لهذه النقطة جيداً عند اختيارك له .



// simple code for Mini avoiding Robot

//using EZ0 ANd zumo robot chassis
//written by : Mohannad Rawashdeh
//http://www.genotronex.com
//....................................

#include "SonarEZ0pw.h"

#include <AFMotor.h>

    AF_DCMotor right_motor(1, MOTOR12_1KHZ); // create motor #2, 1KHz pwm
    AF_DCMotor left_motor (2, MOTOR12_1KHZ); // create motor #3, 1KHz pwm

SonarEZ0pw Sonar(9); // pin D9
float value=0.00;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  left_motor.setSpeed(255);     // set the speed to 200/255
  right_motor.setSpeed(255);     // set the speed to 200/25
}

void loop(){
 value= Sonar.Distance(cm);
delay(50);
if(value>20){
  left_motor.run(FORWARD);
  right_motor.run(FORWARD); 
  delay(100);
}
if(value<=20){
  left_motor.run(RELEASE);
  right_motor.run(RELEASE); 
 delay(50);
  left_motor.run(BACKWARD);
  right_motor.run(FORWARD); 
  delay(300);
  }
}

و الفيديو يوضح كيفية سير هذا الروبوت .


0 التعليقات :

إرسال تعليق

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.