فهرست مطالب:

پلت فرم روباتیک ساده آردوینو!: 5 مرحله
پلت فرم روباتیک ساده آردوینو!: 5 مرحله

تصویری: پلت فرم روباتیک ساده آردوینو!: 5 مرحله

تصویری: پلت فرم روباتیک ساده آردوینو!: 5 مرحله
تصویری: ترکید😱😭 2024, نوامبر
Anonim
بستر ساده روباتیک آردوینو!
بستر ساده روباتیک آردوینو!
بستر ساده روباتیک آردوینو!
بستر ساده روباتیک آردوینو!

من بعد از بازی با برخی از میکروکنترلرهای AVR در جلسات تیم Robotics یک آردوینو گرفتم. من ایده یک تراشه قابل برنامه ریزی بسیار ارزان را دوست داشتم که می تواند تقریباً همه چیز را از طریق رابط کامپیوتر ساده اجرا کند ، بنابراین من یک آردوینو گرفتم زیرا در حال حاضر دارای برد خوب و رابط USB است. برای اولین پروژه آردوینو ، یک کیت Vex Robotics که در دورانی که در دبیرستان انجام می دادم ، در کنار هم جمع کردم. من همیشه می خواستم یک پلت فرم روباتیک با رایانه ایجاد کنم ، اما میکروکنترلر Vex به یک کابل برنامه نویسی نیاز دارد که من نداشتم. من تصمیم گرفتم از آردوینو جدیدم (و شاید بعداً یک تراشه AVR برهنه در صورت کارکردن) برای رانندگی روی پلتفرم استفاده کنم. در نهایت می خواهم یک نت بوک بگیرم و سپس می توانم ربات را با استفاده از WiFi رانندگی کنم و وب کم آن را از راه دور مشاهده کنم.

من موفق به دریافت یک پروتکل سریال مناسب و یک مثال ساده شدم که ربات را با استفاده از کنترلر Xbox 360 متصل به رایانه لینوکس هدایت می کند.

مرحله 1: چه کاری می تواند انجام دهد…

کاری که می تواند انجام دهد…
کاری که می تواند انجام دهد…
کاری که می تواند انجام دهد…
کاری که می تواند انجام دهد…

آردوینو یک پلت فرم بسیار متنوع است. هدف اصلی من این بود که Arduino را به دو موتور Vex به رایانه وصل کند ، اما تعداد زیادی پین ورودی/خروجی باقی مانده بود و تصمیم گرفتم چیزهای اضافی اضافه کنم. در حال حاضر من یک LED RGB برای وضعیت پورت سریال دارم (اگر بسته ها خوب باشند سبز ، اگر آنها بد باشند) و یک فن کامپیوتر که توسط ترانزیستور هدایت می شود. من همچنین می توانم سوئیچ ها و سنسورها را اضافه کنم اما هنوز هیچ کدام از آنها را روی آن قرار ندادم. بهترین چیز در مورد این است که شما می توانید هر چیزی را که می خواهید به یک ربات آردوینو اضافه کنید. برای کنترل موارد اضافی و دریافت ورودی به رایانه ، فقط کمی کد رابط نیاز است.

مرحله 2: قطعات

قطعات
قطعات
قطعات
قطعات
قطعات
قطعات

