تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

سلام

در این مقاله می خواهم روند مونتاژ اولین ربات خود را با استفاده از آردوینو شرح دهم. این مطالب برای مبتدیان دیگری مانند من که می‌خواهند نوعی «گاری خودگردان» بسازند مفید خواهد بود. مقاله شرحی از مراحل کار با اضافات من بر روی تفاوت های ظریف مختلف است. پیوندی به کد نهایی (به احتمال زیاد نه ایده آل ترین) در انتهای مقاله داده شده است.

تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

در صورت امکان، پسرم (8 ساله) را در شرکت مشارکت دادم. دقیقاً چه چیزی با آن کار کرد و چه چیزی انجام نشد - من بخشی از مقاله را به این اختصاص داده ام، شاید برای کسی مفید باشد.

توضیحات کلی ربات

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

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

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

ساختار ربات

بنابراین، ما در مورد ایده تصمیم گرفتیم، بیایید به ادامه مطلب برویم چیدمان. فهرست عناصر از آنچه ربات باید بتواند انجام دهد تشکیل می شود. همه چیز در اینجا کاملاً واضح است ، بنابراین بیایید فوراً به شماره گذاری نگاه کنیم:

تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

"مغز" ربات یک برد آردوینو uno است (1). در مجموعه ای بود که از چین سفارش داده شد. برای اهداف ما، کاملاً کافی است (ما روی تعداد پین های استفاده شده تمرکز می کنیم). از همان کیت یک شاسی آماده (2) گرفتیم که روی آن دو چرخ محرک (3) و یک عقب (آزادانه چرخش) (4) وصل شده است. این کیت همچنین شامل یک محفظه باتری آماده (5) بود. در جلوی ربات یک سنسور اولتراسونیک (HC-SR04) (6)، در پشت یک درایور موتور (L298N) (7)، در مرکز یک فلاشر LED (8) و کمی به طرف وجود دارد یک توییتر (9).

در مرحله چیدمان به موارد زیر نگاه می کنیم:

- تا همه چیز جا بیفتد
- متعادل بودن
- به طور منطقی قرار گیرد

همکاران چینی ما تا حدی این کار را برای ما انجام داده اند. بنابراین، محفظه باتری سنگین در مرکز قرار می گیرد و چرخ های محرک تقریباً در زیر آن قرار دارند. همه تخته های دیگر سبک هستند و می توانند در حاشیه قرار گیرند.

عناصر:

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

بلوک های فردی

حالا من می گذرم بلوک ها و من شخصاً در مورد هر یک به شما خواهم گفت.

محفظه باتری

واضح است که ربات باید منبع انرژی خوبی داشته باشد. گزینه ها ممکن است متفاوت باشد، من گزینه ای را با 4 باتری AA انتخاب کردم. در مجموع آنها تقریباً 5 ولت می دهند و این ولتاژ را می توان مستقیماً به پایه 5 ولت برد آردوینو اعمال کرد (با عبور از تثبیت کننده).

البته من کمی احتیاط کردم، اما این راه حل کاملا قابل اجرا است.

از آنجایی که برق در همه جا مورد نیاز است، برای راحتی دو کانکتور در مرکز ربات ساختم: یکی زمین را "توزیع" می کند (در سمت راست) و دومی - 5 ولت (در سمت چپ).

تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

موتور و راننده

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

تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

برای کنترل موتورها همانطور که در بالا نوشتم از درایور L298N استفاده می شود. طبق مستندات، برای هر موتور سه پایه دارد: یکی برای تغییر سرعت و یک جفت پایه برای جهت چرخش. در اینجا یک نکته مهم وجود دارد. به نظر می رسد که اگر ولتاژ منبع تغذیه 5 ولت باشد، کنترل سرعت به سادگی کار نمی کند! یعنی یا اصلا نمی چرخد ​​یا به حداکثر می رسد. این ویژگی است که باعث شد چند شب "کشت" کنم. در پایان، من یک اشاره در جایی در یکی از انجمن ها پیدا کردم.

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

من همچنین در اینجا اضافه می کنم که پس از هر تعقیب، ربات یک جهت تصادفی را برای یک چرخش جدید (در جهت عقربه های ساعت یا خلاف جهت عقربه های ساعت) انتخاب می کند.

سنسور اولتراسونیک

تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

یک قطعه سخت افزاری دیگر که در آن باید به دنبال راه حل مصالحه ای می گشتیم. سنسور اولتراسونیک اعداد ناپایدار را روی موانع واقعی تولید می کند. در واقع این مورد انتظار بود. در حالت ایده‌آل، در جایی در مسابقاتی که سطوح صاف، یکنواخت و عمود بر هم وجود دارد، کار می‌کند، اما اگر پاهای کسی جلوی آن «فلک بزند»، باید پردازش‌های بیشتری ارائه شود.

من چنین پردازشی را تنظیم کردم فیلتر میانه برای سه شمارش بر اساس آزمایشات روی کودکان واقعی (هیچ کودکی در طول آزمایش آسیب ندید!)، معلوم شد که برای عادی سازی داده ها کاملاً کافی است. فیزیک در اینجا ساده است: ما سیگنال هایی داریم که از آنها منعکس شده اند لازم است اشیاء (با دادن فاصله مورد نیاز) و منعکس شده از موارد دورتر، به عنوان مثال، دیوارها. دومی انتشارات تصادفی در اندازه گیری های شکل 45، 46، 230، 46، 46، 45، 45، 310، 46 ... اینها هستند که فیلتر میانه قطع می کند.

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

فلاشر و آژیر

شاید ساده ترین عناصر از همه موارد بالا باشد. آنها را می توان در عکس های بالا مشاهده کرد. در اینجا چیزی برای نوشتن در مورد سخت افزار وجود ندارد، بنابراین اکنون بیایید به آن بپردازیم کد.

برنامه کنترل

من در توصیف جزئیات کد، چه کسی به آن نیاز دارد، فایده ای نمی بینم - پیوند در انتهای مقاله است، همه چیز در آنجا کاملاً قابل خواندن است. اما بهتر است ساختار کلی را توضیح دهیم.

اولین چیزی که باید درک می کردیم این بود که یک ربات یک دستگاه بلادرنگ است. دقیق تر، به یاد داشته باشید، زیرا هم قبلا و هم اکنون هنوز در الکترونیک کار می کنم. بنابراین، ما بلافاصله چالش را فراموش می کنیم تاخیر انداختن()، که آنها دوست دارند از آن در طرح های مثال استفاده کنند، و برنامه را برای مدت زمان مشخصی به سادگی "منجمد" می کند. در عوض، همانطور که افراد با تجربه توصیه می کنند، ما تایمرهایی را برای هر بلوک معرفی می کنیم. فاصله مورد نیاز گذشته است - عمل انجام شده است (افزایش روشنایی LED، روشن شدن موتور و غیره).

تایمرها را می توان به هم متصل کرد. به عنوان مثال، توییتر به طور همزمان با فلاشر کار می کند. این برنامه را کمی ساده می کند.

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

تفاوت های ظریف آموزش و پرورش

من هر کاری که در بالا توضیح داده شد را در اوقات فراغت عصرها انجام دادم. در حالتی آرام، حدود سه هفته را روی ربات گذراندم. این می توانست به اینجا ختم شود، اما من هم قول دادم در مورد کار با یک کودک به شما بگویم. در این سن چه کاری می توان انجام داد؟

طبق دستورالعمل کار کنید

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

ترتیب کار ("از خاص به عمومی")

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

نصب و راه اندازی

سوراخ کاری، رزوه ها، پیچ ها، مهره ها، لحیم کاری و بوی رزین - بدون آن کجا خواهیم بود؟ کودک مهارت اساسی "کار با آهن لحیم کاری" را دریافت کرد - او موفق شد چندین اتصال را لحیم کند (من کمی کمک کردم، آن را پنهان نمی کنم). توضیح ایمنی را فراموش نکنید.

کار کامپیوتری

من برنامه را برای ربات نوشتم، اما هنوز هم توانستم به نتایج مطلوبی برسم.

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

دوم: کار کارآمد. ما ترکیب کلیدهای میانبر و نحوه انجام سریع عملیات استاندارد را آموزش دادیم. گهگاهی که برنامه را می نوشتیم، من و پسرم جای خود را عوض می کردیم و من می گفتم که چه کاری باید انجام شود (تعویض، جستجو و ...). مجبور شدم بارها و بارها تکرار کنم: "انتخاب دوبار کلیک کنید" ، "Shift را نگه دارید" ، "Ctrl را نگه دارید" و غیره. روند یادگیری در اینجا سریع نیست، اما من فکر می کنم مهارت ها به تدریج "در زیر قشر" سپرده می شوند.

متن پنهانمی توان گفت موارد فوق تقریباً واضح است. اما، راستش، در پاییز امسال این فرصت را داشتم که در یک مدرسه علوم کامپیوتر را در کلاس نهم تدریس کنم. این وحشتناک است. دانش آموزان چیزهای اساسی مانند Ctrl + Z، Ctrl + C و Ctrl + V، انتخاب متن با نگه داشتن Shift یا دوبار کلیک کردن روی یک کلمه و غیره را نمی دانند. این در حالی است که آنها سال سوم تحصیل در رشته کامپیوتر بودند... نتیجه گیری خود را انجام دهید.

سوم: تایپ کردن را لمس کنید. نظرات داخل کد رو به بچه سپردم تا تایپ کنه (بذار تمرین کنه). بلافاصله دست هایمان را به درستی قرار دادیم تا کم کم انگشتانمان محل کلیدها را به خاطر بیاورند.

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

اتفاقا در مورد آینده ...

پیشرفتهای بعدی

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

و در پایان، در واقع قهرمانان این مقاله (ویدئو با کلیک):

تجربه ایجاد اولین ربات در آردوینو (ربات شکارچی)

با تشکر از شما!

پیوند به کد

منبع: www.habr.com

اضافه کردن نظر