پروژه ربات دنبال کننده خط با آردوینو (ساخت مسیریاب)

محتویات
پروژه ربات دنبال کننده خط با آردوینو (آموزش کامل ساخت مسیریاب Arduino) را آماده کردیم. فیلم عملکرد مدار را از دست ندهید!
ربات مسیریاب (مسیر یاب، دنبال کننده خط) یک ماشین است که به دنبال یک خط سفید یا سیاه است. اساسا دو نوع ربات دنبال کننده خط وجود دارد. یکی دنبال کننده خط سیاه و دیگری دنبال کننده خط سفید است. مفهوم کار این ربات به نور بستگی دارد. در این پروژه آردوینو کار ما دنبال کردن خط سیاه با ربات است. وقتی که نور بر یک سطح سفید بتابد، تقریبا کاملا منعکس میشود و وقتی که سطح سیاه باشد جذب میشود. این قضیه باعث میشود ربات مسیر یاب ما کار کند.
مدار پروژه ربات مسیر یاب با آردوینو
این ربات به 3 بخش تقسیم میشود:
- بخش سنسور
- بخش کنترل
- بخش راننده
بخش سنسور : این بخش شامل سنسور های مادون قرمز، پتانسیومتر، ال ای دی، کمپراتور (آپ آمپ) است. پتانسیومتر برای تعیین ولتاژ مرجع در ترمنیال اول استفاده میشوند. و سنسور های مادون قرمز برای حس کردن خط و تغییر ولتاژ ترمینال دوم استفاده میشوند. سپس مقایسه کننده هر دو ولتاژ را مقایسه میکند و یک سیگنال را در خروجی خود تولید میکند. در این پروژه ما از LM358 به عنوان مقایسه کننده استفاده میکنیم.


در این ربات دنبال کننده خط، ما از فرستنده ها و گیرنده IR استفاده کردیم. ماژول های IR مبتنی به مادون قرمز هستند و برای ارسال و دریافت نور از آن ها استفاده میشود. با توجه به تصویر بالا، وقتی اشعه مادون قرمز به سطح سفید بتابد، سطح آن را بازتاب میدهد به سمت گیرنده مادون قرمز. و وقتی به سطح سیاه بتابد، آن اشعه توسط سطح سیاه جذب میشو و هیچ اتفاقی نمی افتد!
بخش کنترل : از Arduino Pro Mini برای کنترل محاسبات ربات مسیریاب استفاده میکنیم. خروجی مقایسه کننده به پین شماره 2 و 3 آردوینو متصل میشود. آردوینو این سیگنال ها را میخواند و دستورات را به مدار درایور ارسال میکند تا ربات مسیر صحیح را دنبال کند.
بخش راننده : بخش راننده شامل موتور درایو و 2 موتور DC است. چون آردوینو ولتاژ کافی را نمیتواند به موتور ها بدهد ما از موتور درایو استفاده میکنیم تا ولتاژ و جریان کافی برای موتور ها فراهم شود. آردوینو دستورات را به این موتور ها ارسال میکند.
همچنین ببینید : آموزش کامل ساخت ماشین دنبال کننده خط ( پروژه ربات مسیریاب PIC )
نحوه کار پروژه دنبال کننده خط
کار با این ربات خیلی جالب است، این ربات با استفاده از سنسور ها خط سیاه را حس میکنند و سیگنال را به Arduino میفرستند و بعد آردوینو اطلاعات حرکت را به موتور ها اعلام میکند!
در این پروژه همانطور که گفتیم از 2 سنسور استفاده میکنیم که یکی در سمت راست و یکی در سمت چپ است. وقتی که دو سنسور سمت چپ و راست سطح سفید را حس کنند ربات به جلو حرکت میکند.
اگر سنسور سمت چپ روی سطح سیاه قرار بگیرد، ربات به سمت چپ حرکت میکند.

اگر سنسور سمت راست روی خط سیاه قرار بگیرد، ربات به سمت راست میچرخد.

اگه هر دو سنسور روی خط سیاه باشند، ربات متوقف میشود!

