Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

Добры дзень.

У дадзеным артыкуле я жадаю апісаць працэс зборкі свайго першага робата на ардуіна. Матэрыял будзе карысны іншым такім жа навічкам, як і я, якія захочуць вырабіць якую-небудзь «самабеглую каляску». Артыкул уяўляе сабой апісанне этапаў працы з маімі дадаткамі па розных нюансах. Спасылка на выніковы код (хутчэй за ўсё, не самы ідэальны) дадзена ў канцы артыкула.

Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

Па меры магчымасці я прыцягваў да ўдзелу свайго сына (8 год). Што менавіта з ім атрымлівалася, а што не - на гэта я вылучыў частку артыкула, магчыма, камусьці спатрэбіцца.

Агульнае апісанне робата

Спачатку некалькі слоў аб самім робата (ідэя). Збіраць нешта тыпавое на старце не вельмі хацелася. У той жа час, набор кампанентаў быў даволі стандартным - шасі, рухавікі, ультрагукавы датчык, датчык лініі, святлодыёды, ціўкалка. Спачатку з гэтага "супавага набору" быў прыдуманы робат, які ахоўвае сваю тэрыторыю. Ён едзе на парушальніка, які перасек лінію круга, а потым вяртаецца ў цэнтр. Аднак у гэтым варыянце была патрэбна прачэрчаная лінія, плюс лішняя матэматыка, каб увесь час заставацца ў крузе.

Таму пасля некаторых абдумванняў я некалькі змяніў ідэю і вырашыў рабіць робата-"паляўнічага". На старце ён паварочваецца вакол сваёй восі, выбіраючы паблізу мэту (чалавека). Калі "ахвяра" выяўлена, "паляўнічы" уключае мігалку і сірэну, і пачынае ехаць на яе. Калі чалавек адыходзіць/адбягае, робат выбірае новую мэту і пераследуе яе, і гэтак далей. Такому робату не патрэбна абмежаванае кола, і яно можа працаваць на адкрытай тэрыторыі.

Як бачыце, гэта шмат у чым нагадвае гульню "даганялкі". Хоць у выніку робат і не атрымаўся дастаткова хуткім, але ён сумленна ўзаемадзейнічае з навакольнымі яго людзьмі. Асабліва гэта падабаецца дзецям (часам, праўда, здаецца, што яны вось-вось растопчуць яго, ажно сэрца ёкае…). Думаю, для папулярызацыі тэхнічнага канструявання гэтае добрае рашэнне.

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

Такім чынам, мы вызначыліся з ідэяй, пяройдзем да кампаноўцы. Спіс элементаў фармуецца з таго, што павінен умець робат. Тут усё цалкам відавочна, таму адразу паглядзім на нумарацыю:

Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

"Мазгі" робата – плата arduino uno (1); была ў замоўленым з Кітая наборы. Для нашых мэт яе суцэль хапае (арыентуемся на колькасць выкарыстоўваных пінаў). З гэтага ж набору мы ўзялі гатовае шасі (2), на якое мацуюцца два кіроўных кола (3) і адно задняе (вольна якое верціцца) (4). Таксама ў наборы быў гатовы батарэйны адсек (5). Спераду ў робата варта ультрагукавой датчык (HC-SR04) (6), ззаду – драйвер рухавікоў (L298N) (7), па цэнтры – святлодыёд-мігалка (8), і ледзь у баку – ціўкалка (9).

На этапе кампаноўкі мы глядзім:

- каб усё ўлезла
- каб было збалансавана
- каб было рацыянальна размешчана

Часткова гэта ўжо зрабілі за нас кітайскія калегі. Так, цяжкі батарэйны адсек пастаўлены ў цэнтр, і прыкладна пад ім стаяць вядучыя колы. Усе астатнія поплаткі лёгкія, іх можна размяшчаць па перыферыі.

Нюансы:

  1. У шасі з набору ёсць шмат завадскіх адтулін, але якая ў іх логіка - я так і не разабраўся. Рухавікі і акумулятарны блок замацаваліся без праблем, далей пачалася «падганянне» са свідраваннем новых адтулін, каб замацаваць той ці іншы поплатак.
  2. Вельмі выручылі латуневыя стойкі і іншае крепеж з запаснікаў (часам прыходзілася выкручвацца).
  3. Шыны ад кожнай платы прапускаў праз заціскі (ізноў жа знайшоў у запасніках). Вельмі зручна, усе правады ляжаць хораша і не боўтаюцца.

Асобныя блокі

Цяпер прайдуся па блокам і раскажу персанальна пра кожны.

Батарэйны адсек

Зразумела, што робат павінен мець добрую крыніцу энергіі. Варыянты могуць быць розныя, я абраў варыянт з 4 акумулятарамі АА. У суме яны даюць прыкладна 5 У, і такая напруга можна прама падаць на пін 5V платы arduino (мінуючы стабілізатар).

