Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

Pozdravljeni

V tem članku želim opisati postopek sestavljanja svojega prvega robota z uporabo Arduina. Gradivo bo koristno za druge začetnike, kot sem jaz, ki želijo izdelati nekakšen "samodejni voziček". Članek je opis faz dela z mojimi dodatki na različnih odtenkih. Povezava do končne kode (najverjetneje ne najbolj idealne) je navedena na koncu članka.

Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

Če je bilo le možno, sem k sodelovanju pritegnila svojega sina (8 let). Kaj natančno je z njim delovalo in kaj ne - temu sem posvetil del članka, morda bo komu koristil.

Splošni opis robota

Najprej nekaj besed o samem robotu (ideja). Na začetku res nisem želel sestaviti nekaj standardnega. Hkrati je bil nabor komponent precej standarden - šasija, motorji, ultrazvočni senzor, linijski senzor, LED, visokotonec. Sprva je bil iz tega "jušnega kompleta" izumljen robot, ki varuje svoje ozemlje. Zapelje proti kršitelju, ki je prečkal krožno črto, nato pa se vrne v sredino. Vendar je ta različica zahtevala narisano črto in dodatno matematiko, da bi ves čas ostal v krogu.

Zato sem po premisleku idejo nekoliko spremenil in se odločil narediti robota "lovca". Na začetku se obrne okoli svoje osi in si izbere bližnjo tarčo (osebo). Če je »plen« zaznan, »lovec« vklopi utripajoče luči in sireno ter se začne voziti proti njemu. Ko se oseba odmakne/pobegne, robot izbere novo tarčo in jo zasleduje itd. Takšen robot ne potrebuje omejenega kroga in lahko deluje na odprtih območjih.

Kot lahko vidite, je to zelo podobno igri dohitevanja. Čeprav se na koncu robot ni izkazal za dovolj hitrega, je pošteno komuniciral z ljudmi okoli sebe. Posebej všeč je otrokom (včasih pa se zdi, da jo bodo poteptali, srce jim zaigra...). Mislim, da je to dobra rešitev za popularizacijo tehničnega oblikovanja.

Struktura robota

Torej, za idejo smo se odločili, pojdimo naprej postavitev. Seznam elementov se oblikuje iz tega, kar naj bi robot zmogel. Tukaj je vse precej očitno, zato takoj poglejmo oštevilčenje:

Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

»Možgani« robota so plošča arduino uno (1); je bil v kompletu naročen iz Kitajske. Za naše namene je povsem dovolj (osredotočeni smo na število uporabljenih žebljičkov). Iz istega kompleta smo vzeli že pripravljeno šasijo (2), na katero sta pritrjeni dve pogonski kolesi (3) in eno zadnje (prosto vrtljivo) (4). Komplet je vseboval tudi že pripravljen predal za baterije (5). Pred robotom je ultrazvočni senzor (HC-SR04) (6), zadaj gonilnik motorja (L298N) (7), na sredini je LED utripalnik (8) in malo do ob strani je visokotonec (9).

V fazi postavitve pogledamo:

- tako da se vse ujema
- biti uravnotežen
- biti racionalno postavljen

Kitajski kolegi so to za nas delno že opravili. Torej, težak predal za baterije je postavljen v sredino, pogonska kolesa pa so nameščena približno pod njim. Vse ostale plošče so lahke in jih je mogoče postaviti na obrobje.

Ponudbe:

  1. Podvozje iz kompleta ima veliko tovarniških lukenj, vendar še vedno nisem ugotovil, kakšna je logika v njih. Motorji in baterijski sklop so bili pritrjeni brez težav, nato pa se je začelo »prilagoditev« z vrtanjem novih lukenj za pritrditev te ali one deske.
  2. V veliko pomoč so bili medeninasti regali in drugi pritrdilni elementi iz skladiščnih prostorov (včasih smo jih morali spraviti ven).
  3. Skozi sponke sem prepeljal zbiralke iz vsake plošče (spet sem jih našel v skladišču). Zelo priročno, vse žice ležijo lepo in ne bingljajo.

Posamezni bloki

Zdaj bom šel skozi bloki in o vsakem vam bom osebno povedal.

prostor za baterije

Jasno je, da mora imeti robot dober vir energije. Možnosti so lahko različne, jaz sem izbral možnost s 4 AA baterijami. Skupno dajejo približno 5 V, to napetost pa je mogoče uporabiti neposredno na 5V pin plošče arduino (mimo stabilizatorja).