تصاویر بالا را میتوانید با جدول زیر مقایسه کنید تا بهتر متوجه شوید :
ورودی | خروجی | حرکت ربات | ||||
سنسور چپ | سنسور راست | موتور چپ | Right موتور راست | |||
LS | RS | LM1 | LM2 | RM1 | RM2 | |
0 | 0 | 0 | 0 | 0 | 0 | توقف ربات |
0 | 1 | 1 | 0 | 0 | 0 | چرخش به راست |
1 | 0 | 0 | 0 | 1 | 0 | چرخش به چپ |
1 | 1 | 1 | 0 | 1 | 0 | حرکت به جلو |
قطعات مورد نیاز پروژه مسیریاب
- برد آردوینو Pro mini
- ماژول سنسور مادون قرمز – دو عدد
- موتور DC – دو عدد
- موتور درایور L293D
- مقاومت 1 کیلو اهم – چهار عدد
- مقاومت 10 کیلو اهم – دو عدد
- پتانسیومتر 10 کیلو اهم – دو عدد
- مقایسه کننده آپ امپ LM358 – دو عدد
- باتری 9 ولت
- رگولاتور 7805
کد پروژه ربات مسیریاب با آردوینو
در قسمت اول کد ما پین های سنسور و موتور ها را تعریف میکند:
#define LS 2 // سنسور چپ #define RS 3 // سنسور راست #define LM1 4 // موتور چپ #define LM2 5 // موتور چپ #define RM1 6 // موتور راست #define RM2 7 // موتور راست
سپس در این قسمت ما حالت این پین ها را تعریف میکنیم، پین های سنسور به عنوان ورودی و پین های موتور به عنوان خروجی معرفی میشوند.
pinMode(LS, INPUT); // ورودی pinMode(RS, INPUT); // ورودی pinMode(LM1, OUTPUT); // خروجی pinMode(LM2, OUTPUT); // خروجی pinMode(RM1, OUTPUT); // خروجی pinMode(RM2, OUTPUT); // خروجی
در قسمت پایین ما برای نمونه یک عملکرد ربات را توضیح میدهیم، ما در این قسمت تعریف میکنیم در چه حالت ربات باید به سمت راست بپیچد:
if(!(digitalRead(LS)) && digitalRead(RS)) // هنگامی که سنسور سمت راست روی خط سیاه برود { digitalWrite(LM1, LOW); // موتور سمت چپ خاموش digitalWrite(LM2, LOW); // موتور سمت چپ خاموش digitalWrite(RM1, HIGH); // موتور سمت راست فعال digitalWrite(RM2, LOW); // موتور سمت راست }
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام از اونجایی که میخوایم برای مسابقه از این ربات استفاده کنیم، باید خیلی دقیق باشه و به هیچ وجه ربات از مسیر خارج نشه؛ خلاصه دقت کار خیلی باید بیشتر باشه حالا چطور میتونیم اینکار رو انجام بدیم ؟
دمت گرم بعد هزار جست و جو درست شد
سلام
اگه ربات از سمت چپ روی خط سیاه بره کدش برعکس آخرین عکس می شه؟
سلام ، من میخوام برای خودروم از این سنسور بزارم تا وقتی ماشینم از روی خط های سفید جاده بیرون رفت ، هر طرفی که بیرونه رفته از همون طرف بوق بزنه تا به راننده هشدار بده ، آیا میتونم این پروژه رو درست کنم یا نه؟ لطفا کمکم کنید
سلام عزیز
این نوع سنسور ها برای کار های آموزشی هستند. با توجه به وضعیت جاده های ایران و خط کشی که غالبا رنگشون رفته، استفاده از این سنسور مناسب نیست.
سلام مهندس جان برای بارگزاری کدها هم باید کد اردوینو رو اپلود کنم و هم کد هگز رو یا فقط کد اردوینو رو اپلود کنم کفایت می کنه؟
سلام عزیز
در نرم افزار آردوینو روی دکمه آپلود بزنید کافی هست
سلام وقتتون بخیر
من این پروژه رو میخوام بسازم ولی متاسفانه فایل hex وجود نداره
ممنون میشم فایل رو قرار بدین
سلام عزیز
آردوینو نیازی به فایل هگز نداره، نرم افزار آردوینو رو نصب کنید کد رو کپی کنید و روی دکمه آپلود کلیک کنید.
اگر با برنامه نویسی آردوینو آشنایی ندارید دوره آموزش آردوینو رو مشاهده کنید
سلام من یه ربات مسیر یاب دارم.با 4 تا سنسور ای ار TRT5000 و 1 ماژول شعله و 2 تا سنسور تشخیص رنگ TSC3200 و 1 پمپ اب کف کش 3 تا 6 ولتی و درایور موتور L298 و 4 تا موتور DC . سه تا باتری کتابی موازی کردم ولی اصلا نتونست ربات رو به حرکت در بیاره.میخواستم بدونم پیشنهادی دارین من از چه باتری و چه تعدادی استفاده کنم تا مشکلم حل بشه؟
سلام عزیز
در مرحله اول باید از موتور های کم مصرف استفاده کنید. باتری های لیتیومی مناسب هست