Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Sveiki

Å ajā rakstā es vēlos aprakstÄ«t sava pirmā robota montāžas procesu, izmantojot Arduino. Materiāls bÅ«s noderÄ«gs citiem iesācējiem, piemēram, man, kuri vēlas izgatavot sava veida ā€œpaÅ”skrienoÅ”us ratiņusā€. Rakstā ir aprakstÄ«ti darba posmi ar maniem papildinājumiem par dažādām niansēm. Saite uz galÄ«go kodu (visticamāk, ne ideālāko) ir dota raksta beigās.

Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Kad vien tas bija iespējams, iesaistÄ«ju dēlu (8 gadi) dalÄ«bā. Kas tieÅ”i ar to strādāja un kas ne - Å”im esmu veltÄ«jis daļu raksta, iespējams, kādam noderēs.

Vispārīgs robota apraksts

Pirmkārt, daži vārdi par paÅ”u robotu (ideja). Sākumā es Ä«sti negribēju salikt kaut ko standarta. Tajā paŔā laikā komponentu komplekts bija diezgan standarta - Å”asija, dzinēji, ultraskaņas sensors, lÄ«nijas sensors, gaismas diodes, tweeter. Sākotnēji no Ŕī ā€œzupas komplektaā€ tika izgudrots robots, kas apsargā savu teritoriju. ViņŔ brauc pretÄ« pārkāpējam, kurÅ” Ŕķērsojis apļa lÄ«niju, un pēc tam atgriežas centrā. Tomēr Å”ai versijai bija nepiecieÅ”ama novilkta lÄ«nija, kā arÄ« papildu matemātika, lai visu laiku paliktu lokā.

Tāpēc pēc pārdomām nedaudz mainÄ«ju domu un nolēmu izgatavot ā€œmedniekuā€ robotu. Sākumā tas apgriežas ap savu asi, izvēloties tuvumā esoÅ”u mērÄ·i (personu). Ja ā€œmednieksā€ tiek atklāts, ā€œmednieksā€ ieslēdz mirgojoŔās gaismas un sirēnu un sāk braukt tam pretÄ«. Kad cilvēks attālinās/aizbēg, robots izvēlas jaunu mērÄ·i un dzenas pēc tā utt. Šādam robotam nav nepiecieÅ”ams ierobežots loks, un tas var strādāt atklātās vietās.

Kā redzat, Ŕī ir ļoti lÄ«dzÄ«ga panākÅ”anas spēlei. Lai gan beigās robots izrādÄ«jās ne pārāk ātrs, tas godÄ«gi mijiedarbojas ar apkārtējiem cilvēkiem. ÄŖpaÅ”i patÄ«k bērniem (dažkārt tomēr Ŕķiet, ka grasās samÄ«dÄ«t, sirds pārlaiž...). Manuprāt, tas ir labs risinājums tehniskā dizaina popularizÄ“Å”anai.

Robota uzbūve

Tātad, mēs esam izlēmuÅ”i par ideju, pāriesim pie izkārtojumu. Elementu saraksts tiek veidots no tā, kas robotam jāspēj. Å eit viss ir diezgan acÄ«mredzams, tāpēc nekavējoties apskatÄ«sim numerāciju:

Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Robota ā€œsmadzenesā€ ir arduino uno dēlis (1); bija no Ķīnas pasÅ«tÄ«tā komplektā. MÅ«su mērÄ·iem tas ir pilnÄ«gi pietiekami (mēs koncentrējamies uz izmantoto tapu skaitu). No tā paÅ”a komplekta mēs paņēmām gatavu Å”asiju (2), uz kuras ir piestiprināti divi piedziņas riteņi (3) un viens aizmugurējais (brÄ«vi rotējoÅ”s) (4). Komplektā bija arÄ« gatavs bateriju nodalÄ«jums (5). Robota priekŔā ir ultraskaņas sensors (HC-SR04) (6), aizmugurē ir motora draiveris (L298N) (7), centrā ir LED mirgotājs (8), un nedaudz lÄ«dz. sānos ir tweeter (9).

Izkārtojuma posmā mēs skatāmies:

- lai viss der
- būt līdzsvarotam
- būt racionāli novietotam

MÅ«su Ķīnas kolēģi to jau daļēji ir izdarÄ«juÅ”i mÅ«su vietā. Tātad smagais akumulatora nodalÄ«jums ir novietots centrā, un piedziņas riteņi atrodas aptuveni zem tā. Visi pārējie dēļi ir viegli un var tikt novietoti perifērijā.

