Искуство за создавање на првиот робот на Arduino (робот „ловец“)

Здраво

Во оваа статија сакам да го опишам процесот на склопување на мојот прв робот користејќи Arduino. Материјалот ќе им биде корисен на други почетници како мене, кои сакаат да направат некаква „само-управувачка количка“. Написот е опис на фазите на работа со моите додатоци на различни нијанси. Врска до конечниот код (најверојатно не најидеалниот) е даден на крајот од статијата.

Искуство за создавање на првиот робот на Arduino (робот „ловец“)

Секогаш кога беше можно, го вклучив мојот син (8 години) да учествува. Што точно работеше со него, а што не - посветив дел од статијата на ова, можеби некому ќе му биде корисно.

Општ опис на роботот

Прво, неколку зборови за самиот робот (идеја). На почетокот не сакав да составам нешто стандардно. Во исто време, комплетот на компоненти беше сосема стандарден - шасија, мотори, ултразвучен сензор, сензор за линија, LED диоди, високотонец. Првично, робот беше измислен од овој „сет на супа“ кој ја чува нејзината територија. Вози кон престапникот кој ја поминал кружната линија, а потоа се враќа во центарот. Сепак, оваа верзија бараше нацртана линија, плус дополнителна математика за да остане во кругот цело време.

Затоа, по малку размислување, малку ја сменив идејата и решив да направам робот „ловец“. На почетокот се врти околу својата оска, избирајќи блиска цел (лице). Доколку се открие „пленот“, „ловецот“ ги вклучува трепкачките светла и сирената и почнува да вози кон него. Кога лицето се оддалечува/бега, роботот избира нова цел и ја следи, итн. На таков робот не му треба ограничен круг и може да работи на отворени области.

Како што можете да видите, ова многу личи на игра на фаќање. Иако на крајот роботот не се покажа доволно брз, тој искрено комуницира со луѓето околу него. Посебно им се допаѓа на децата (некогаш, сепак, се чини дека ќе го згазат, срцето им прескокнува...). Мислам дека ова е добро решение за популаризирање на техничкиот дизајн.

Структура на роботи

Значи, се одлучивме за идејата, ајде да продолжиме распоред. Списокот на елементи се формира од она што роботот треба да може да го прави. Сè овде е сосема очигледно, па веднаш да го погледнеме нумерирањето:

Искуство за создавање на првиот робот на Arduino (робот „ловец“)

„Мозоците“ на роботот се arduino uno табла (1); беше во комплет нарачан од Кина. За нашите цели, тоа е сосема доволно (се фокусираме на бројот на употребени пинови). Од истиот комплет зедовме готова шасија (2), на која се прикачени две погонски тркала (3) и едно задно (слободно ротирачко) (4). Комплетот вклучуваше и готова преграда за батерии (5). Пред роботот има ултразвучен сензор (HC-SR04) (6), одзади има двигател на моторот (L298N) (7), во центарот има LED трепкач (8), а малку до на страната има високотонец (9).

Во фазата на распоред гледаме на:

- за се да одговара
- да биде избалансиран
- да биде рационално поставен

Нашите кинески колеги веќе делумно го направија тоа за нас. Значи, преградата за тешки батерии е поставена во центарот, а погонските тркала се наоѓаат приближно под него. Сите други табли се лесни и можат да се постават на периферијата.

Нијанси:

  1. Шасијата од комплетот има многу фабрички дупки, но сè уште не сум сфатил која е логиката во нив. Моторите и батерискиот пакет беа обезбедени без проблеми, а потоа започна „прилагодувањето“ со дупчење нови дупки за да се обезбеди оваа или онаа плоча.
  2. Месинганите лавици и другите сврзувачки елементи од местата за складирање беа голема помош (понекогаш моравме да ги извадиме).
  3. Ги поминав шините од секоја табла низ стегите (повторно ги најдов во складиште). Многу погодно, сите жици лежат убаво и не висат.

Индивидуални блокови

Сега ќе поминам блокови и ќе ти кажам лично за секој од нив.

батериски простор

Јасно е дека роботот мора да има добар извор на енергија. Опциите може да варираат, јас ја избрав опцијата со 4 AA батерии. Севкупно тие даваат приближно 5 V, а овој напон може директно да се примени на иглата од 5V на ардуино плочата (заобиколувајќи го стабилизаторот).