برای رباتم ، از چند قسمت مختلف استفاده کردم. بیشتر قطعات مربوط به چیزهای قدیمی بود که در زیرزمینم گذاشته بودم. با این حال ، کد آنقدر کوچک است که باید به راحتی روی هر آردوینو قرار گیرد. احتمالاً حتی می تواند بر روی ATTiny مناسب باشد (اگر یک کنترلر روبات جدا از آردوینو بسازم ، ATTiny 2313 انتخاب خوبی به نظر می رسد ، کوچکتر و ارزان تر است ، اما هنوز خروجی های زیادی دارد و رابط سریال UART سری دارد) 2) Vex Robotics PlatformI چند سال پیش یک کیت Vex برای ساخت یک ربات با کنترل رادیویی برای جمع آوری وسایل برای مسابقات دبیرستانی تهیه کرد. من پایه اصلی "مربع ربات" را ایجاد کردم که دارای 4 چرخ با دو موتور است. اگر بستر دیگری دارید که می خواهید رانندگی کنید ، می توانید پایگاه های دیگر ربات ها را جایگزین کنید. نکته مهمی که باید به آن توجه شود این است که موتورهای Vex در اصل سروهای چرخشی پیوسته هستند ، آنها از مدولاسیون عرض پالس برای نشان دادن سرعت و جهت چرخش استفاده می کنند. موتورهای Vex خوب هستند زیرا دارای طیف وسیعی از ولتاژهای عملکردی هستند ، جایی بین 5 تا 15 ولت. من از 12 ولت استفاده می کنم زیرا باتری 12 ولت داشتم. برای اکثر سرویسهای سرگرمی استاندارد ، شما به ولتاژ کمتری (اغلب 6 ولت) نیاز دارید. 3) باتری یک ربات بدون منبع تغذیه بی فایده است. برای آزمایش ، از یک آداپتور استاندارد زگیل دیواری 9V از RadioShack استفاده می کنم ، اما برای عملکرد بی سیم ، من یک باتری 12V NiMH در یک لپ تاپ قدیمی پیدا کردم. اگرچه شارژ کافی برای راه اندازی لپ تاپ را ندارد اما ربات Vex من را به خوبی رانندگی می کند. همچنین می تواند آردوینو را با استفاده از پین ورودی Vin روی کانکتور برق تغذیه کند ، آردوینو 12 ولت را تا 5 تنظیم می کند و حتی پین خروجی 5 ولت را روی اتصال برق خروجی می دهد. 4) Breadboard Basic همه چیز را سیم کشی کنید سرانجام یک تخته نمونه اولیه و لحیم کاری بهتر روی اتصالات دائمی می گیرم ، اما در حال حاضر تخته نان باعث می شود همه چیز آسان شود. تخته نان من "نان ور پایه" SparkFun است ، فقط یک نان بر روی یک صفحه فلزی با 3 پایانه است. 5) مبدل RS232-TTL بر اساس MAX232 در USB) می توانید از مبدل RS232-TTL استفاده کنید. من از MAX232 استفاده می کنم زیرا تعدادی از آنها دراز کشیده بود و آن را روی تکه کوچکی از تخته نمونه با خازن های مورد نیاز لحیم کردم. من به RS-232 نیاز دارم زیرا لپ تاپ قدیمی من فقط یک پورت USB دارد و از آن برای کنترل بازی برای رانندگی ربات استفاده می کنم. 6) قطعات اضافی به دلخواه برای اشکال زدایی آسان پروتکل سریال ، یک LED RGB روی آن قرار دادم (با سفارش آردوینو یکی دریافت کردم چون صدای جالبی داشتند). وقتی آردوینو بوت می شود چراغ به ترتیب قرمز ، سبز ، آبی را نشان می دهد و نشان می دهد که ربات راه اندازی مجدد شده است و پس از دریافت بسته موتور با رنگ سبز ، هنگام دریافت بسته پنکه با رنگ آبی و هنگام خرابی یا ناشناخته قرمز روشن می شود. بسته دریافت شد برای رانندگی فن از یک ترانزیستور استاندارد NPN (همانهایی که در آخرین دستورالعمل خود نشان دادم) و یک مقاومت بین ترانزیستور و آردوینو (ترانزیستور بیش از حد جریان می داد و آردوینو را گرم می کرد ، استفاده کردم ، بنابراین محدودیتی ایجاد کردم مقاومت برای متوقف کردن آن).

مرحله 3: برنامه نویسی آردوینو و کامپیوتر

برنامه نویسی آردوینو و کامپیوتر
برنامه نویسی آردوینو و کامپیوتر

