چگونه یک ربات ساده بسازیم
ساخت یک ربات ساده، راهی سرگرمکننده برای یادگیری الکترونیک، مکانیک پایه و برنامهنویسی است. بسیاری از مردم فکر میکنند رباتها باید گران و پیچیده باشند، اما در واقع میتوانیم با پروژههای کوچکی که به راحتی در خانه مونتاژ میشوند، شروع کنیم. در این مقاله، یک ربات سادهی اجتناب از مانع با استفاده از سنسورهای اولتراسونیک خواهیم ساخت. این ربات میتواند به جلو راه برود و وقتی جسمی را در مقابل خود تشخیص میدهد، به طور خودکار بچرخد. این پروژه برای مبتدیان ، دانشآموزان یا هر کسی که میخواهد یادگیری رباتیک را شروع کند، مناسب است.
۱. مفهوم رباتهای ساده را درک کنید
به طور کلی، رباتها سه جزء اصلی دارند: مغز (کنترلکننده)، حواس (سنسورها) و عضلات (محرکها). در این پروژه:
– کنترلکننده: آردوینو اونو (یا سازگار با آن)
سنسور: سنسور اولتراسونیک HC-SR04 برای اندازهگیری فاصله
– محرک: موتور DC که چرخها را به حرکت در میآورد
– درایور موتور: درایور موتور L298N (یا L293D) به طوری که موتور بتواند توسط آردوینو کنترل شود
وقتی سنسور فاصله جلوی ربات را میخواند و فاصله خیلی نزدیک است، آردوینو به درایور موتور دستور میدهد جهت حرکت را تغییر دهد، مثلاً به راست یا چپ بپیچد.
۲. ابزار و مواد مورد نیاز
در اینجا لیستی از قطعات رایج که به راحتی در فروشگاههای لوازم الکترونیکی یا بازارها یافت میشوند، آورده شده است:
۱. آردوینو اونو (۱ عدد)
۲. درایور موتور L298N (یک قطعه)
۳. سنسور اولتراسونیک HC-SR04 (یک عدد)
۴. موتور DC + گیربکس و چرخها (۲ قطعه) برای ربات دو چرخ (دیفرانسیل درایو)
۵. چرخ کاستور (۱ قطعه) چرخ کوچک متعادل کننده در جلو یا عقب
۶. باتری (مثلاً ۲ عدد باتری ۱۸۶۵۰ یا ۷.۴ ولتی) یا ۶ عدد باتری قلمی، بسته به نیاز موتور
۷. شاسی ربات (میتوانید آن را به صورت آماده خریداری کنید یا از اکریلیک/تخته سه لا بسازید)
۸. کابلهای رابط (نری-ماده و نری-نری)
۹. کلید روشن/خاموش (اختیاری، اما بسیار مفید)
۱۰. تخته نان کوچک (اختیاری)
۱۱. پیچ، مهره، پیچگوشتی و چسب حرارتی در صورت نیاز
اگر چیزی حتی سادهتر (بدون حسگرهای اولتراسونیک) میخواهید، میتوانید یک ربات «دنبالکننده خط» با حسگرهای خط بسازید، اما نسخههای اجتناب از مانع اغلب «زندهتر» به نظر میرسند زیرا به اشیاء جلوی خود واکنش نشان میدهند.
۳. طراحی شاسی ربات
شاسی، قابی است که تمام اجزا روی آن سوار میشوند. میتوانید از یک کیت شاسی آماده استفاده کنید یا خودتان از مواد سبک مانند اکریلیک، PVC یا چوب نازک، شاسی بسازید. اصول کار به این صورت است:
– دو موتور DC را در سمت چپ و راست نصب کنید.
- چرخها را روی موتورسیکلت نصب کنید.
– برای ایجاد تعادل در ربات، یک چرخ کاستر به عنوان متعادل کننده اضافه کنید.
– باتری را در موقعیتی قرار دهید که باعث کج شدن ربات نشود.
– آردوینو و درایورهای موتور باید برای دسترسی آسان در بالا قرار داده شوند.
مطمئن شوید که کابل آویزان نباشد تا در چرخها گیر نکند.
۴. نمودار سیمکشی اولیه
در اینجا یک مفهوم کلی اتصال ارائه شده است (پینها قابل تنظیم هستند):
الف) موتور به درایور L298N
موتور سمت چپ برای خروجی OUT1 و OUT2
موتور سمت راست برای خروجی OUT3 و OUT4
ب) درایور L298N برای آردوینو
- پینهای IN1 و IN2 برای موتور چپ به برخی از پینهای دیجیتال آردوینو
پینهای IN3 و IN4 برای موتور سمت راست به برخی از پینهای دیجیتال آردوینو
– ENA و ENB (فعال) میتوانند برای کنترل سرعت (اختیاری) به پینهای PWM آردوینو متصل شوند. در غیر این صورت، برخی از ماژولهای L298N از قبل دارای یک جامپر فعالساز هستند تا به موتور اجازه دهند با سرعت کامل کار کند.
ج) سنسور HC-SR04 به آردوینو
- VCC به 5 ولت آردوینو
- اتصال زمین به زمین آردوینو
- TRIG به پین دیجیتال آردوینو
- ECHO به پین دیجیتال آردوینو
د) قدرت
موتور به جریان بیشتری نسبت به آنچه آردوینو میتواند فراهم کند، نیاز دارد. بنابراین:
– باتری اصلی به درایور موتور (ترمینالهای +۱۲ ولت و GND در L298N) وصل میشود.
– آردوینو را میتوان از باتری (از طریق VIN) یا پاوربانک/USB جداگانه نیز تغذیه کرد.
– اتصال به زمین: برای پایدار بودن سیگنال کنترل، باید GND باتری/درایور و GND آردوینو متصل باشند.
رایجترین اشتباه در بین مبتدیان، فراموش کردن نصب GND است، بنابراین ربات به طور نامنظم حرکت میکند.
۵. منطق کاری ربات تشخیص مانع
این ربات با یک جریان ساده کار خواهد کرد:
۱. فاصله از سنسور اولتراسونیک را بخوانید.
۲. اگر فاصله از آستانه بیشتر شود (مثلاً ۲۰ سانتیمتر)، ربات به جلو حرکت میکند.
۳. اگر فاصله کمتر یا مساوی ۲۰ سانتیمتر باشد، ربات برای مدت کوتاهی متوقف میشود.
۴. ربات کمی به عقب حرکت میکند و سپس برای چند صد میلیثانیه (مثلاً به سمت راست) میچرخد.
۵. دوباره فاصله را بخوانید و تکرار کنید.
با این الگو، به نظر میرسد که ربات از موانع «اجتناب» میکند، حتی اگر بهینهترین مسیر را انتخاب نکند.
۶. مثال ساده کد آردوینو
در زیر یک نمونه کد اولیه آمده است. میتوانید پینها را متناسب با مدار خود تنظیم کنید:
cpp
تعریف TRIG 8
تعریف اکو ۹
// موتور سمت چپ
تعریف IN1 2
تعریف IN2 3
// موتور سمت راست
تعریف IN3 4
تعریف IN4 5
مدت زمان طولانی؛
فاصله عدد صحیح؛
تابع ()readDistance از نوع int است.
digitalWrite(TRIG، پایین)؛
تأخیر میکروثانیه (2)؛
نوشتن دیجیتال (TRIG، بالا)؛
تأخیر میکروثانیه (10)؛
digitalWrite(TRIG، پایین)؛
مدت زمان = پالس در لحظه (پژواک، بالا)؛
عدد صحیح cm = مدت زمان 0.034 / 2;
سانتی متر برگشتی؛
}
اعتبار رو به جلو () {
نوشتن دیجیتال (IN1، بالا)؛
نوشتن دیجیتال (IN2، پایین)؛
نوشتن دیجیتال (IN3، بالا)؛
نوشتن دیجیتال (IN4، پایین)؛
}
باطل معکوس () {
نوشتن دیجیتال (IN1، پایین)؛
نوشتن دیجیتال (IN2، بالا)؛
نوشتن دیجیتال (IN3، پایین)؛
نوشتن دیجیتال (IN4، بالا)؛
}
void turnRight() {
نوشتن دیجیتال (IN1، بالا)؛
نوشتن دیجیتال (IN2، پایین)؛
نوشتن دیجیتال (IN3، پایین)؛
نوشتن دیجیتال (IN4، بالا)؛
}
توقف باطل () {
نوشتن دیجیتال (IN1، پایین)؛
نوشتن دیجیتال (IN2، پایین)؛
نوشتن دیجیتال (IN3، پایین)؛
نوشتن دیجیتال (IN4، پایین)؛
}
void setup () {
حالت پین (TRIG، خروجی)؛
حالت پین (اکو، ورودی)؛
pinMode (IN1، OUTPUT)؛
pinMode (IN2، OUTPUT)؛
pinMode (IN3، OUTPUT)؛
pinMode (IN4، OUTPUT)؛
Serial.begin (9600)؛
}
void loop () {
فاصله = readDistance();
تابع Serial.println(فاصله) را چاپ میکند.
اگر (فاصله > 20) {
ادامه دادن();
} دیگری {
توقف();
تأخیر (200)
معکوس()؛
تأخیر (300)
توقف();
تأخیر (200)
به راست بپیچ();
تأخیر (400)
توقف();
}
تأخیر (50)
}
""
این کد، ابتداییترین نسخه است. اگر ربات زیاد از کار میافتد، میتوانید آستانه را به ۲۵ تا ۳۰ سانتیمتر افزایش دهید یا زمان چرخش را بیشتر کنید.
۷. تست و تنظیم
پس از مونتاژ ربات، آزمایش گام به گام را انجام دهید:
۱. ابتدا موتور را آزمایش کنید: عملکرد جلو/عقب را اجرا کنید تا مطمئن شوید چرخها در جهت صحیح میچرخند.
۲. سنسور اولتراسونیک را آزمایش کنید: نتایج فاصله را در مانیتور سریال Arduino IDE مشاهده کنید.
۳. سیستم را ترکیب کنید: برنامه کامل را اجرا کنید و واکنش ربات را مشاهده کنید.
اگر ربات در حال چرخش یا حرکت به عقب است، در حالی که باید به جلو حرکت کند، ممکن است لازم باشد کابلهای موتور را عوض کنید یا منطق IN1-IN2 (و IN3-IN4) را معکوس کنید.
۸. مشکلات و راهحلهای رایج
برخی از موانعی که اغلب پیش میآیند:
– ربات اصلاً حرکت نمیکند: باتری را بررسی کنید، درایور موتور را بررسی کنید، مطمئن شوید که جامپر enable فعال است.
– آردوینو هنگام کار موتور ریست میشود: منبع تغذیه ناکافی یا صدای موتور. سعی کنید از یک باتری جداگانه برای آردوینو استفاده کنید، یک خازن اضافه کنید و اتصال زمین را ثابت کنید.
– عدد حسگر فاصله ناپایدار است: مطمئن شوید که حسگر رو به جلو و مستقیم قرار دارد، آن را از لرزش بیش از حد دور نگه دارید و مطمئن شوید که کابل شل نیست.
– ربات در گوشهای گیر کرده است: منطق چرخش تصادفی را اضافه کنید یا از سروو موتورها برای حرکت دادن حسگرها استفاده کنید تا بتوانند به چپ و راست نگاه کنند.
۹. ایدههای توسعهای پس از موفقیت
پس از راهاندازی و اجرای ربات پایه، میتوانید آن را به چیزی جالبتر ارتقا دهید:
– اضافه کردن سروو موتورها برای حرکت حسگرهای اولتراسونیک به طوری که ربات بهترین مسیر را انتخاب کند.
- کنترل بلوتوث (HC-05) اضافه شده است تا بتوان آن را از طریق تلفن همراه کنترل کرد.
- استفاده از حسگرهای خط برای ساخت ربات تعقیب خط.
– سرعت PWM را برای حرکت روانتر تنظیم کنید.
– هنگام تشخیص مانع، یک زنگ اخبار یا LED به عنوان نشانگر اضافه کنید.
نتیجه گیری
ساخت یک ربات ساده نباید دشوار باشد. با یک آردوینو، یک موتور DC، یک درایور موتور و یک حسگر اولتراسونیک، میتوانید رباتی بسازید که بتواند به طور خودکار حرکت کند و از موانع دوری کند. کلید موفقیت، سیمکشی مرتب، منابع کافی و آزمایش کامل است. وقتی این پروژه را به خوبی انجام دادید، برای انجام پروژههای رباتیک پیچیدهتر، مانند یک ربات هوشمند مبتنی بر دوربین یا رباتی که میتواند اشیاء را دنبال کند، آمادهتر خواهید بود.
اگر بخواهید، میتوانم به شما کمک کنم تا نمودار سیمکشی دقیقتری را بر اساس پینهایی که انتخاب میکنید ایجاد کنید، یا کد را طوری تنظیم کنید که ربات بتواند به صورت تصادفی به چپ/راست بچرخد و «هوشمندتر» باشد.