الأربعاء، 23 أبريل، 2014

روبوت متتبع الخط Line Follower

روبوت متتبع الخط  Line Follower


ارسم خط و هو يمشي عليه




هذه المقالة هي جزء من مبادرة عرب دوينو Arabduino
للتعرف على المبادرة و كيف تشاركنا بمقالاتك و تجاربك من خلال الرابط 



كثيرا ما نسمع عباره "ارسم خط و امشي عليه " اما للسخريه او للتخطيط و ما الى ذلك ز واكن لماذا لا نطبقها فعليا على روبوت نرسم له خط على الارض و عليه ان يتبعهز

من منا لا يذكر قصه الاولاد الصغار الذين دخلو الى الغابه و حتى لا يضلو الطرق اثناء العوده مان يلقون بعض كسرات الخبز خلفهم ليتبعوها عند عودتهم

ماذل لو فعلنا الشئ نفسه مع روبوت من صنع ايدينا "نرسم له الخط وعليه ان يتبعه " 




انا نتحدث عن :


" الروبوت متتبع الخط"

"Line Follower Robot"


ولكن هل يستطيع هذا الشيئ ان يتتبع اي مسار نحدده له؟

الاجابه هي : نعم

بكل بساطه نحن البشر قادرون على صنع اي شئ طالما نمتلك هذا العقل الجبار الذي هو هبة من الخالق سبحانه وتعالى


كل ما نحتاجه لصنع هذا الروبوت هو التالي :

1. اردوينو اونو" Arduino Uno"


2. دائرة قيادة المحركات " L298 Dual H-Bridge Motor Driver"
3. حساس متتبع الخط " Line follower Sensor QRE1113 Analog"

4. اسلاك توصيل " male-male/male-female"


5. زر تشغيل و ايقاف


6. جسم الروبوت "Robot Platform "






7.  حامل بطاريه للاردوينو


الرسم التوضيحي لتوصيل القطع معا :



اما عن الصعوبات او المشاكل التي واجهتني اثناء العمل على الروبوت فهي مشاكل بسيطه جدا حيث انني قد اخطائت في توصيل المحركات بدائره القياده و قد عكست قطبيه احدهم فبدلا من ان يسير الروبوت الى الامام كان يدور حول نفسه و بعد مراجعه التوصيلات اكتشفت الخطاء و اصلحته على الفور


الكود المستخدم في الروبوت :

// First the line following (IR) sensors
const int irLeft = 2; //Left line sensor is on pin A2
const int irRight = 3; //Right line sensor is on pin A3

//Motor A (Right)
int enableA = 11;
int pinA1 = 10;
int pinA2 = 9;

//Motor B (Left)
int enableB = 7;
int pinB1 = 6;
int pinB2 = 5;
//Define Run variable
boolean run;
void setup() {
pinMode(enableA, OUTPUT);
pinMode(pinA1, OUTPUT);
pinMode(pinA2, OUTPUT);
pinMode(enableB, OUTPUT);
pinMode(pinB1, OUTPUT);
pinMode(pinB2, OUTPUT);
}
void loop(){
  int valleft= analogRead(irLeft);
   int leftsensor = analogRead(A2);  //in the side of motor B
  int rightsensor = analogRead(A3);  //in the side of motor A
  
   if ((leftsensor >= 700) && (rightsensor >= 700))
     forward();
        else if((leftsensor <= 150) && (rightsensor <= 150))
     backward();
     else if((leftsensor <= 150) && (rightsensor >= 700))
     turnright();
     else if((leftsensor >= 700) && (rightsensor <= 150))
     turnleft();
}
//Motors Foward
void forward(){
  digitalWrite(pinA1,HIGH);
  digitalWrite(pinA2,LOW);
  digitalWrite(pinB1,HIGH);
  digitalWrite(pinB2,LOW);
}
// Motors Backward
void backward(){
  digitalWrite(pinA1,LOW);
  digitalWrite(pinA2,HIGH);
  digitalWrite(pinB1,LOW);
  digitalWrite(pinB2,HIGH);
}
// turn left
void turnleft(){
  digitalWrite(pinA1,HIGH);
  digitalWrite(pinA2,LOW);
  digitalWrite(pinB1,LOW);
  digitalWrite(pinB2,HIGH);
}
// turn right 
void turnright(){
  digitalWrite(pinA1,LOW);
  digitalWrite(pinA2,HIGH);
  digitalWrite(pinB1,HIGH);
  digitalWrite(pinB2,LOW);
}


