logo-site-sefid
ساخت-ربات-تعقیب-خط-با-آردوینو

آموزش ساخت ربات مسیریاب – چگونه با آردوینو ربات تعقیب خط بسازیم

آموزش ساخت ربات تعقیب خط با آردوینو

ساخت ربات مسیر یاب یا همان تعقیب کننده خط که به انگلیسی به آن Line follower robot می‌گویند؛ در واقع یک ربات را نشان می‌دهد که می‌تواند دنباله یک خط پررنگ با کنتراست بالا روی پس زمینه روشن یا برعکس (به طور مثال خط سیاه در پس زمینه سفید، یا خط سفید در پس زمینه سیاه) را دنبال کند. این ربات قادر است مسیر خاصی را شناسایی کرده و آن را پیش ببرد؛ البته این خطوط باید مشخص بوده و دارای عرض قابل قبولی باشند. در این مطلب قصد داریم در مورد این ربات‌های ساده اما در عین حال جذاب حرف بزنیم. ربات‌های مسیر یاب به صورت پیشرفته‌تری نیز تولید می‌شوند و از مدل‌های بسیار ساده و تا مدل‌های پیشرفته را به خود اختصاص داده‌اند و دارای کاربردهای بسیار زیادی در بخش خانگی، صنعتی، پزشکی و … می‌باشند.

در این مقاله قصد داریم تا یک ربات تعقیب خط بسازیم. در ساخت این ربات از گیربکس های تک شفت استفاده خواهیم کرد. همچنین برای ساخت شاسی آن از ورق پلاستیکی استفاده میکینم که شما نحوه کار با آنها را در مقاله آموزش کار با پلاستیک برای ساخت شاسی ربات آموخته اید.

در ادامه لیست از وسایل مورد نیاز برای ساخت ربات را ملاحظه میکنید. این ابزار را میتوانید از طریق فروشگاه رباتیک صنایع آموزشی چالیک تهیه کنید.

وسایل مورد نیاز

ورق پلاستیکی PVC ( برای آشنایی با انواع ورق های پلاستیکی مقاله ساخت ربات با ورق پلاستیک را مطالعه کنید )

چسب حرارتی

گیربکس 200 دور

جامپر

برد آردوینو ( برای آشنایی با آردوینو مقاله آردوینو چیست  را مطالعه کنید )

باتری 18650

جا باتری 18650

چرخ ربات

سنسور IR

سیم نازک چند رشته

درایور موتور

برای ساخت این ربات میتوانید تمام وسایل مورد نیاز خود را با تهیه کیت ساخت ربات مسیر یاب با آردوینو تهیه کنید.


پلاستیکی برای ربات

چالیک رباتیک از سال 1385 در زمینه آموزش رباتیک از مقدماتی تا پیشرفته برای گروه های سنی مختلف فعالیت داشته است و همواره تلاش نموده تا جدیدترین دستاوردهای روز دنیای رباتیک را به دانش پذیران این رشته آموزش دهد. شما میتوانید در کلاسهای آنلاین و یا حضوری ما شرکت نمایید و با آخرین دستاوردهای دنیای رباتیک آشنا شوید.

چالیک مسیری نوین در آموزش


در این بخش از آموزش رباتیک سنسور IR‌استفاده خواهیم کرد که قصد داریم در این مقاله بیشتر با کاربرد این سنسور آشنا شویم.

نحوه عملکرد سنسور IR

سنسور IR یا سنسور مادون قرمز دارای یک فرستنده و یک گیرنده میباشد. اما این فرسنده و گیرنده چگونه عمل میکنند؟

قبل از پاسخ به این سوال باید کمی اطلاعات در مورد رنگها داشته باشیم. در طبیعت رنگهای متنوعی وجود دارد که آنها را میبینیم. اما رنگهایی نیز وجود دارد که با چشم غیر مسلح دیده نمیشود. این رنگها در دو گروه نامگذاری میشوند.

سنسور-IR
سنسور-IR

رنگهای ماورا بنفش

رنگهای مادون قرمز

در سنسور IR یک فستنده داریم که میتواند نور مادون قرمز تولید کند. شما این نور را با چشم غیر مسلح نمیبینید اما اگر با دوربین موبایل خود به آن نگاه کنید میتوانید این نور را ببینید.