برای برنامه نویسی آردوینو ، بدیهی است که به نرم افزار آردوینو و کابل USB نیاز دارید. اگر کامپیوتر شما دارای پورت سریال است ، می توانید Arduino را با استفاده از یک پورت سریال و مبدل سطح TTL برنامه ریزی کنید. توجه داشته باشید که رابط سریال USB با پردازنده ATMega آردوینو ارتباطی ندارد اگر مبدل سطح به پین های سریال آردوینو (پایه های 0 و 1) متصل شده باشد ، بنابراین قبل از استفاده از USB آن را قطع کنید. در آردوینو به یک رابط سریال نیاز داریم که اجازه می دهد کامپیوتر برای کنترل موتورها ما همچنین به یک سیستم درایو سروو PWM نیاز داریم تا سیگنال های صحیح را به موتورهای Vex ارسال کرده و مطمئن شویم که در صورت دریافت مقادیر مناسب در جهت صحیح حرکت می کنند. من همچنین فلش LED ساده ای را اضافه کردم ، عمدتا برای نشان دادن وضعیت ، اما همچنین به دلیل ظاهر خوب. در کامپیوتر ما باید پورت سریال را باز کرده و فریم های داده ای را که برنامه آردوینو می فهمد ارسال کنیم. همچنین رایانه شخصی باید مقادیر موتور را ارائه دهد. یک راه آسان برای انجام این کار استفاده از پد بازی یا جوی استیک USB است ، من از کنترلر Xbox 360 استفاده می کنم. گزینه دیگر این است که از رایانه تحت شبکه (اعم از نت بوک یا مینی برد کوچک ITX) روی خود ربات برای رانندگی بی سیم استفاده کنید. با استفاده از یک نت بوک ، حتی می توانید از وب کم داخلی برای پخش جریانی ویدئویی به عقب و ربات خود از راه دور استفاده کنید. من از سیستم سوکت های لینوکس برای برنامه نویسی شبکه برای راه اندازی خود استفاده کردم. یک برنامه ("سرور جوی استیک") بر روی رایانه جداگانه ای که کنترلر به آن متصل است اجرا می شود و برنامه دیگری ("مشتری") بر روی نت بوک متصل به آردوینو اجرا می شود. این دو کامپیوتر را به هم متصل می کند و اطلاعات جوی استیک را به نت بوک ارسال می کند ، سپس بسته های سری را به Arduino که ربات را هدایت می کند ارسال می کند. برای اتصال به Arduino با استفاده از رایانه لینوکس (در C ++) ابتدا باید پورت سریال را به درستی باز کنید baud rate و سپس مقادیر را با استفاده از پروتکلی که در کد آردوینو استفاده کرده اید ارسال کنید. قالب سریال من ساده و م effectiveثر است. من از 4 بایت در هر "فریم" برای ارسال دو دور موتور استفاده می کنم (هر یک یک بایت است). اولین و آخرین بایت ها مقادیر سخت هستند که برای جلوگیری از ارسال بایت اشتباه به کد PWM و دیوانه شدن موتورها استفاده می شود. این هدف اصلی LED RGB است ، هنگامی که قاب سریال ناقص بود قرمز چشمک می زند. 4 بایت به شرح زیر است: 255 (بایت "شروع" با کد سخت ،) ، ، 200 (بایت "پایان" با کد سخت) برای اطمینان از دریافت مطمئن داده ها ، مطمئن شوید که تاخیر کافی بین حلقه های برنامه قرار داده اید. اگر کد رایانه خود را خیلی سریع اجرا کنید ، پورت را فرا می گیرد و آردوینو ممکن است شروع به ریزش یا حتی سوء خواندن بایت کند. حتی اگر اطلاعات را از دست ندهد ، می تواند بافر پورت سریال Arduino را نیز پر کند. برای موتورهای Vex ، من از کتابخانه Arduino Servo استفاده کردم. از آنجایی که موتورهای Vex فقط موتورهای چرخشی مداوم هستند ، از همان سیگنال دهی که سرووها استفاده می کنند ، استفاده می کنند. با این حال ، به جای اینکه 90 درجه نقطه مرکزی باشد ، نقطه توقفی است که موتور در آن نمی چرخد. کاهش "زاویه" باعث می شود که موتور در یک جهت شروع به چرخش کند ، در حالی که افزایش زاویه باعث چرخش آن در جهت دیگر می شود. هرچه از نقطه مرکزی دورتر باشید ، موتور سریعتر می چرخد. اگر مقادیر بیشتر از 180 درجه را به موتورها بفرستید ، چیزی خراب نمی شود ، اما توصیه می کنم مقادیر را از 0 تا 180 درجه (که در این حالت افزایش سرعت است) محدود کنید. از آنجا که من رانندگی روبات بیشتر و کنترل خارج از کنترل را می خواستم ، یک نرم افزار "محدودیت سرعت" را به برنامه خود اضافه کردم که اجازه نمی دهد سرعت در هر دو جهت از 30 "درجه" بیشتر شود (محدوده 90 +/- 30) به من قصد دارم دستور پورت سریال را اضافه کنم که محدودیت سرعت را تغییر می دهد ، به طوری که اگر می خواهید سریع حرکت کنید ، کامپیوتر می تواند محدودیت را از بین ببرد (من در اتاقهای کوچک آزمایش می کنم ، بنابراین نمی خواهم سرعت آن افزایش یابد) و به دیوار برخورد کنید ، مخصوصاً با یک نوت بوک روی آن). برای اطلاعات بیشتر ، کد پیوست را در انتهای این دستورالعمل بارگیری کنید.