هذا الفيديو اثناء تجريب الروبوت على مسارين مختلفين



 كاتب المقال :
محمود حمدي عيد
جمهورية مصر العربية
للتواصل مع الكاتب :



10 التعليقات :

  1. بارك الله فيك اخي محمود
    و جعل الله جهدك و عرقك في ميزان حسناتك لان هدا المجال الواسع مهمل من طرفنا نحن العرب
    مع العلم انه المجال الانسب لنا و الوحيد القادر على اكتشاف المواهب نظرا لقلة المكانيات في معاهدنا و مدارسنا
    فان بيئة الاردوينو بيئة تطويرية سهلة النعامل بالمقارنة مع pic و القطع متوفرة في اسواقنا و لاكن لايجب ان نحصر استخدماته في تطبيقات بسيطة فهو قادر على ادارة مشاريع عملاقة ان احسن المستخدم استعماله
    و في الاخير يمكنني القول ان الاردوينو هو سبيلنا لتطويير نمط حياتنا و اعطائها واجهة تكنولوجية
    فنحن قوم ادكياء بطبعنا فلا يجب علينا ان نستسلم للمشاكل
    لدي بعض المشاريع اود مشاركتها لاول مرة في هدا الموقع
    و اتمنى ان تكون اضافة له نظرا لنقص المصادر بالغة العربية
    zaki.teacher@gmail.com

    ردحذف
    الردود
    1. شكرا لك اخ زكي
      و اريد ان ارى مشاريعك منشوره هي الاخرى
      ليستفيد الاخرون بها

      حذف
  2. Great Idea keep going guys ;) i just wanna ask about the range of the frame cost ???

    ردحذف
    الردود
    1. لو انت عاوزها جاهزه تكلفتها من 130-140 جنيه تشمل المحركات و العجلات و حامل الطاريه

      اما لو كنت عاوز تعملها انت هتتكلف حوالي 100 جنيه

      بس دقه الشغل اكيد هتختلف على حسب مهارتك في الشغل

      حذف

  3. int ENA = 7; // Enable A - port 7 (PWM)
    int ENB = 4; //Enable B - port 4 (PWM)

    int IN1=3 ;
    int IN2 = 2; // port 2

    int IN3 = 5; // port 5 -
    int IN4 = 6; // port 6
    /////
    int LeftSensor= 3;
    int RightSensor=2 ;
    void setup()
    {
    Serial.begin(9600);

    pinMode(ENA, OUTPUT);
    pinMode(ENB, OUTPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);



    }

    void loop()
    {

    int LeftValue=analogRead(A3);
    int RightValue=analogRead(A2);

    if ((LeftValue >= 700) && (RightValue >= 700))
    forward();
    else if((LeftValue <= 150) && (RightValue <= 150))
    backward();
    else if((LeftValue <= 150) && (RightValue >= 700))
    turnright();
    else if((LeftValue >= 700) && (RightValue <= 150))
    turnleft();

    }

    void forward(){
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    }
    // Motors Backward
    void backward(){
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    }
    // turn left
    void turnleft(){
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    }
    // turn right
    void turnright(){
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    }
    this is my code but it's not working any help please
    sthis my code , but it's not working any help plea

    ردحذف
    الردود
    1. بعد اذنك الكود ده بدل الكود الى فوق

      حذف
  4. أزال المؤلف هذا التعليق.

    ردحذف
  5. طيب حضرتك لو حطيت اربعه سينسور انالوج اايه الاضافات اللي هتتضاف ع الكود ؟

    ردحذف
  6. طب انا عايز اعمل انسان الي، قصدي يمشي برجلين ، تاني حاجة عايز استخدم يديه، فا هحتاج برمجه و codes تانيه ، فا ممكن تسعادني حضرتك فالموضوع ده؟

    ردحذف
  7. عايزة رسمه دايره h bridge وشرحها ي ريت

    ردحذف

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