Некаторая насцярожанасць, вядома, у мяне была, але гэтае рашэнне суцэль працаздольнае.

Бо сілкаванне трэба ўсюды, то для выгоды я зрабіў па цэнтры робата два раздыма: адзін "раздае" зямлю (справа), а другі - 5 У (злева).

Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

Рухавікі і драйвер

Спачатку пра мацаванне рухавікоў. Мацаванне завадское, але зроблена з вялікімі допускамі. Іншымі словамі, рухавікі могуць віхляць на пару міліметраў налева-направа. Для нашай задачы гэта не крытычна, а вось дзесьці можа і ўплываць (робата пачне адводзіць у бок). На ўсякі выпадак я выставіў рухавікі строга раўналежна і зафіксаваў клеем.

Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

Для кіравання рухавікамі, як я пісаў вышэй, выкарыстоўваецца драйвер L298N. Па дакументацыі ў яго тры піны на кожны рухавік: адзін для змены хуткасці і пара пінаў для накіравання кручэння. Тут ёсьць адзін важны момант. Аказваецца, калі напружанне харчавання 5 У, то рэгуляванне хуткасці проста не працуе! Гэта значыць альбо зусім не круціць, альбо круціць па максімуме. Вось такая асаблівасць, з-за якой я "забіў" пару вечароў. У рэшце рэшт, знайшоў згадку недзе на адным з форумаў.

Наогул кажучы, нізкая хуткасць кручэння мне патрабавалася пры развароце робата - каб ён меў запас часу прасканаваць прастору. Але, бо з такой задумкай нічога не выйшла, прыйшлося рабіць інакш: невялікі паварот - прыпынак - паварот - прыпынак і т. д. Зноў жа, не гэтак хупава, але працаздольна.

Яшчэ тут дадам, што пасля кожнага пераследу робат выбірае выпадковы напрамак новага павароту (па або супраць гадзіннікавай стрэлкі).

Ультрагукавы датчык

Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

Яшчэ адна жалязяка, дзе прыйшлося шукаць кампраміснае рашэнне. Ультрагукавы датчык на рэальных перашкодах дае нестабільныя лічбы. Уласна, гэта было чакана. Ідэальна ён працуе дзе-небудзь на спаборніцтвах, дзе ёсць гладкія, роўныя і перпендыкулярныя паверхні, а вось калі перад ім "мільгаюць" нечыя ногі - тут трэба ўводзіць дадатковую апрацоўку.

У якасці такой апрацоўкі я паставіў медыяны фільтр на тры адлікі. Зыходзячы з тэстаў на рэальных дзецях (падчас тэстаў ні адно дзіця не пацярпела!), Яго аказалася цалкам дастаткова для нармалізацыі дадзеных. Фізіка тут простая: у нас ёсць сігналы, адлюстраваныя ад патрэбных аб'ектаў (якія даюць патрабаваную адлегласць) і адлюстраваныя ад больш далёкіх, напрыклад, сцен. Другія ўяўляюць сабой выпадковыя выкіды ў вымярэннях віду 45, 46, 230, 46, 46, 45, 45, 310, 46… Менавіта іх медыяны фільтр і адсякае.

Пасля ўсёй апрацоўкі ў нас атрымліваецца адлегласць да найбліжэйшага аб'екта. Калі яно менш некаторай парогавай велічыні - тады мы ўключаем сігналізацыю і едзем прама на «парушальніка».

Мігалка і сірэна

Мабыць, самыя простыя элементы з усяго пералічанага. Іх відаць на фатаграфіях вышэй. Па жалезе тут пісаць няма чаго, таму зараз пяройдзем да код.

Праграма кіравання

Распісваць дэталёва код я сэнсу не бачу, каму трэба - спасылка ў канцы артыкула, там усё досыць чытэльна. А вось агульную структуру было б нядрэнна растлумачыць.

Першае, што прыйшлося асэнсаваць: робат – гэта прылада рэальнага часу. Дакладней, успомніць, таму што і раней, і зараз усё роўна займаюся электронікай. Значыць, адразу забываем пра выклік затрымка (), які вельмі любяць выкарыстоўваць у скетчах-прыкладах, і які проста "замарожвае" праграму на ўказаны прамежак часу. Замест гэтага, як раяць дасведчаныя людзі, уводны таймеры на кожны блок. Прайшоў патрабаваны прамежак - выканалі дзеянне (павялічылі яркасць святлодыёда, уключылі рухавік і гэтак далей).

Таймеры могуць быць узаемазвязаны. Так, напрыклад, ціўкалка працуе сінхронна з мігцелкай. Гэта крыху спрашчае праграму.

Натуральна, усё разбіваем на асобныя функцыі (мігалка, гук, паварот, рух наперад і гэтак далей). Калі так не рабіць, дык потым ужо не разабрацца, што адкуль і куды.