اما در کنار این فرستنده یک گیرنده وجود دارد که میتواند نور مادون قرمز را تشخیص دهد. در تصویر زیر شکل این فرستنده و گیرنده را ملاحظه میکنید.

سنسور
سنسور

 

دریافت نمایندگی رباتیک صنایع آموزشی چالیک

اما در ربات مسیر یاب این گیرنده و فرستنده چگونه عمل میکنند؟

برای پاسخ به این سوال قبل از هر چیز باید بدانیم بازتاب نور چیست.

می دانید که اجسام را می‌توان به دو دسته‌ی منیر و غیرمنیر تقسیم كرد. اجسام منیر مانند خورشید یا یك لامپ روشن از خودشان نور دارند؛ بنابراین نور آن‌ها می‌تواند به طور مستقیم به چشم ما برسد و آن‌ها را ببینیم. اما اجسام غیرمنیر در صورتی توسط چشم قابل رۆیت است كه نور یك چشمه‌ی نور، از روی آن‌ها بازتاب شود و به چشم ما برسد.

دیده شدن اشیای درون اتاق، هنگامی كه چراغ روشن است، به دلیل انتشار نور در اتاق و باز گشت نور از سطح اشیاء و رسیدن آن به چشم است.

اما اگر نوری به جسم تابانده شود چه اتفاقی میافتد؟

بخشی از این نور بازتابیده میشود

بخشی از این نور جذب جسم میگردد

بخشی از این نور از جسم عبور میکند

جنس و یا رنگ یک جسم باعث میشود که تعیین کنیم که برای نور چه اتفاقی میافتد.

به عنوا مثال بیشتر نوری که به یک شیشه تابانده شود از آن عبور میکند.

اما جسمهایی با رنگ روشن بیشتر نور را بازتاب میدهند و جسمهایی با رنگ تیره بیشتر نور را جذب میکنند. بنابراین رنگ سفید بیشترین بازتاب نور را دارد و رنگ سیاه کمترین بازتاب نور را دارد.

ما در ساخت ربات مسیریاب از این ویژگی استفاده خواهیم کرد. خط سیاه کمترین بازتاب نور را دارد و زمین اطراف که به رنگ سفید یا روشن است بیشترین بازتاب نور را دارد.

تا اینجا متوجه شدیم که اگر سنسور مادون قرمز را روی خط سیاه قرار دهیم گیرنده بازتابی بسیار کمی دریافت میکند و اگر روی خط سفید باشد بیشترین بازتاب را دریافت میکنیم. و این دقیقا به ما در تشخیص یک خط سیاه در زمینه سفید کمک خواهد کرد. دقت کنید رنگ سفید و سیاهی که انتخاب میکنیم در عملکرد درست ربات بسیار تاثیر گذار است.

در نهایت با آپلود برنامه آردوینو شما میتوانید ربات خود را راه اندازی کنید.

//ARDUINO LINE FOLLOWING CAR//
// YOU HAVE TO INSTALL THE AFMOTOR LIBRARY BEFORE UPLOAD THE CODE//
// GO TO SKETCH >> INCLUDE LIBRARY >> ADD .ZIP LIBRARY >> SELECT AF MOTOR ZIP FILE //
 
//including the libraries
#include <AFMotor.h>

//defining pins and variables
#define left A0
#define right A1

//defining motors
AF_DCMotor motor1(1, MOTOR12_1KHZ); 
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);



void setup() {
  //declaring pin types
  pinMode(left,INPUT);
  pinMode(right,INPUT);
  //begin serial communication
  Serial.begin(9600);
  
}