Nianses:

  1. Å asijai no komplekta ir daudz rÅ«pnÄ«cas caurumu, taču es joprojām neesmu sapratis, kāda loÄ£ika tajos ir. Dzinēji un akumulatoru bloks tika nostiprināti bez problēmām, tad sākās ā€œregulÄ“Å”anaā€ ar jaunu caurumu urbÅ”anu, lai nostiprinātu to vai citu dēli.
  2. Liels palÄ«gs bija misiņa plaukti un citi stiprinājumi no uzglabāŔanas vietām (dažreiz mums tos nācās izņemt).
  3. Kopnes no katra dēļa izlaidu caur skavām (atkal atradu noliktavā). Ļoti ērti, visi vadi smuki atrodas un nekarājas.

AtseviŔķi bloki

Tagad es ieŔu cauri bloki un es jums pastāstīŔu personīgi par katru.

bateriju nodalījums

Skaidrs, ka robotam jābÅ«t ar labu enerÄ£ijas avotu. Iespējas var atŔķirties, es izvēlējos opciju ar 4 AA baterijām. Kopumā tie dod aptuveni 5 V, un Å”o spriegumu var tieÅ”i pielietot arduino plates 5 V tapai (apejot stabilizatoru).

Protams, man bija zināma piesardzība, taču Ŕis risinājums ir diezgan efektīvs.

Tā kā jauda ir nepiecieÅ”ama visur, ērtÄ«bas labad es izveidoju divus savienotājus robota centrā: viens ā€œizplataā€ zemi (labajā pusē), bet otrs - 5 V (kreisajā pusē).

Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Motori un vadītājs

Pirmkārt, par dzinēju uzstādÄ«Å”anu. Stiprinājums ir izgatavots rÅ«pnÄ«cā, bet izgatavots ar lielām pielaidēm. Citiem vārdiem sakot, dzinēji var svārstÄ«ties pāris milimetrus pa kreisi un pa labi. MÅ«su uzdevumam tas nav kritiski, bet dažviet tas var ietekmēt (robots sāks virzÄ«ties uz sāniem). Katram gadÄ«jumam dzinējus noliku stingri paralēli un nofiksēju ar lÄ«mi.

Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Lai vadÄ«tu motorus, kā jau rakstÄ«ju iepriekÅ”, tiek izmantots draiveris L298N. Saskaņā ar dokumentāciju, tai ir trÄ«s tapas katram motoram: viena ātruma maiņai un pāris tapu grieÅ”anās virzienam. Å eit ir viens svarÄ«gs punkts. Izrādās, ja baroÅ”anas spriegums ir 5 V, tad ātruma kontrole vienkārÅ”i nedarbojas! Tas ir, vai nu tas vispār negriežas, vai arÄ« griežas maksimāli. Å Ä« ir iezÄ«me, kas lika man "nogalināt" pāris vakarus. Beigās es atradu pieminējumu kaut kur vienā no forumiem.

VispārÄ«gi runājot, man vajadzēja mazu grieÅ”anās ātrumu, griežot robotu - lai tam bÅ«tu laiks skenēt telpu. Bet, tā kā no Ŕīs idejas nekas nesanāca, nācās darÄ«t savādāk: neliels pagrieziens - stop - pagrieziens - stop utt. Atkal ne tik eleganti, bet darbÄ«gi.

Å eit arÄ« piebildÄ«Å”u, ka pēc katras vajāŔanas robots izvēlas nejauÅ”u virzienu jaunam pagriezienam (pulksteņrādÄ«tāja virzienā vai pretēji pulksteņrādÄ«tāja virzienam).

Ultraskaņas sensors

Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Vēl viena aparatÅ«ras daļa, kurā mums bija jāmeklē kompromisa risinājums. Ultraskaņas sensors rada nestabilus skaitļus uz reāliem ŔķērŔļiem. PatiesÄ«bā tas bija gaidāms. Ideālā gadÄ«jumā tas darbojas kaut kur sacensÄ«bās, kur ir gludas, lÄ«dzenas un perpendikulāras virsmas, bet, ja kādam priekŔā "zib" kājas, ir jāievieÅ” papildu apstrāde.