Seveda sem bil nekoliko previden, vendar je ta rešitev precej izvedljiva.

Ker je napajanje potrebno povsod, sem za udobje naredil dva priključka v sredini robota: eden "distribuira" tla (na desni), drugi pa 5 V (na levi).

Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

Motorji in voznik

Najprej o montaži motorjev. Nosilec je tovarniško izdelan, vendar z velikimi tolerancami. Z drugimi besedami, motorji lahko nihajo nekaj milimetrov levo in desno. Za našo nalogo to ni kritično, a na nekaterih mestih lahko vpliva (robot se bo začel premikati vstran). Za vsak slučaj sem motorje postavil strogo vzporedno in jih pritrdil z lepilom.

Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

Za krmiljenje motorjev, kot sem napisal zgoraj, se uporablja gonilnik L298N. Po dokumentaciji ima tri zatiče za vsak motor: enega za spreminjanje hitrosti in par zatičev za smer vrtenja. Tukaj je ena pomembna točka. Izkazalo se je, da če je napajalna napetost 5 V, potem nadzor hitrosti preprosto ne deluje! To pomeni, da se sploh ne obrne ali pa se obrne do maksimuma. To je funkcija, zaradi katere sem "ubil" nekaj večerov. Na koncu sem nekje na enem od forumov našel omembo.

Na splošno sem potreboval nizko hitrost vrtenja pri obračanju robota - tako da je imel čas skenirati prostor. Ampak, ker iz te ideje ni bilo nič, sem moral narediti drugače: majhen obrat - stop - obrat - stop itd. Spet ne tako elegantno, a izvedljivo.

Tu bom še dodal, da po vsakem zasledovanju robot izbere naključno smer za nov zavoj (v smeri urinega kazalca ali nasprotni smeri).

Ultrazvočni senzor

Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

Še en kos strojne opreme, kjer smo morali iskati kompromisno rešitev. Ultrazvočni senzor proizvaja nestabilne številke na resničnih ovirah. Pravzaprav je bilo to pričakovano. Idealno deluje nekje na tekmovanjih, kjer so gladke, ravne in pravokotne podlage, če pa komu pred njim "švigajo" noge, je treba uvesti dodatno obdelavo.

Kot tako obdelavo sem nastavil srednji filter za tri točke. Na podlagi testiranj na resničnih otrocih (noben otrok med testiranji ni bil poškodovan!) se je izkazalo za povsem zadostno za normalizacijo podatkov. Fizika tukaj je preprosta: imamo signale, ki se odbijajo od potrebno predmetov (kar zagotavlja zahtevano razdaljo) in se odbija od bolj oddaljenih, na primer sten. Slednji so naključni izpusti pri meritvah oblike 45, 46, 230, 46, 46, 45, 45, 310, 46... To je tisto, kar medianski filter odreže.

Po vseh obdelavah dobimo razdaljo do najbližjega objekta. Če je manjša od določene mejne vrednosti, potem vklopimo alarm in se odpeljemo naravnost proti »vsiljivcu«.

Utripalka in sirena

Morda najpreprostejši elementi vseh zgoraj naštetih. Vidite jih lahko na zgornjih fotografijah. Tukaj ni kaj pisati o strojni opremi, zdaj pa pojdimo naprej Koda.

Nadzorni program

Ne vidim smisla v podrobnem opisovanju kode, kdo jo potrebuje - povezava je na koncu članka, tam je vse precej berljivo. Vendar bi bilo dobro razložiti splošno strukturo.

Prva stvar, ki smo jo morali razumeti, je bila, da je robot naprava v realnem času. Natančneje, da se spomnim, saj se tako prej kot zdaj še vedno ukvarjam z elektroniko. Torej takoj pozabimo na izziv zamuda (), ki ga zelo radi uporabljajo v vzorčnih skicah in ki preprosto »zamrzne« program za določen čas. Namesto tega, kot svetujejo izkušeni, uvedemo časovnike za vsak blok. Zahtevani interval je potekel - dejanje je bilo izvedeno (povečana svetlost LED, vklopljen motor itd.).

Časovniki so lahko med seboj povezani. Na primer, visokotonec deluje sinhrono z bliskavico. To nekoliko poenostavi program.

Seveda vse razdelimo na ločene funkcije (utripajoče luči, zvok, obračanje, premikanje naprej itd.). Če tega ne storite, potem ne boste mogli ugotoviti, od kje in kaj prihaja.