مرحله 4: یک Netbook برای کاوش جهان های ناشناخته از راه دور اضافه کنید

یک Netbook برای کاوش جهان های ناشناخته از راه دور اضافه کنید
یک Netbook برای کاوش جهان های ناشناخته از راه دور اضافه کنید
یک Netbook برای کاوش جهان های ناشناخته از راه دور اضافه کنید
یک Netbook برای کاوش جهان های ناشناخته از راه دور اضافه کنید

با یک رایانه کامل روی ربات آردوینو خود ، می توانید ربات خود را تا جایی که وای فای شما بدون سیم وصل می شود رانده و روبات را در یک منطقه محدود کنید. یک نامزد مناسب برای این شغل یک نت بوک است ، زیرا نت بوک ها کوچک ، سبک وزن ، دارای باتری داخلی ، وای فای هستند و حتی بیشتر آنها دارای وب کم هایی هستند که می توانند از آنها برای نمایش منظره روبات به مکانی امن استفاده کنند. می تواند آن را کنترل کند همچنین ، اگر نت بوک شما مجهز به سرویس پهنای باند تلفن همراه است ، دامنه شما عملاً نامحدود است. با باتری کافی می توانید ربات خود را به محل پیتزای محلی ببرید و از طریق وب کم سفارش دهید (توصیه نمی شود ، روبات ها معمولاً در مکان های پیتزا مجاز نیستند ، حتی اگر افرادی باشند که احتمالاً سعی می کنند ربات را بدزدند و شاید حتی پیتزا) همچنین ممکن است راه خوبی برای کاوش در اعماق تاریک زیرزمین شما از راحتی صندلی اداری شما باشد ، اگرچه افزودن برخی از چراغهای جلو در این مورد بسیار مفید خواهد بود.

راه های زیادی برای کارکردن وجود دارد ، بسیاری از آنها بسیار آسان تر از روش های من هستند ، اگرچه من با پردازش یا زبان های مبتنی بر اسکریپت آشنا نیستم ، بنابراین تصمیم گرفتم از لینوکس و C ++ برای ایجاد پیوند کنترل بی سیم بین ایستگاه اصلی خود استفاده کنم (معروف به ThinkPad قدیمی) و نوت بوک جدید Lenovo IdeaPad من که به پایه درایو Arduino متصل است. هر دو رایانه شخصی اوبونتو را اجرا می کنند. ThinkPad من به LAN مدرسه من وصل شده است و IdeaPad من به نقطه دسترسی WiFi من متصل است که به LAN مدرسه نیز متصل است (من نمی توانم از وای فای مدرسه یک جریان ویدئویی مطمئن دریافت کنم ، زیرا بقیه از آن استفاده می کنند ، بنابراین من تنظیم کردم روتر خود را برای ارائه اتصال خوب) یک ارتباط خوب به ویژه در مورد من مهم است زیرا من هیچ گونه بررسی خطا یا مهلت زمانی را اجرا نکرده ام. اگر اتصال شبکه به طور ناگهانی قطع شود ، ربات به کار خود ادامه می دهد تا زمانی که به چیزی برخورد کند یا من اجرا کنم و آن را متوقف کنم. این عامل اصلی تصمیم من در کاهش سرعت محرکه هم با چرخاندن موتورها و هم با اعمال محدودیت سرعت نرم افزاری است.

گام پنجم: دریافت ویدئو