Kā tādu apstrādi es iestatÄ«ju vidējais filtrs par trim aprēķiniem. Pamatojoties uz testiem uz reāliem bērniem (pārbaužu laikā neviens bērns nav cietis!), izrādÄ«jās pilnÄ«gi pietiekami, lai normalizētu datus. Fizika Å”eit ir vienkārÅ”a: mums ir signāli, kas atspÄ«d no nepiecieÅ”ams objektus (dodot nepiecieÅ”amo attālumu) un atspÄ«d no attālākiem, piemēram, sienām. Pēdējās ir nejauÅ”as emisijas mērÄ«jumos 45, 46 formā, 230, 46, 46, 45, 45, 310, 46... TieÅ”i tos nogriež vidējais filtrs.

Pēc visas apstrādes mēs iegÅ«stam attālumu lÄ«dz tuvākajam objektam. Ja tas ir mazāks par noteiktu sliekŔņa vērtÄ«bu, tad ieslēdzam signalizāciju un braucam taisni pretÄ« ā€œiekrāvējamā€.

Mirgotājs un sirēna

VarbÅ«t visvienkārŔākie elementi no visiem iepriekÅ” minētajiem. Tos var redzēt iepriekÅ” redzamajās fotogrāfijās. Å eit nav ko rakstÄ«t par aparatÅ«ru, tāpēc tagad pāriesim pie kods.

Kontroles programma

Neredzu jēgu detalizēti aprakstīt kodu, kam tas vajadzīgs - saite ir raksta beigās, tur viss ir diezgan salasāms. Bet būtu jauki izskaidrot vispārējo struktūru.

Pirmā lieta, kas mums bija jāsaprot, bija tas, ka robots ir reāllaika ierÄ«ce. PrecÄ«zāk, atcerēties, jo gan agrāk, gan tagad joprojām strādāju elektronikā. Tātad, mēs nekavējoties aizmirstam par izaicinājumu kavÄ“Å”anās (), ko viņi labprāt izmanto skiču piemērus un kas vienkārÅ”i ā€œiesaldēā€ programmu uz noteiktu laiku. Tā vietā, kā iesaka pieredzējuÅ”i cilvēki, mēs ievieÅ”am taimerus katram blokam. NepiecieÅ”amais intervāls ir pagājis - darbÄ«ba ir veikta (palielināts gaismas diodes spilgtums, ieslēgts dzinējs utt.).

Taimeri var bÅ«t savstarpēji savienoti. Piemēram, tweeter darbojas sinhroni ar mirgotāju. Tas nedaudz vienkārÅ”o programmu.

Protams, mēs visu sadalām atseviŔķās funkcijās (mirgojoÅ”as gaismas, skaņa, pagrieÅ”ana, kustÄ«ba uz priekÅ”u utt.). Ja jÅ«s to nedarÄ«siet, jÅ«s nevarēsit saprast, kas nāk no kurienes un kur.

Pedagoģijas nianses

Visu iepriekÅ” aprakstÄ«to darÄ«ju brÄ«vajā laikā vakaros. NesteidzÄ«gi es pie robota pavadÄ«ju apmēram trÄ«s nedēļas. Te varēja beigties, bet apsolÄ«ju pastāstÄ«t arÄ« par darbu ar bērnu. Ko var darÄ«t Å”ajā vecumā?

Strādājiet saskaņā ar instrukcijām

Vispirms pārbaudÄ«jām katru detaļu atseviŔķi - gaismas diodes, tweeter, motori, sensori utt.. Ir liels skaits gatavu piemēru - daži tieÅ”i izstrādes vidē, citi atrodami internetā. Tas mani noteikti iepriecina. Mēs paņemam kodu, savienojam daļu, pārliecināmies, ka tā darbojas, tad sākam to mainÄ«t, lai tas atbilstu mÅ«su uzdevumam. Bērns veic savienojumus pēc diagrammas un manā uzraudzÄ«bā. Tas ir labi. Jums arÄ« jāspēj strādāt stingri saskaņā ar instrukcijām.

Darba kārtÄ«ba (ā€œno konkrēta uz vispārÄ«guā€)