void loop(){
  //printing values of the sensors to the serial monitor
  Serial.println(digitalRead(left));
  
  Serial.println(digitalRead(right));

  //line detected by both
  if(digitalRead(left)==0 && digitalRead(right)==0){
    //Forward
    motor1.run(FORWARD);
    motor1.setSpeed(150);
    motor2.run(FORWARD);
    motor2.setSpeed(150);
    motor3.run(FORWARD);
    motor3.setSpeed(150);
    motor4.run(FORWARD);
    motor4.setSpeed(150);
  }
  //line detected by left sensor
  else if(digitalRead(left)==0 && !analogRead(right)==0){
    //turn left
    motor1.run(FORWARD);
    motor1.setSpeed(200);
    motor2.run(FORWARD);
    motor2.setSpeed(200);
    motor3.run(BACKWARD);
    motor3.setSpeed(200);
    motor4.run(BACKWARD);
    motor4.setSpeed(200);
    
  }
  //line detected by right sensor
  else if(!digitalRead(left)==0 && digitalRead(right)==0){
    //turn right
    motor1.run(BACKWARD);
    motor1.setSpeed(200);
    motor2.run(BACKWARD);
    motor2.setSpeed(200);
    motor3.run(FORWARD);
    motor3.setSpeed(200);
    motor4.run(FORWARD);
    motor4.setSpeed(200);
   
  }
  //line detected by none
  else if(!digitalRead(left)==0 && !digitalRead(right)==0){
    //stop
    motor1.run(RELEASE);
    motor1.setSpeed(0);
    motor2.run(RELEASE);
    motor2.setSpeed(0);
    motor3.run(RELEASE);
    motor3.setSpeed(0);
    motor4.run(RELEASE);
    motor4.setSpeed(0);
   
  }
  
}
شماتیک-مدار-ربات-مسیر-یاب
شماتیک-مدار-ربات-مسیر-یاب

دانلود برنامه ربات و شماتیک مدار ربات



رضا قنبری
متخصص آموزش رباتیک

رضا قنبری هستم متخصص آموزش رباتیک با بیش از 10 سال سابقه فعالیت در ایران

این مطلب را به اشتراک بگذارید

دسته بندی نشده

اعداد باینری، دسیمال و هگزا دسیمال

در این مقاله قصد داریم اعداد دسیمال (Decimal) اعداد باینری (binary) و هگزادسیمال (hexadecimal) یا به اختصار Hex را بررسی کنیم. اعداد دسیمال: به اعداد

دسته بندی نشده

دیتاشیت چیست ؟ بررسی دیتاشیت ال سی دی 2*16

 دیتاشیت چیست:  دیتاشیت(data sheet) یا صفحه اطلاعات(داده ها): دیتاشیت ها در واقع صفحاتی هستند که ویژگی ها و ساختار و عملکرد همچنین تمامی اطلاعات مورد