پس از اینکه رباتیک کاوشگر شما می تواند به صورت بی سیم رانندگی کند ، احتمالاً می خواهید یک ویدئو از netbook داشته باشید تا بتوانید تشخیص دهید که ربات شما کجاست. اگر از اوبونتو استفاده می کنید (یا حتی اگر استفاده نمی کنید!) توصیه می کنم برای پخش از VLC Media Player استفاده کنید. اگر آن را نصب نکرده اید ، واقعاً از دست رفته اید ، بنابراین آن را با استفاده از دستور "sudo apt-get install vlc" نصب کنید ، VLC را در مرکز نرم افزاری اوبونتو (فقط 9.10) جستجو کنید ، یا نصب کننده را در videolan بارگیری کنید. org اگر از Windows استفاده می کنید. شما نیاز به VLC دارید که روی هر دو رایانه اجرا می شود. VLC قادر به پخش و پخش جریانها در شبکه است. در شبکه نت بوک (کامپیوتر روبات) ابتدا با کلیک روی Open Capture Device و امتحان Video for Linux 2 (با استفاده از دستگاه داخلی یا USB متصل) از عملکرد وب کم خود مطمئن شوید (برخی از دستگاه های قدیمی تر به جای نسخه 2 جدید به ویدیو برای لینوکس نیاز دارند). شما باید نمای دوربین را در صفحه نت بوک مشاهده کنید. برای جاری کردن آن ، جریان را از منوی File انتخاب کنید و سپس برگه Capture Device را در بالای پنجره ای که ظاهر می شود انتخاب کنید. به یاد داشته باشید که اوبونتو (و بسیاری از توزیع های دیگر لینوکس) به شما اجازه می دهد Alt را نگه دارید تا پنجره هایی را که برای صفحه شما بزرگتر هستند کلیک کنید و بکشید (مخصوصاً در نت بوک های قدیمی مفید است ، هرچند حتی IdeaPad من بدون دلیل مشخص وضوح 1024x576 دارد). برای کاهش تأخیر ، روی "نمایش گزینه های بیشتر" کلیک کنید و مقدار ذخیره را کاهش دهید. مقداری که می توانید آن را پایین بیاورید گاهی به دستگاه بستگی دارد ، اگر بیش از حد آن را پایین بیاورید ناپایدار می شود. در 300ms ممکن است کمی تأخیر داشته باشید اما زیاد هم بد نیست.

بعد ، روی Stream کلیک کنید تا به منوی بعدی بروید. روی Next کلیک کنید ، سپس HTTP را انتخاب کرده و به عنوان مقصد جدید اضافه کنید. اکنون Transcoding را برای کوچکتر کردن جریان تنظیم کنید. من یک پروفایل سفارشی ایجاد کردم که از M-JPEG با سرعت 60 کیلوبایت بر ثانیه و 8 فریم بر ثانیه استفاده می کند. این امر به این دلیل است که استفاده از یک کدک پیشرفته مانند MPEG یا Theora زمان پردازنده عظیمی را در پردازنده Atom یک نت بوک می خورد و این می تواند منجر به توقف خوراک ویدیویی شما بدون دلیل مشخص شود. MJPEG یک کدک ساده است که به راحتی می توان از آن در نرخ بیت پایین استفاده کرد. پس از شروع جریان ، VLC را در رایانه دیگر خود باز کنید ، جریان شبکه را باز کنید ، HTTP را انتخاب کنید و سپس آدرس IP نوت بوک خود (محلی یا اینترنتی بسته به نحوه اتصال) را تایپ کنید و سپس ": 8080" را وارد کنید. شما باید به دلایلی پورت را مشخص کنید ، در غیر این صورت خطا به شما می دهد. اگر اتصال مناسبی دارید ، باید تغذیه وب کم خود را در رایانه دیگر خود مشاهده کنید ، اما تاخیر جزئی (حدود یک ثانیه) خواهد داشت. من دقیقاً نمی دانم چرا این تاخیر رخ می دهد ، اما نمی توانم بفهمم چگونه می توان از شر آن خلاص شد. اکنون برنامه کنترل را باز کرده و رانندگی با روبات نت بوک خود را آغاز کنید. هنگام رانندگی نحوه عملکرد تاخیر را احساس کنید تا با هیچ چیز تصادف نکنید. اگر کار کرد ، ربات نت بوک شما به پایان رسید.

توصیه شده: