Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Sveiki

Šiame straipsnyje noriu aprašyti savo pirmojo roboto surinkimo procesą naudojant Arduino. Medžiaga bus naudinga kitiems pradedantiesiems, kaip aš, norintiems pasigaminti kokį nors „savaime važiuojantį vežimėlį“. Straipsnis yra darbo etapų aprašymas su mano papildymais įvairiais niuansais. Nuoroda į galutinį kodą (greičiausiai ne patį idealiausią) pateikiama straipsnio pabaigoje.

Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Kai tik buvo galimybė, į dalyvavimą įtraukiau ir savo sūnų (8 m.). Kas tiksliai veikė, o kas ne - tam skyriau dalį straipsnio, galbūt kam nors tai bus naudinga.

Bendras roboto aprašymas

Pirma, keli žodžiai apie patį robotą (idėja). Iš pradžių nelabai norėjau surinkti kažko standartinio. Tuo pačiu metu komponentų rinkinys buvo gana standartinis - važiuoklė, varikliai, ultragarsinis jutiklis, linijos jutiklis, šviesos diodai, aukštų dažnių garsiakalbis. Iš pradžių iš šio „sriubos rinkinio“ buvo išrastas robotas, kuris saugo savo teritoriją. Jis važiuoja link skriejimo liniją kirtusio pažeidėjo, o tada grįžta į centrą. Tačiau šiai versijai reikėjo nubrėžtos linijos ir papildomos matematikos, kad visada liktų rate.

Todėl, kiek pagalvojęs, kiek pakeičiau idėją ir nusprendžiau pagaminti „medžiotojo“ robotą. Pradžioje jis apsisuka aplink savo ašį, pasirinkdamas netoliese esantį taikinį (asmenį). Jei aptinkamas „grobis“, „medžiotojas“ įjungia mirksinčias lemputes ir sireną ir pradeda važiuoti link jo. Kai žmogus tolsta/pabėga, robotas pasirenka naują taikinį ir jo siekia ir t.t. Tokiam robotui nereikia riboto rato, jis gali dirbti atvirose vietose.

Kaip matote, tai labai panašu į pasivijimo žaidimą. Nors galiausiai robotas ir nepasirodė pakankamai greitas, jis nuoširdžiai bendrauja su aplinkiniais žmonėmis. Ypač tai patinka vaikams (kartais vis dėlto atrodo, kad tuoj sutryps, širdis peršoka...). Manau, kad tai geras sprendimas populiarinti techninį dizainą.

Roboto struktūra

Taigi, mes nusprendėme dėl idėjos, pereikime prie išdėstymas. Elementų sąrašas sudaromas iš to, ką robotas turėtų sugebėti. Viskas čia yra gana akivaizdu, todėl iš karto pažvelkime į numeraciją:

Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Roboto „smegenys“ yra arduino uno plokštė (1); buvo iš Kinijos užsakytame komplekte. Mūsų tikslams to visiškai pakanka (mes sutelkiame dėmesį į naudojamų kaiščių skaičių). Iš to paties komplekto paėmėme paruoštą važiuoklę (2), ant kurios pritvirtinti du varantys ratai (3) ir vienas galinis (laisvai besisukantis) (4). Komplekte taip pat buvo paruoštas akumuliatoriaus skyrius (5). Priešais robotą yra ultragarsinis jutiklis (HC-SR04) (6), gale yra variklio vairuotojas (L298N) (7), centre yra LED blykstė (8), o šiek tiek šone yra aukštų dažnių garsiakalbis (9).

Išdėstymo etape mes žiūrime į:

- kad viskas tiktų
- būti subalansuotam
- racionaliai išdėstyti

Mūsų kolegos iš Kinijos jau iš dalies tai padarė už mus. Taigi, sunkus akumuliatoriaus skyrius yra centre, o varantieji ratai yra maždaug po juo. Visos kitos lentos yra lengvos ir gali būti dedamos ant periferijos.

Niuansai:

  1. Važiuoklė iš komplekto turi daug gamyklinių skylių, bet vis dar nesupratau, kokia jose logika. Varikliai ir akumuliatorių blokas buvo pritvirtinti be problemų, tada prasidėjo „reguliavimas“ išgręžiant naujas skylutes tam ar kitai lentai pritvirtinti.
  2. Labai pagelbėjo žalvariniai stelažai ir kitos tvirtinimo detalės iš sandėliavimo zonų (kartais tekdavo juos išimti).
  3. Iš kiekvienos plokštės šynas perleidau per spaustukus (vėlgi radau saugykloje). Labai patogu, visi laidai gražiai guli ir nekaba.

Atskiri blokai

Dabar aš pereisiu blokai ir apie kiekvieną papasakosiu asmeniškai.

akumuliatoriaus skyrius

Akivaizdu, kad robotas turi turėti gerą energijos šaltinį. Variantai gali skirtis, aš pasirinkau variantą su 4 AA baterijomis. Iš viso jie duoda maždaug 5 V, o šią įtampą galima tiesiogiai prijungti prie arduino plokštės 5 V kištuko (aplenkiant stabilizatorių).

Žinoma, buvau atsargus, bet šis sprendimas yra gana veiksmingas.

Kadangi visur reikia maitinimo, patogumo dėlei roboto centre padariau dvi jungtis: viena „paskirsto“ žemę (dešinėje), o antroji - 5 V (kairėje).

Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Varikliai ir vairuotojas

Pirma, apie variklių montavimą. Laikiklis pagamintas gamykloje, tačiau pagamintas su dideliais nuokrypiais. Kitaip tariant, varikliai gali svyruoti porą milimetrų į kairę ir į dešinę. Mūsų užduočiai tai nėra labai svarbu, tačiau kai kuriose vietose tai gali turėti įtakos (robotas pradės judėti į šoną). Tik tuo atveju variklius nustatiau griežtai lygiagrečiai ir pritvirtinau klijais.

Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Varikliams valdyti, kaip rašiau aukščiau, naudojama L298N tvarkyklė. Pagal dokumentaciją jame yra trys kaiščiai kiekvienam varikliui: po vieną greičio keitimui ir pora kaiščių sukimosi krypčiai. Čia yra vienas svarbus momentas. Pasirodo, jei maitinimo įtampa yra 5 V, tada greičio reguliatorius tiesiog neveikia! Tai yra, arba visai nesisuka, arba pasisuka maksimaliai. Tai yra ta savybė, dėl kurios aš „nužudžiau“ porą vakarų. Galiausiai kažkur viename forume radau paminėjimą.

Paprastai tariant, sukant robotą man reikėjo mažo sukimosi greičio – kad jis spėtų skenuoti erdvę. Bet kadangi iš šios idėjos nieko neišėjo, teko daryti kitaip: mažas posūkis - sustoti - pasukti - sustoti ir tt Vėlgi ne taip elegantiškai, bet darbingai.

Čia taip pat pridursiu, kad po kiekvieno persekiojimo robotas pasirenka atsitiktinę kryptį naujam posūkiui (pagal laikrodžio rodyklę arba prieš laikrodžio rodyklę).

Ultragarsinis jutiklis

Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Kitas techninės įrangos elementas, kuriame turėjome ieškoti kompromisinio sprendimo. Ultragarsinis jutiklis sukuria nestabilius skaičius ant tikrų kliūčių. Tiesą sakant, to buvo tikimasi. Idealiu atveju jis veikia kur nors varžybose, kur yra lygus, lygus ir statmenas paviršius, bet jei kam nors priešais „blyksteli“ kojos, reikia įvesti papildomą apdirbimą.

Kaip tokį apdorojimą nustatau medianinis filtras už tris kaltinimus. Remiantis testais su tikrais vaikais (atliekant tyrimus nė vienas vaikas nenukentėjo!), pasirodė, kad to visiškai pakanka duomenims normalizuoti. Fizika čia paprasta: mes turime signalus, atsispindinčius nuo būtina objektus (suteikiant reikiamą atstumą) ir atsispindinčius nuo tolimesnių, pavyzdžiui, sienų. Pastarosios yra atsitiktinės emisijos, matuojant 45, 46 formos, 230, 46, 46, 45, 45, 310, 46... Būtent juos nupjauna medianinis filtras.

Po viso apdorojimo gauname atstumą iki artimiausio objekto. Jei ji mažesnė už tam tikrą slenkstinę reikšmę, tada įjungiame signalizaciją ir važiuojame tiesiai link „įsibrovėlio“.

Blykstė ir sirena

Galbūt patys paprasčiausi elementai iš visų pirmiau minėtų dalykų. Juos galima pamatyti aukščiau esančiose nuotraukose. Čia nėra ką rašyti apie techninę įrangą, todėl dabar pereikime prie kodas.

Valdymo programa

Nematau prasmės išsamiai apibūdinti kodo, kam jo reikia - nuoroda yra straipsnio pabaigoje, ten viskas gana įskaitoma. Tačiau būtų malonu paaiškinti bendrą struktūrą.

Pirmas dalykas, kurį turėjome suprasti, buvo tai, kad robotas yra realaus laiko įrenginys. Tiksliau prisiminti, nes ir anksčiau, ir dabar vis dar dirbu elektronikos srityje. Taigi, mes iš karto pamirštame apie iššūkį delsimas(), kurią jie mėgsta naudoti pavyzdiniuose eskizuose ir kuris tiesiog „sustabdo“ programą tam tikram laikui. Vietoj to, kaip pataria patyrę žmonės, kiekvienam blokui pristatome laikmačius. Praėjo reikalingas intervalas – veiksmas atliktas (padidintas šviesos diodo ryškumas, įjungtas variklis ir pan.).

Laikmačiai gali būti sujungti tarpusavyje. Pavyzdžiui, aukštų dažnių garsiakalbis veikia sinchroniškai su blykste. Tai šiek tiek supaprastina programą.

Natūralu, kad viską išskaidome į atskiras funkcijas (mirksios šviesos, garsas, posūkis, judėjimas į priekį ir pan.). Jei to nepadarysite, negalėsite suprasti, kas iš kur ir kur ateina.