Nianse pedagogike

Vse zgoraj opisano sem počel v prostem času ob večerih. Na lagoden način sem robotu namenil približno tri tedne. Tu bi se lahko končalo, a obljubila sem vam, da vam bom povedala tudi o delu z otrokom. Kaj je mogoče storiti v tej starosti?

Delajte po navodilih

Najprej smo preverili vsak detajl posebej - LED diode, visokotonec, motorje, senzorje itd. Obstaja ogromno že pripravljenih primerkov - nekateri kar v razvojnem okolju, druge najdete na internetu. To me zagotovo veseli. Vzamemo kodo, povežemo del, se prepričamo, da deluje, nato pa ga začnemo spreminjati, da ustreza naši nalogi. Otrok povezuje po shemi in pod mojim nadzorom. To je dobro. Prav tako morate biti sposobni delati strogo v skladu z navodili.

Vrstni red dela ("od posameznega do splošnega")

To je težka točka. Naučiti se morate, da je velik projekt (»naredi robota«) sestavljen iz majhnih nalog (»priključi senzor«, »priključi motorje«...), te pa so sestavljene iz še manjših korakov (»poišči program", "poveži ploščo." ", "prenesi vdelano programsko opremo"...). Z izvajanjem bolj ali manj razumljivih nalog nižje ravni »zapremo« naloge srednje ravni in iz njih nastane skupni rezultat. Sem razložil, a mislim, da do realizacije ne bo prišlo kmalu. Nekje, verjetno, v adolescenci.

Namestitev

Vrtanje, navoji, vijaki, matice, spajkanje in vonj po kolofoniji – kje bi bili brez tega? Otrok je prejel osnovno veščino "Delo s spajkalnikom" - uspelo mu je spajkati več povezav (malo sem pomagal, ne bom skrival). Ne pozabite na varnostno razlago.

Delo z računalnikom

Napisal sem program za robota, vendar mi je vseeno uspelo doseči nekaj ugodnih rezultatov.

Najprej: angleščina. V šoli so ga šele začeli, zato smo se trudili ugotoviti, kaj so pishalka, migalka, yarkost in druge transkripcije. Vsaj to smo razumeli. Namenoma nisem uporabil domačih angleških besed, saj tega nivoja še nismo dosegli.

Drugič: učinkovito delo. Naučili smo se o kombinacijah hitrih tipk in o hitrem izvajanju standardnih operacij. Občasno, ko sva pisala program, sva se s sinom zamenjala in povedal sem, kaj je treba narediti (zamenjava, iskanje itd.). Vedno znova sem moral ponavljati: "dvoklikni izberite", "držite Shift", "držite Ctrl" in tako naprej. Učni proces tukaj ni hiter, vendar mislim, da se bodo veščine postopoma odložile "v podkorteksu".

Skrito besediloLahko rečete, da je zgoraj navedeno skoraj očitno. Ampak, iskreno, to jesen sem imel priložnost poučevati računalništvo v 9. razredu na eni šoli. To je grozno. Učenci ne poznajo osnovnih stvari, kot so Ctrl + Z, Ctrl + C in Ctrl + V, izbiranje besedila z držanjem Shift ali dvojni klik na besedo ipd. In to kljub temu, da so bili v tretjem letniku računalništva ... Sklepajte sami.

Tretjič: tipkanje na dotik. Komentarje v kodi sem zaupala otroku v tipkanje (naj vadi). Roke smo takoj pravilno postavili, tako da so si prsti postopoma zapomnili lokacijo tipk.

Kot vidite, smo še vedno na začetku. Še naprej bomo izpopolnjevali svoje veščine in znanja, ki nam bodo koristna v življenju.

Mimogrede, o prihodnosti ...

Nadaljnji razvoj

Robot je narejen, vozi, miga in piska. Kaj zdaj? Navdihnjeni s tem, kar smo dosegli, ga nameravamo še izboljšati. Obstaja ideja, da bi naredili daljinski upravljalnik - kot lunarni rover. Zanimivo bi bilo, sedeč za daljinskim upravljalnikom, nadzorovati gibanje robota, ki se vozi na povsem drugem mestu. Ampak to bo že druga zgodba...

In na koncu pravzaprav še junaki tega članka (video s klikom):

Izkušnja ustvarjanja prvega robota na Arduinu (robot "lovec")

Спасибо за внимание!

Povezava do kode

Vir: www.habr.com

Dodaj komentar