در این مقاله قصد داریم نمونه ی کامل از طراحی ربات اسپورت فیرا کاپ را قرار دهیم. این طراحی شامل فایل سه بعدی بدنه ربات، فایل لایه باز آلتیوم برای بردهای ربات و فایل برنامه ی اولیه است.
ابتدا شناختی راجع به مسابقات رباتهای ورزشی (اسپورت) پیدا کنیم.
نگاهی به قوانین مسابقات رباتهای ورزشی (اسپورت)
این ربات باید مسیری که به صورت خطی مشکی در زمین سفید است را دنبال کند. مسیر دارای پیچ وخم هایی است. در طول مسیر اصلی، مسیرهای فرعی وجود دارد که ربات را به آیتم های ورزشی میرساند. ربات باید وارد مسیرهای فرعی شده، آیتم ورزشی مورد نظر را انجام داده و مجددا به مسیر اصلی بازگردد.
هر آیتم به وسیله یک کارت رنگی که در کنار خط گذاشته می شود شناسایی می شود. این رنگ ها به صورت زیر مشخص شده اند.
رنگ زرد نشان دهنده وجود آیتم وزنه برداری در طول مسیر است. در آیتم وزنه برداری ربات باید وزنه ای به سنگینی حدود 500 گرم را تا ارتفاع 10 سانتی متر از زمین بلند کرده و بر روی سکو قرار دهد.
رنگ آبی نشان دهنده ی آیتم تیراندازی است. ربات وقتی وارد این آیتم می شود باید به یک سیبل که در فاصله ی یک متری از ربات قرار دارد تیر پرتاب کند.
رنگ نقره ای نشان دهنده ی آیتم هل دادن مانع است. ربات در این آیتم باید یک مکعب مستطیل به وزن حدود 500 گرم را هل دهد.
رنگ قرمز نشان دهنده ی آیتم دو و میدانی است. در این آیتم ربات باید به تعداد مشخص و با سرعت بیشتر به دور یک حلقه بچرخد و سپس خارج شود.
رنگ سبز نشان دهنده ی آیتم فوتبال است. در این آیتم ربات باید توپ را به یکی از دو دروازه ای که مقابل ربات است شوت کند. دروازه ی صحیح قبل از مسابقه توسط داور اعلام می شود.
طراحی ربات برای انجام آیتم ها
برای طراحی ربات از لحاظ فنی کارهایی که ربات باید انجام دهد را دسته بندی کرده و به ترتیب به معرفی اجزا و قطعات مورد نیاز هر قسمت می پردازیم.
تعقیب کردن خط
اولین کاری که این ربات باید بتواند انجام دهد تعقیب کردن خط است. این خط مسیری به رنگ سیاه در زمین سفید خواهد بود. برای انجام این کار می شود از دوربین و پردازش تصویر کمک گرفت ولی انجام این کار با استفاده از سنسورهای مادون قرمز بسیار ساده تر انجام می شود. برای این منظور تعدادی سنسور مادون قرمز به صورت شکل زیر در قسمت زیر ربات قرار می دهیم. هر کدام از این سنسورها میتوانند رنگ سیاه یا سفید مقابل خود را به خوبی تشخیص دهند. بنابراین به کمک آنها می توان متوجه شد که وضعیت ربات نسبت به خط چگونه است.
در مرحله ی بعد اطلاعات خروجی سنسورها باید پردازش شوند. برای این منظور از میکروکنترلر ATmega128 استفاده شده است. با توجه به محبوبیت نرم افزار آردوینو برای برنامه نویسی این آی سی از محیط برنامه نویسی آردوینو استفاده می شود. ولی از آنجاییکه این میکروکنترلر جزء گزینه های قابل انتخاب آردوینو نیست، باید کتابخانه ی MegaCore به آردوینو اضافه شود. برای نصب کتابخانه MegaCore مراحل زیر را انجام دهید.
This installation method requires Arduino IDE version 1.8.0 or greater
Open the Arduino IDE
Open the File > Preferences menu item
Enter the following URL in Additional Boards Manager URLs: https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
Open the Tools > Board > Boards Manager... menu item
Wait for the platform indexes to finish downloading
Scroll down until you see the MegaCore entry and click on it
Click Install
After installation is complete close the Boards Manager window
در مرحله ی آخر وظیفه ی مکانیک ربات است که دستوراتی که از میکروکنترلر رسیده است را به حرکت تبدیل کند. برای این منظور 4 عدد موتور و چرخ برای ربات تعبیه شده است که بتواند ربات را به سمت های مختلف حرکت دهد.
موتورهای استفاده شده در این ربات از نوع گیربکس دار و انکودر دار هستند. گشتاور نسبتا بالا و در عین حال کوچک بودن کمیت هایی است که در انتخاب نوع موتور برای این ربات بسیار مورد توجه باید قرار بگیرند.
این موتور ها با نام ZGA25 شناخته می شوند و جزء موتورهای رایج بازار ایران است. ولی چنانچه مدل انکودر دار آن را پیدا نکردید میتوانید از مدل معمولی آن استفاده کنید. (جای پیچ های همه ی آنها با هم یکسان هستند)
مشخصات این موتور ها در جدول زیر آورده شده است
کمیت | مقدار | واحد |
سرعت | 100 | دور در دقیقه |
گشتاور | 1.5 | کیلوگرم بر سانتی متر |
ولتاژ نامی | 12 | ولت |
جریان نامی | 0.3 | آمپر |
جریان در حالت اِستال | 1.2 | آمپر |
برای کنترل موتور ها توسط میکروکنترلر به تقویت کننده هایی نیاز است تا جریان مورد نیاز موتور را تامین کند. برای این کار از درایور L298 استفاده شده است که برای راه اندازی 2 موتور مناسب است. همچنین کانکتورهایی برای اتصال موتورهای داینامیکسل و همچنین موتور سروو MG قرار داده شده است. در واقع این مدار مخصوص رباتهای اسپورت نیست و طوری طراحی شده است تا بتواند برای رباتهای مسابقات مختلف قابل استفاده باشد.
تشخیص کارتهای رنگی
رنگهایی که در زمین مسابقه علاوه بر سفید و سیاه باید توسط ربات تشخیص داده شوند عبارتند از :
سبز، قرمز، آبی، زرد، نقره ای
برای تشخیص این رنگ ها از ماژول APDS9960 استفاده می کنیم. این ماژول با رابط I2C کار میکند و رنگ اجسام مقابل خودش را به 3 مولفه ی اصلی سبز، آبی، قرمز تجزیه کرده و به کاربر می دهد. کاربر با تشخیص میزان شدت هر مولفه می تواند از رنگ مقابل سنسور مطلع شود.
با توجه به این که کارتهای رنگی میتوانند سمت چپ یا راست خط باشند، از دو عدد از این سنسورها در ربات استفاده شده است.
آیتم دو و میدانی
این آیتم نیاز به سنسور جدیدی ندارد و با برنامه نویسی می توان این آیتم را به خوبی انجام داد. در این آیتم ربات باید در یک محوطه ی بسته به تعداد مشخصی که توسط داور اعلام می شود بچرخد و سپس به ادامه ی مسیر بپردازد. مسیری که در این قسمت قرار دارد مسیر ساده ای است و زاویه های شکسته ندارد. بنابراین ربات می تواند این قسمت را با سرعت بالاتری انجام دهد.
آیتم هل دادن مانع
این آیتم هم نیاز به سنسور جدید ندارد و تنها با برنامه نویسی میتوان این آیتم را انجام داد. ولی از لحاظ مکانیکی، بدنه ی ربات باید توانایی هل دادن وزنه ی نیم کیلوگرمی را داشته باشد.
شوت کردن توپ
در این آیتم ربات باید یک توپ را به سمت دروازه ی صحیح شوت کند. جهت صحیح دروازه با الگوریتم های برنامه نویسی مشخص خواهد شد. در اینجا به یک شوتر احتیاج داریم تا توپ را شوت کند. برای این کار از یک موتور 500RPM استفاده شده است. به این موتور یک اهرم متصل است که با روشن شدن موتور به سرعت به سمت بالا می آید و باعث شوت شدن توپ می شود.
برای اینکه ربات در فاصله ی مناسبی از توپ قرار بگیرد، یک جفت سنسور مادون قرمز در دو طرف شوتر قرار گرفته اند. وقتی ربات به توپ برسد، ارتباط بین فرستنده و گیرنده ی مادون قرمز قطع می شود و از این طریق ربات متوجه رسیدن به توپ می شود.
6- وزنه برداری
این آیتم جزء سخت ترین کارهایی است که ربات باید بتواند انجام دهد. در این آیتم ربات باید یک وزنه ی 500 گرمی را از سکوی اول بلند کند و روی سکوی دوم بگذارد. برای اینکار به یک بازو احتیاج است که به صورت زیر طراحی شده است.
موتوری که برای اینکار استفاده شده است از نوع سروو و از شرکت داینامیکسل انتخاب شده است. این مدل موتور AX12 نام دارد که مشخصات آن در جدول زیر آورده شده است.
Item | Specifications |
Baud Rate | 7,843 [bps] ~ 1 [Mbps] |
Weight | AX-12 (53.5 [g]), AX-12+ (53.5 [g]), AX-12A (54.6 [g]) |
Dimensions (W x H x D) | 32 X 50 X 40 [mm] |
Resolution | 0.29 [°] |
Running Degree | 0 ~ 300 [°] |
Motor | Cored |
Gear Ratio | 254 : 1 |
Stall Torque | 1.5 [N.m] (at 12 [V], 1.5 [A]) |
No Load Speed | 59 [rev/min] (at 12V) |
Operating Temperature | -5 ~ +70 [°C] |
Input Voltage | 9.0 ~ 12.0 [V] (Recommended : 11.1V) |
Command Signal | Digital Packet |
Physical Connection | TTL Level Multi Drop Bus |
ID | 254 ID (0~253) |
Feedback | Position, Temperature, Load, Input Voltage, etc |
Gear Material | Engineering Plastic(Full) |
Case Material | Engineering Plastic(Front, Middle, Back) |
7- تیراندازی
برای این آیتم یک طراحی مکانیکی نیاز است. باید یک تیرکمان طراحی کرد به طوریکه ضامن رها کننده ی تیر توسط برنامه کنترل شود. برای این منظور تیرکمان به صورت زیر طراحی شده است.
قسمت مشکی رنگ زیر تیر کمان، ضامن تیر است و وقتی به سمت پایین کشیده شود تیر رها می شود. برای پایین کشیدن ضامن از همان اهرم وزنه برداری استفاده می کنیم. به این صورت که وقتی اهرم از مقدار معمول خود عقب تر برود به ضامن برخورد می کند و ضامن را به سمت پایین می کشد و تیر رها می شود.
و در نهایت قسمت های مختلف را روی بدنه قرار می دهیم و ظاهری برای ربات طراحی می کنیم.
دانلود فایلهای ربات
برای دانلود فایلهای بدنه ربات با فرمت سالیدورکز و به صورت زیپ شده اینجا کلیک کنید. توجه داشته باشید برای باز کردن این فایلها به نرم افزار سالید ورکز ورژن 2024 احتیاج دارید. در ورژن های پایین باز نمیشوند.
در صورتیکه سالیدورک نداشته باشید می توانید فایل های فرمت STL را دانلود کنید. این فایلها دقیقا همان فایلهای ربات است و با فرمت STL ذخیره شده اند. همین فایل ها را می توانید برای شرکت های پرینت سه بعدی سفارش دهید تا برایتان تولید کنند. فقط هنگام سفارش رنگ مورد نظر خود را باید اعلام کنید.
برای دانلود فایل های ربات با فرمت STL اینجا کلیک کنید.
برای دانلود فایلهای PCB ربات با فرمت آلتیوم دیزاینر و به صورت زیپ شده اینجا کلیک کنید. توجه داشته باشید برای بازکردن این فایل ها باید نرم افزار آلتیوم دیزاینر داشته باشید. (ورژن مهم نیست). همین فایل ها را میتوانید مستقیما به شرکت های تولید PCB سفارش دهید و بعد از تولید PCB و خرید قطعات شروع به مونتاژ کردن آنها کنید. البته برای انجام این کار یک مقدار تجربه نیاز است.
محتویات این فایل فشرده شامل برد اصلی ربات، برد سنسور ربات، و هدر برد اتمگا می باشد. توجه داشته باشید که بعد از مونتاژ کردن ATmega128 باید توسط یکی از پروگرامر ها بر روی آن بوت لودر پروگرام کنید تا توسط USB قابل شناسایی باشد. بعد از این مرحله برای آپلود کردن برنامه های آردوینو میتوانید از کانکتور USB تایپ B که بر روی برد اصلی قرار گرفته است استفاده کنید.
برای دانلود فایل بوت لودر ATmega128 روی این قسمت کلیک کنید.
می توانید این فایل ها را به صورت مونتاژ شده، تست شده و آماده به کار از قسمت فروشگاه سایت خریداری کنید. (لینک خرید)
در این مدار از آی سی CH340 برای ارتباط بین لپ تاب و برد استفاده شده است. چنانچه ربات را به لپتاب وصل کردید و توسط ویندوز شناسایی نشد باید درایور CH340 را دانلود و نصب کنید.
دانلود درایور CH340
یک برنامه پیش فرض که در آن سنسورهای رنگ و موتورها راه اندازی شده اند به زودی در این قسمت قرار داده می شود.