Tas ir grÅ«ts punkts. Jums jāiemācās, ka liels projekts (ā€œizveidot robotuā€) sastāv no maziem uzdevumiem (ā€œpievienojiet sensoruā€, ā€œpieslēdziet motorusā€...), bet tie, savukārt, sastāv no vēl mazākiem soļiem ("atrast a) programmaā€, ā€œpievienojiet dēli.ā€ ā€œ, ā€œlejupielādēt programmaparatÅ«ruā€...). Veicot vairāk vai mazāk saprotamus zemākā lÄ«meņa uzdevumus, ā€œnoslēdzamā€ vidējā lÄ«meņa uzdevumus, un no tiem veidojas kopējais rezultāts. Paskaidroju, bet domāju, ka atziņa nenāks drÄ«z. Kaut kur, iespējams, pusaudža gados.

UzstādīŔana

UrbÅ”ana, vÄ«tnes, skrÅ«ves, uzgriežņi, lodÄ“Å”ana un kolofonija smaka ā€“ kur gan mēs bÅ«tu bez tā? Bērns ieguva pamatprasmi ā€œDarbs ar lodāmuruā€ - viņam izdevās pielodēt vairākus savienojumus (nedaudz palÄ«dzēju, neslēpÅ”u). Neaizmirstiet par droŔības skaidrojumu.

Darbs ar datoru

Es uzrakstīju programmu robotam, bet man tomēr izdevās sasniegt dažus labvēlīgus rezultātus.

Pirmkārt: angļu valoda. Viņi to bija tikko sākuÅ”i skolā, tāpēc mums bija grÅ«ti saprast, kas ir pishalka, migalka, yarkost un citas transliterācijas. Vismaz mēs to sapratām. Es apzināti neizmantoju angļu valodas vārdus, jo mēs vēl neesam sasnieguÅ”i Å”o lÄ«meni.

Otrkārt: efektÄ«vs darbs. Mēs mācÄ«jām karsto taustiņu kombinācijas un to, kā ātri veikt standarta darbÄ«bas. Periodiski, kad mēs rakstÄ«jām programmu, mēs ar dēlu samainÄ«jāmies vietām, un es teicu, kas jādara (nomaiņa, meklÄ“Å”ana utt.). Man bija jāatkārto atkal un atkal: "atlasÄ«t dubultklikŔķi", "turēt Shift", "turēt Ctrl" un tā tālāk. MācÄ«bu process Å”eit nav ātrs, bet es domāju, ka prasmes pakāpeniski tiks noglabātas ā€œapakÅ”garozāā€.

Slēpts tekstsVar teikt, ka iepriekÅ” minētais ir gandrÄ«z acÄ«mredzams. Bet, godÄ«gi sakot, Å”oruden man bija iespēja 9. klasē mācÄ«t informātiku vienā skolā. Tas ir Å”ausmÄ«gi. Skolēni nezina tādas pamata lietas kā Ctrl + Z, Ctrl + C un Ctrl + V, teksta atlase, turot nospiestu Shift vai dubultklikŔķi uz vārda, un tā tālāk. Tas ir par spÄ«ti tam, ka viņi datorzinātnēs studēja treÅ”ajā gadā... Secinājumu izdariet paÅ”i.

TreÅ”kārt: rakstÄ«Å”ana ar pieskārienu. Komentārus kodā uzticēju bērnam rakstÄ«t (lai vingrinās). Uzreiz pareizi novietojām rokas, lai pirksti pamazām atcerētos atslēgu atraÅ”anās vietu.

Kā redzat, mēs joprojām tikai sākam. Turpināsim pilnveidot savas prasmes un zināŔanas, tās dzÄ«vē noderēs.

Starp citu, par nākotni...

Tālāka attīstība

Robots ir izgatavots, brauc, mirkŔķina un pÄ«kst. Ko tagad? Iedvesmojoties no sasniegtā, mēs plānojam to pilnveidot vēl vairāk. Ir doma uztaisÄ«t tālvadÄ«bas pulti ā€“ kā Mēness roveram. BÅ«tu interesanti, sēžot pie pults, vadÄ«t robota kustÄ«bu, kas brauc pavisam citā vietā. Bet tas bÅ«s cits stāsts...

Un beigās, patiesÄ«bā, Ŕī raksta varoņi (video, noklikŔķinot):

Pieredze pirmā robota radīŔanā uz Arduino (robotu "mednieks")

Š”ŠæŠ°ŃŠøŠ±Š¾ Š·Š° Š²Š½ŠøŠ¼Š°Š½ŠøŠµ!

ā†’ Koda saite

Avots: www.habr.com

Pievieno komentāru