69 دیدگاه دربارهٔ «آموزش ساخت ربات مسیریاب – چگونه با آردوینو ربات تعقیب خط بسازیم»

  1. You could definitely see your enthusiasm in the article you write.
    The world hopes for even more passionate writers such as you
    who aren’t afraid to mention how they believe.
    At all times go after your heart.

    1. سلام ممنون فیلمتون خیلی آموزنده بود میشه بگین اون بردی که روی اردینو نشوند و سیم ها رو روی اون سوار کرد چی هست؟

      1. سلام خیلی ممنون اموزش کاملی بود
        فقط یه سوال اگر پس زمینه عوض بشه چی؟
        مثلا پس زمینه سیاه خط سفید

    1. سلام . ببخشید آیا با درایور دیگه ای هم میشه ساخت یعنی اون کتابخانه ای که نوشتین برای درایور های دیگه هم کار می‌کنه ؟

  2. سلام ممنون مطالبتون خیلی اموزنده بود میشه بگین چه کدی رو باید به ربات وارد کنیم تا کار کند؟

      1. کد برنامه ربات باز نمیشه میشه لطفا تایپ کنید بفرستید؟ ما خودمون برنامه نویسی ادوینو رو داریم اگه تایپ کنین میتونیم از روی شما بنویسیم و وارد ربات کنین

  3. سلام من ربات رو ساختم فقط نمی‌دونم چه کدی رو باید بهش وارد کنم میشه بگین چه کدی رو باید بهش وارد کنم تا کار کنم؟ممنون میشم اگه بگین

    1. سلام خسته نباشید من از این سایت خیلی خوشم اومده
      ومیخواستم روبات رو بسازم
      اگه لطف کنید وکد برنامه نورسی روبات رو به من بدید ممنون میشم
      ممنون میشم جوابم رو بدید

  4. سلام. ممنون از مطالب مفیدی که تو این سایت گذاشتین.
    من یک برنامه ای رو برای راه اندازی یک موتور نوشتم و میخاستم موتور هر 5 ثانیه یک بار جهت چرخشش عوض بشه
    اما سخت افزارش رو بستم، برنامه اش رو هم با دقت نوشتم اما وقتی اومدم امتحان کنم جهت موتور عوض نمی شد. نمیدونم مشکل از کجاست.؟؟؟؟؟؟؟؟؟؟؟
    لطفا راهنمایی کنید خیلی کارم لنگه
    ممنون میشم.

      1. امیرعلی عباسی

        لطفا شماره واتساپ میدید کد من درست هست سنسور هام هم کار میکنم در بخش موتور ال ای دی قرار میدم روشن میشه ولی موتور را روشن نمیکنه

    1. ببخشید اگه با گفته های ایشان میتوان از دو موتور و یک هرزگر استفاده کرد باید کد ها عوض شود

  5. سلام من یه ربات مسیر یاب دارم.با 4 تا سنسور ای ار TRT5000 و 1 ماژول شعله و 2 تا سنسور تشخیص رنگ TSC3200 و 1 پمپ اب کف کش 3 تا 6 ولتی و درایور موتور L298 و 4 تا موتور DC . سه تا باتری کتابی موازی کردم ولی اصلا نتونست ربات رو به حرکت در بیاره.میخواستم بدونم پیشنهادی دارین من از چه باتری و چه تعدادی استفاده کنم تا مشکلم حل بشه؟

  6. سلام واقعا ممنونم از این مقاله مفید و مرتب که با جزییات نوشته شده

    برای دو موتور و یک هرزگرد داخل کد باید موتور های 2و4 حذف بشه؟
    یک راهنمایی می فرمایید برای تغییر کد به جهت استفاده از 2 موتور و 1 هرزگرد.
    سپاس و درود بر شما

    1. اگر فقط از دو موتور استفاده میکنید و از هرزگرد برای حفظ تعادل میتونید موتور های ۲ و ۴ رو حذف کنید یا همینطور میتونید موتور های ۱ و ۳ را حذف کنید. چون در صورت استفاده از هرزگرد فقط نیاز به یک موتور در سمت چپ و یک موتور در سمت راست دارید. فقط به نحوه ی اتصال پین ها و تعریف انها در برنامه نویسی دقت کنید.

  7. سلام سوال دارم
    چرا برنامه اپلود نمیشه و این ارور رو میده
    C:\Users\iran\Documents\Arduino\sketch_dec17a\sketch_dec17a.ino:6:10: fatal error: AFMotor.h: No such file or directory
    #include
    ^~~~~~~~~~~
    compilation terminated.

    exit status 1

    Compilation error: AFMotor.h: No such file or directory

    1. سلام ارور مربوط به نصب نبودن کتابخانه ای که استفاده کردید هستش. قبل از آپلود کردن کدها در محیط آردوینو به قسمت Sketch بروید و گزینه ی include Library را بزنید و بعد به قسمت manage Library برید و بعد عبارت Adafriut motor shield library سرچ کنید و کتابخانه رو نصب کنید و بعد کدتون را آپلود کنید اگه با مشکل مواجه شدید بگید براتون به صورت زیپ فایل رو قرار بدم

        1. سلام
          ولتاژ باتری که استفاده میکنید باید در محدوده ای ک ذکر شده باشه اما مقدار آمپر یا شدت جریانی ک روی باتری لیتیومی این پروژه نوشته شده با بیشتر شدنش باعث میشه مدت زمانی که باتری شارژ رو نگه میداره بیشتر بشه(فرض کنید یک مخزن پر از مایع دارید و لوله هایی ک این مایع رو به قطعات دیگه میرسونه این رو با یک مدار مقایسه کنید هر چقدر مخزن بزرگتر باشه یعنی شدت جریان(مقدار آمپر)بیشتر هستش حالا قطعات هر مقدارآمپری ک نیاز داشته باشن برمیدارن(به اندازه ی ظرفیت یا مقداری ک برای انجام کار نیاز دارن) و با بقیش کاری ندارند و آسیبی هم بهشون نمیرسه مگر در شرایط خاص و متفاوت دیگه در خود قطعات که داخل یک پروژه بعدا نشون میدم اما ولتاژ یا اختلاف پتانسیل مثل سرعتی هست که مایع درون لوله داره پس اگر ولتاژ این مایع از یک حدی بیشتر باشه میتونه به اون قطعه آسیب بزنه. وقتی صحبت از آمپر میشه نگرانی آسیب رسیدن به قطعات رو نداشته باشید اما ولتاژ چرا!) یعنی گرفتن باتری بستگی به انتخاب خودتون داره اما باید توجه کنید که مجموع مقدار شدت جریانی ک موتورها و قطعات دیگه مصرف میکنن کمتر از مجموع باتریهای استفاده شده نباشه.(به عبارتی اون مخزن باید حداقل ظرفیتی به اندازه ی مجموع ظرفیت تمام قطعات داشته باشه اما اگه باتری ای با مقدار آمپر کمی بالاتر بگیرید میتونید بعدا اگه قطعه ی دیگه ای خواستید بدون نگرانی از همون باتریها استفاده کنید.)
          برای فهمیدن اینکه هر قطعه چند آمپر نیاز داره به دیتا شیت محصول نگاه کنید مثلا اگه داخل پروژه دو تا موتور میبینید باید مقدار آمپری که دو تا موتور نیاز دارند رو با هم جمع کنید و همینطور بقیه ی قطعات فکر کنم این توضیح برای پروژه های دیگه هم کمکتون کنه(پیشنهاد میکنم اگر از باتری ها در پروژه های دیگه هم استفاده میکنید یا کیفیتش یا طول عمرش برای شما مهمه باتری لیتیومی high power Li-ion معمولا در بازار صورتی یا آبی رنگ هستش و شبیه به همون باتری های داخل عکس میتونید تهیه کنید کمی تفاوت قیمت با بقیه ی باتری ها دارند اما با توجه به کیفیتشون زیاد نیست شارژرش هم حتما تهیه کنید)

  8. دوستان کتابخانه AF MOTOR را باید نصب کنید تا خطاش برطرف بشه تو گوگل کتابخانه ش هست میتونید دانلود کنید و از طریق گزینه SKETCH – INCLUDE LIBRARY اضافه کنید همون فایل زیپ رو

  9. مهندس ایا در مدار این پروژه آردینو هم باید تغذیه جداگانه داشته باشه یا از طریق باتری هایی که به شیلد درایور متصل شده اند تغذیه میشه ؟ اگه میشه طرح کامل تر ی از شماتیک مدار بذارید ممنون میشم

    1. نیاز به باتزی جداگانه ای نیست. درایور باید مثل شیلد روی برد آردوینو سوار بشه و نیاز به اتصال جداگانه ای برای تغذیه نداره.

  10. سلام و خسته نباشید من همه مراحل رو رفتم در حالت عادی ربات حرکت می‌کنه اما وقتی سنسور های تشخیص خط رو به شیلد درایور متصل میکنم ربات حرکت نمیکنه و سنسور ها هم روشن نمیشه واقعا موندم چکار کنم
    حتی ولتاژ پایه های تغذیه و زمین شیلد درایور رو گرفتم و خروجی میده ولی وقتی سنسور وصل میکنم هیچی
    سنسور ها جداگانه تست کردم و سالمه ممنون میشم راهنمایی کنید

    1. سلام مشکل میتونه از اتصال اشتباه سیم ها باشه اول اطمینان حاصل کنید که سیم های سیگنال رو اشتباه به زمین یا ولتاژ متصل نکرده باشید در صورت اتصال اشتباه سیم ها ممکنه اتصال کوتاه رخ بده و برد اصلیتون هم بسوزه, از طرفی مطمئن شید که لحیم های پشت ماژول به فلز دیگه ای برخورد نکنه

    2. اگه از شیلد آردوینو نانو استفاده میکنید حتما پین D0 سنسور رو به S متصل کنید و GND به G و Vcc به v

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.