Pedagogikos niuansai

Viską, kas aprašyta aukščiau, dariau laisvalaikiu vakarais. Neskubėdamas prie roboto praleidau apie tris savaites. Čia galėjo ir baigtis, bet pažadėjau papasakoti ir apie darbą su vaiku. Ką galima padaryti tokiame amžiuje?

Dirbkite pagal instrukcijas

Pirmiausia patikrinome kiekvieną detalę atskirai – šviesos diodus, aukštų dažnių garsiakalbį, variklius, jutiklius ir t.t.. Yra labai daug paruoštų pavyzdžių – vieni tiesiog kūrimo aplinkoje, kitus galima rasti internete. Tai tikrai mane džiugina. Mes paimame kodą, sujungiame dalį, įsitikiname, kad ji veikia, tada pradedame jį keisti, kad atitiktų mūsų užduotį. Sujungimus vaikas daro pagal schemą ir man prižiūrint. Tai yra gerai. Taip pat reikia mokėti dirbti griežtai pagal instrukcijas.

Darbo tvarka („nuo konkretaus iki bendro“)

Tai sunkus dalykas. Turite išmokti, kad didelis projektas („sukurk robotą“) susideda iš mažų užduočių („prijunkite jutiklį“, „prijunkite variklius“...), o jos, savo ruožtu, susideda iš dar mažesnių žingsnių („surask a“). programa“, „prijunkite plokštę“, „atsisiųsti programinę-aparatinę įrangą“...). Atlikdami daugiau ar mažiau suprantamas žemesnio lygio užduotis, „uždarome“ vidurinio lygio užduotis, o iš jų susidaro bendras rezultatas. Aiškinau, bet manau, kad suvokimas ateis negreit. Kažkur turbūt iki paauglystės.

Montavimas

Gręžimas, sriegiai, varžtai, veržlės, litavimas ir kanifolijos kvapas – kur mes be jo? Vaikas gavo pagrindinį įgūdį „Darbas su lituokliu“ - jam pavyko sulituoti keletą jungčių (šiek tiek padėjau, neslėpsiu). Nepamirškite apie saugos paaiškinimą.

Darbas kompiuteriu

Parašiau programą robotui, bet vis tiek pavyko pasiekti palankių rezultatų.

Pirma: anglų kalba. Jie ką tik pradėjo tai daryti mokykloje, todėl mums sunkiai sekėsi išsiaiškinti, kas yra pishalka, migalka, yarkost ir kitos transliteracijos. Bent jau mes tai supratome. Sąmoningai nevartojau gimtosios anglų kalbos žodžių, nes tokio lygio dar nepasiekėme.

Antra: efektyvus darbas. Mokėme greitųjų klavišų kombinacijų ir kaip greitai atlikti standartines operacijas. Periodiškai, kai rašydavome programą, su sūnumi apsikeisdavome vietomis, sakydavau, ką reikia daryti (pakeitimas, paieška ir pan.). Teko kartoti vėl ir vėl: „dukart spustelėkite pasirinkti“, „laikykite Shift“, „laikykite Ctrl“ ir pan. Mokymosi procesas čia nėra greitas, bet manau, kad įgūdžiai palaipsniui bus kaupiami „požievėje“.

Paslėptas tekstasGalima sakyti, kad tai, kas išdėstyta aukščiau, yra beveik akivaizdu. Bet, tiesą sakant, šį rudenį vienoje mokykloje turėjau galimybę dėstyti informatiką 9 klasėje. Tai siaubinga. Mokiniai nemoka tokių elementarių dalykų kaip Ctrl + Z, Ctrl + C ir Ctrl + V, teksto pasirinkimas laikant Shift arba dukart spustelėjus žodį ir pan. Tai nepaisant to, kad jie trečius metus studijavo informatiką... Padarykite išvadą.

Trečia: rašymas liečiant. Kode esančius komentarus patikėjau vaikui spausdinti (tegu pasipraktikuoja). Iš karto teisingai padėjome rankas, kad pirštai pamažu prisimintų raktų vietą.

Kaip matote, mes vis dar tik pradedame. Mes ir toliau tobulinsime savo įgūdžius ir žinias, jos pravers gyvenime.

Beje, apie ateitį...

Tolimesnis vystymas

Robotas pagamintas, važiuoja, mirksi ir pypsi. Kas dabar? Įkvėpti to, ką pasiekėme, planuojame tai toliau tobulinti. Yra mintis padaryti nuotolinio valdymo pultelį – kaip Mėnulio roverį. Būtų įdomu, sėdint prie pultelio, valdyti roboto, kuris važiuoja visai kitoje vietoje, judėjimą. Bet tai bus kita istorija...

Ir pabaigoje, tiesą sakant, šio straipsnio herojai (vaizdo įrašas paspaudus):

Patirtis kuriant pirmąjį robotą „Arduino“ („robotas medžiotojas“)

Dėkojame už dėmesį!

Kodo nuoroda

Šaltinis: www.habr.com

Добавить комментарий