Се разбира, имав одредена претпазливост, но ова решение е доста изводливо.

Бидејќи напојувањето е потребно насекаде, за погодност направив два конектори во центарот на роботот: едниот ја „дистрибуира“ земјата (десно), а вториот - 5 V (лево).

Искуство за создавање на првиот робот на Arduino (робот „ловец“)

Мотори и возач

Прво, за монтирање на моторите. Монтажата е фабричка, но направена со големи толеранции. Со други зборови, моторите можат да се нишаат неколку милиметри лево-десно. За нашата задача ова не е критично, но на некои места може да има ефект (роботот ќе почне да се движи настрана). За секој случај, ги поставив моторите строго паралелни и ги поправав со лепак.

Искуство за создавање на првиот робот на Arduino (робот „ловец“)

За контрола на моторите, како што напишав погоре, се користи драјверот L298N. Според документацијата, има три пинови за секој мотор: еден за промена на брзината и еден пар пинови за насоката на вртење. Тука има една важна точка. Излегува дека ако напонот на напојување е 5 V, тогаш контролата на брзината едноставно не работи! Тоа е, или воопшто не се врти, или се врти до максимум. Ова е карактеристиката што ме натера да „убијам“ неколку вечери. На крајот најдов спомнување некаде на еден од форумите.

Општо земено, ми требаше мала брзина на ротација при вртење на роботот - за да има време да го скенира просторот. Но, бидејќи ништо не излезе од оваа идеја, морав да го направам тоа поинаку: мало вртење - стоп - пресврт - стоп, итн. Повторно, не толку елегантно, но изводливо.

Овде ќе додадам и дека по секое извршување роботот избира случаен правец за ново вртење (во насока на стрелките на часовникот или спротивно од стрелките на часовникот).

Ултразвучен сензор

Искуство за создавање на првиот робот на Arduino (робот „ловец“)

Уште еден хардвер каде што требаше да бараме компромисно решение. Ултразвучниот сензор произведува нестабилни бројки на реални препреки. Всушност, ова беше очекувано. Идеално, работи некаде на натпревари каде што има мазни, рамни и нормални површини, но ако нечии нозе „трепкаат“ пред него, треба да се воведе дополнителна обработка.

Како таква обработка поставив медијален филтер за три точки. Врз основа на тестовите на вистински деца (ниту едно дете не беше повредено за време на тестовите!), се покажа дека е сосема доволно за нормализирање на податоците. Физиката овде е едноставна: имаме сигнали што се рефлектираат од неопходно предмети (давајќи го потребното растојание) и рефлектирани од подалечни, на пример, ѕидови. Последните се случајни емисии во мерења од формата 45, 46, 230, 46, 46, 45, 45, 310, 46... Токму овие ги отсекува средниот филтер.

По целата обработка, го добиваме растојанието до најблискиот објект. Ако е помала од одредена праг, тогаш го вклучуваме алармот и возиме право кон „натрапникот“.

Трепкач и сирена

Можеби наједноставните елементи од сите горенаведени. Тие можат да се видат на фотографиите погоре. Нема што да се пишува за хардверот овде, па сега да продолжиме код.

Контролна програма

Не ја гледам поентата во деталното опишување на кодот, кому му треба - врската е на крајот од статијата, сè е доста читливо таму. Но, би било убаво да се објасни општата структура.

Првото нешто што моравме да го разбереме е дека роботот е уред во реално време. Поточно, да се потсетиме, бидејќи и порано и сега сè уште работам електроника. Така, веднаш забораваме на предизвикот одложување (), што сакаат да го користат во примери на скици и кои едноставно ја „замрзнуваат“ програмата за одреден временски период. Наместо тоа, како што советуваат искусни луѓе, воведуваме тајмери ​​за секој блок. Потребниот интервал помина - дејството е извршено (зголемена осветленост на ЛЕР, вклучен мотор и така натаму).

Тајмерите може да се меѓусебно поврзани. На пример, високотонецот работи синхроно со трепкачот. Ова малку ја поедноставува програмата.

Природно, ние разложуваме сè во посебни функции (трепкачки светла, звук, вртење, движење напред итн.). Ако не го направите ова, тогаш нема да можете да сфатите што доаѓа од каде и каде.

Нијанси на педагогијата

Сè што е опишано погоре го правев во слободното време во вечерните часови. На лежерен начин, поминав околу три недели на роботот. Ова можеше да заврши тука, но ветив дека ќе ви кажам и за работата со дете. Што може да се направи на оваа возраст?

Работете според упатствата

Прво го проверивме секој детал одделно - LED диоди, високотонец, мотори, сензори итн. Има голем број на готови примери - некои во развојната средина, други може да се најдат на Интернет. Ова секако ме прави среќен. Го земаме кодот, го поврзуваме делот, се уверуваме дека работи, а потоа почнуваме да го менуваме за да одговара на нашата задача. Детето ги прави врските според дијаграмот и под некој мој надзор. Ова е добро. Исто така, треба да бидете способни да работите строго според упатствата.

Редоследот на работа („од особено до општо“)

Ова е тешка точка. Треба да научите дека голем проект („направете робот“) се состои од мали задачи („поврзете сензор“, „поврзете мотори“...), а тие, пак, се состојат од уште помали чекори („најдете програма,” “поврзете плоча.” “, “преземете фирмвер”...). Со извршување на повеќе или помалку разбирливи задачи од пониско ниво, ги „затвораме“ задачите од средното ниво и од нив се формира целокупниот резултат. Објаснив, но мислам дека реализацијата нема да дојде наскоро. Некаде, веројатно, во адолесценција.

Инсталација

Дупчење, конци, завртки, навртки, лемење и мирис на колофон - каде ќе бевме без него? Детето ја доби основната вештина „Работа со рачка за лемење“ - успеа да залеми неколку врски (малку помогнав, нема да го кријам). Не заборавајте за безбедносното објаснување.

Работа со компјутер

Ја напишав програмата за роботот, но сепак успеав да постигнам некои поволни резултати.

Прво: англиски. Штотуку почна на училиште, па се мачевме да сфатиме што е тоа пишалка, мигалка, јаркост и други транслитерации. Барем ова го разбравме. Намерно не користев мајчин англиски зборови, бидејќи сè уште не сме го достигнале ова ниво.

Второ: ефикасна работа. Ги научивме комбинации на копчиња и како брзо да се извршуваат стандардните операции. Периодично, кога ја пишувавме програмата, јас и син ми ги менувавме местата и кажував што треба да се направи (замена, пребарување итн.). Морав да повторувам одново и одново: „избери двапати“, „задржи Shift“, „задржи Ctrl“ и така натаму. Процесот на учење овде не е брз, но мислам дека вештините постепено ќе се депонираат „во поткортексот“.

Скриен текстМоже да се каже дека горенаведеното е речиси очигледно. Но, искрено, оваа есен имав можност да предавам информатика во 9-то одделение во едно училиште. Тоа е ужасно. Учениците не знаат основни работи како Ctrl + Z, Ctrl + C и Ctrl + V, избирање текст додека држат Shift или двоен клик на збор, итн. И покрај тоа што беа трета година на студии по информатика... Извлечете сами заклучок.

Трето: пишување со допир. Коментарите во шифрата му ги доверив на детето да куца (нека вежба). Веднаш ги поставивме рацете правилно, така што нашите прсти постепено се сеќаваа на локацијата на клучевите.

Како што можете да видите, ние сè уште само што започнуваме. Ќе продолжиме да ги усовршуваме нашите вештини и знаења; тие ќе бидат корисни во животот.

Инаку, за иднината...

Понатамошно развивање

Роботот е направен, вози, трепка и сигнализира. Што сега? Инспирирани од постигнатото, планираме дополнително да го усовршуваме. Постои идеја да се направи далечински управувач - како лунарен ровер. Би било интересно, седејќи на далечински управувач, да се контролира движењето на робот кој вози на сосема друго место. Но, тоа ќе биде друга приказна...

И на крајот, всушност, хероите на овој напис (видео со кликнување):

Искуство за создавање на првиот робот на Arduino (робот „ловец“)

Ви благодариме!

Врска со код

Извор: www.habr.com

Додадете коментар