Нюансы педагогікі

Усё, што было апісана вышэй, я рабіў у вольны час па вечарах. У павольным рэжыме я патраціў на робата дзесьці тыдні тры. На гэтым можна было б і завяршыцца, але я яшчэ абяцаў вам расказаць аб рабоце з дзіцем. Што выканальна ў такім узросце?

Праца па інструкцыі

Кожную дэталь мы спачатку правяралі асобна - святлодыёды, ціўкалкі, маторы, датчыкі і т. д. Ёсць вялікая колькасць гатовых прыкладаў - нейкія прама ў асяроддзі распрацоўкі, іншыя можна знайсці ў інтэрнэце. Гэта, несумненна, радуе. Бярэм код, падлучальны дэталь, пераконваемся, што працуе, далей ужо пачынаем змяняць пад сваю задачу. Падлучэнні па схеме і пад некаторым маім кантролем дзіця робіць сам. Гэта добра. Працаваць дакладна па інструкцыі таксама трэба ўмець.

Парадак працы ("ад прыватнага да агульнага")

Вось гэта складаны пункт. Трэба прывучаць, што вялікі праект («зрабіць робата») складаецца з дробных задач («падлучыць датчык», «падлучыць маторы»…), а тыя, у сваю чаргу, з яшчэ драбнейшых крокаў («знайсці праграму», «падлучыць плату », «загрузіць прашыўку»…). Выконваючы больш-менш зразумелыя задачы ніжняга ўзроўню, мы "закрываем" задачы сярэдняга ўзроўню, а з іх ужо складваецца агульны вынік. Тлумачыў, але, думаю, усведамленне прыйдзе яшчэ не хутка. Недзе, напэўна, да падлеткавага ўзросту.

Мантаж

Свідраванне, разьбы, шрубы, гайкі, паянне і пах каніфолі куды ж без гэтага. Дзіця атрымала базавы скіл «Праца з паяльнікам» - атрымалася злітаваць некалькі злучэнняў (я ледзь-ледзь дапамагаў, не схаваю). Не забывайце пра тлумачэнне тэхнікі бяспекі.

Праца на кампутары

Праграму для робата пісаў я, але нейкіх спадарожных вынікаў усё ж атрымалася дасягнуць.

Першае: англійская. У школе яго толькі-толькі пачалі, таму мы "са скрыпам" разбіралі, што такое pishalka, migalka, yarkost і іншы трансліт. Зразумелі хаця б гэта. Я свядома не стаў выкарыстоўваць родныя англійскія словы, бо да гэтага ўзроўню мы яшчэ не дайшлі.

Другое: эфектыўная праца. Вучылі гарачыя камбінацыі клявішаў, як хутка выконваць тыпавыя аперацыі. Перыядычна, калі пісалі праграму, мы мяняліся з сынам месцамі, і я казаў, што трэба зрабіць (замену, пошук і г.д.). Прыходзілася паўтараць зноў і зноў: "вылучылі падвойным клікам", "зацісні Shift", "зацісні Ctrl" і гэтак далей. Працэс навучання тут не хуткі, але, я думаю, навыкі паступова адкладуцца "ў падкорку".

Утоены тэкстВы можаце сказаць, што апісанае вышэй - гэта амаль відавочна. Але, сапраўды, гэтай увосень мне давялося весткі інфарматыку ў 9-х класах у адной школе. Гэта жах. Вучні не ведаюць такіх элементарных рэчаў, як Ctrl+Z, Ctrl+C і Ctrl+V, вылучэнні тэксту з заціснутым Shift-ам ці падвойным клікам на слове і іншага. Гэта пры тым, што ў іх ішоў трэці год навучання інфарматыцы… Выснова зрабіце самі.

Трэцяе: сляпы друк. Каментары ў кодзе я даверыў друкаваць дзіцяці (няхай трэніруецца). Адразу паставілі правільна рукі, каб пальцы паступова запаміналі размяшчэнне клавіш.

Як бачыце, у нас усё яшчэ толькі-толькі пачынаецца. Навыкі і веды будзем навострываць і далей, у жыцці спатрэбяцца.

Дарэчы, пра далягляд…

далейшае развіццё

Робат зроблены, ездзіць, міргае і пішчыць. Што ж зараз? Натхніўшыся дасягнутым, мы плануем дапрацоўваць яго далей. Ёсць задумка зрабіць дыстанцыйнае кіраванне - па тыпе месяцахода. Было б цікава, седзячы за ўмоўным пультам, кантраляваць рух робата, які ездзіць зусім у іншым месцы. Але гэта ўжо будзе асобная гісторыя...

І ў канцы, уласна, героі гэтага артыкула (відэа па кліку):

Вопыт стварэння першага робата на Ардуіна (робат-"паляўнічы")

Дзякуй за ўвагу!

Спасылка на код

Крыніца: habr.com

Дадаць каментар