Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

Zdravo

U ovom članku želim opisati proces sastavljanja mog prvog robota koristeći Arduino. Materijal će biti koristan i drugim početnicima poput mene koji žele da naprave nekakvu „kolica koja se sama pokreću“. Članak je opis faza rada s mojim dodacima na raznim nijansama. Link do konačnog koda (najvjerovatnije ne najidealnijeg) dat je na kraju članka.

Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

Kad god je bilo moguće, uključio sam svog sina (8 godina) u učešće. Šta je tačno radilo s tim, a šta nije - posvetio sam dio članka tome, možda će nekome biti od koristi.

Opšti opis robota

Prvo, nekoliko riječi o samom robotu (ideja). Nisam baš želio da sklapam nešto standardno na početku. Istovremeno, set komponenti je bio sasvim standardan - šasija, motori, ultrazvučni senzor, linijski senzor, LED diode, visokotonac. Prvobitno je iz ovog "seta za supu" izmišljen robot koji čuva svoju teritoriju. Vozi prema počiniocu koji je prešao liniju kruga, a zatim se vraća u centar. Međutim, ova verzija zahtijevala je nacrtanu liniju, plus dodatnu matematiku da ostane u krugu cijelo vrijeme.

Stoga sam, nakon malo razmišljanja, donekle promijenio ideju i odlučio da napravim robota “lovca”. Na početku se okreće oko svoje ose, birajući obližnju metu (osobu). Ako se otkrije “plijen”, “lovac” uključuje trepćuće svjetla i sirenu i počinje voziti prema njemu. Kada se osoba udalji/pobjegne, robot bira novu metu i slijedi je, itd. Takvom robotu nije potreban ograničen krug i može raditi na otvorenim površinama.

Kao što vidite, ovo liči na igru ​​sustizanja. Iako se na kraju pokazalo da robot nije bio dovoljno brz, on iskreno komunicira sa ljudima oko sebe. Deca ga posebno vole (ponekad, međutim, izgleda da će ga zgaziti, srce im kuca...). Mislim da je ovo dobro rješenje za popularizaciju tehničkog dizajna.

Struktura robota

Dakle, odlučili smo se za ideju, idemo dalje raspored. Lista elemenata se formira od onoga što robot treba da bude u stanju da uradi. Ovdje je sve sasvim očigledno, pa pogledajmo odmah numeraciju:

Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

“Mozak” robota je arduino uno ploča (1); bio u kompletu narucenom iz Kine. Za naše potrebe to je sasvim dovoljno (fokusiramo se na broj korištenih pinova). Iz istog kompleta smo uzeli gotovu šasiju (2), na koju su pričvršćena dva pogonska točka (3) i jedan zadnji (slobodno rotirajući) (4). U kompletu se nalazi i gotov odeljak za baterije (5). Ispred robota se nalazi ultrazvučni senzor (HC-SR04) (6), pozadi motorni drajver (L298N) (7), u sredini je LED bljeskalica (8), a malo za sa strane se nalazi visokotonac (9).

U fazi izgleda posmatramo:

- da sve stane
- biti uravnotežen
- biti racionalno postavljen

Naše kineske kolege su to već djelimično uradile za nas. Dakle, pretinac za tešku bateriju je smješten u sredini, a pogonski kotači su smješteni približno ispod njega. Sve ostale ploče su lagane i mogu se postaviti na periferiju.

Nijanse:

  1. Šasija iz kompleta ima dosta fabričkih rupa, ali još uvek nisam shvatio koja je logika u njima. Motori i baterija bili su bez problema učvršćeni, a zatim je počelo "podešavanje" bušenjem novih rupa za pričvršćivanje ove ili one ploče.
  2. Mesingani regali i ostali zatvarači iz skladišta bili su od velike pomoći (ponekad smo morali da ih izvadimo).
  3. Provukao sam sabirnice sa svake ploče kroz stezaljke (opet sam ih našao u skladištu). Veoma zgodno, sve žice lepo leže i ne klate se.

Pojedinačni blokovi

Sada ću proći blokova i o svakom ću vam lično pričati.

odeljak za baterije

Jasno je da robot mora imati dobar izvor energije. Opcije mogu varirati, ja sam izabrao opciju sa 4 AA baterije. Ukupno daju otprilike 5 V, a ovaj napon se može direktno primijeniti na 5V pin arduino ploče (zaobilazeći stabilizator).

Naravno, imao sam malo opreza, ali ovo rješenje je prilično izvodljivo.

Budući da je struja potrebna svuda, radi praktičnosti napravio sam dva konektora u centru robota: jedan "distribuira" tlo (desno), a drugi - 5 V (lijevo).

Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

Motori i vozač

Prvo, o montaži motora. Nosač je fabrički napravljen, ali sa velikim tolerancijama. Drugim riječima, motori se mogu njihati nekoliko milimetara lijevo-desno. Za naš zadatak to nije kritično, ali na nekim mjestima može imati efekta (robot će se početi pomicati u stranu). Za svaki slučaj, postavio sam motore strogo paralelno i fiksirao ih ljepilom.

Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

Za upravljanje motorima, kao što sam gore napisao, koristi se drajver L298N. Prema dokumentaciji ima po tri klina za svaki motor: jedan za promjenu brzine i par pinova za smjer vrtnje. Ovdje postoji jedna važna tačka. Ispada da ako je napon napajanja 5 V, onda kontrola brzine jednostavno ne radi! Odnosno, ili se uopšte ne okreće, ili se okreće na maksimum. Ovo je karakteristika zbog koje sam "ubio" nekoliko večeri. Na kraju sam negdje na jednom od foruma našao pominjanje.

Uopšteno govoreći, bila mi je potrebna mala brzina rotacije prilikom okretanja robota - tako da ima vremena da skenira prostor. Ali, pošto od ove ideje ništa nije proizašlo, morao sam to učiniti drugačije: malo skretanje - stani - skretanje - stani, itd. Opet, ne tako elegantno, ali izvodljivo.

Ovdje ću također dodati da nakon svake potjere robot bira nasumični smjer za novo skretanje (u smjeru kazaljke na satu ili suprotno od kazaljke na satu).

Ultrazvučni senzor

Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

Još jedan komad hardvera gdje smo morali tražiti kompromisno rješenje. Ultrazvučni senzor proizvodi nestabilne brojeve na stvarnim preprekama. Zapravo, ovo se očekivalo. U idealnom slučaju, radi negdje na takmičenjima gdje su glatke, ravne i okomite površine, ali ako nečije noge “bljesnu” ispred njega, potrebno je uvesti dodatnu obradu.

Kao takvu obradu sam postavio srednji filter za tri tačke. Na osnovu testova na stvarnoj deci (nijedno dete nije povređeno tokom testiranja!), pokazalo se da je to sasvim dovoljno za normalizaciju podataka. Fizika je ovdje jednostavna: imamo signale koji se odbijaju neophodno objekata (dajući potrebnu udaljenost) i reflektovane od udaljenijih, na primjer, zidova. Potonje su nasumične emisije u mjerenjima oblika 45, 46, 230, 46, 46, 45, 45, 310, 46... To je ono što srednji filter odsiječe.

Nakon sve obrade dobijamo udaljenost do najbližeg objekta. Ako je manji od određene granične vrijednosti, onda uključujemo alarm i vozimo pravo prema „uljezu“.

Blic i sirena

Možda najjednostavniji elementi od svega navedenog. Mogu se vidjeti na fotografijama iznad. Ovdje se nema šta pisati o hardveru, pa idemo dalje kod.

Kontrolni program

Ne vidim smisao u detaljnom opisivanju koda, kome treba - link je na kraju članka, tamo je sve prilično čitljivo. Ali bilo bi lijepo objasniti opštu strukturu.

Prva stvar koju smo morali da shvatimo je da je robot uređaj u realnom vremenu. Tačnije, za pamćenje, jer i prije i sada još uvijek radim u elektronici. Dakle, odmah zaboravljamo na izazov kašnjenje (), koju vole da koriste u primerima skica i koja jednostavno „zamrzava“ program na određeno vreme. Umjesto toga, kako savjetuju iskusni ljudi, uvodimo tajmere za svaki blok. Prošao je potreban interval - radnja je izvršena (povećana svjetlina LED diode, upalio motor i tako dalje).

Tajmeri mogu biti međusobno povezani. Na primjer, visokotonac radi sinhrono sa bljeskačem. Ovo malo pojednostavljuje program.

Naravno, sve raščlanjamo na zasebne funkcije (bljeskanje svjetla, zvuk, okretanje, kretanje naprijed, itd.). Ako to ne učinite, onda nećete moći shvatiti šta dolazi odakle i odakle.

Nijanse pedagogije

Sve što je gore opisano radio sam u slobodno vrijeme uveče. Na ležeran način, proveo sam oko tri sedmice na robotu. Ovo je moglo završiti ovdje, ali sam obećao da ću vam reći io radu sa djetetom. Šta se može učiniti u ovom uzrastu?

Radite prema uputstvima

Prvo smo provjerili svaki detalj posebno - LED diode, visokotonce, motore, senzore itd. Postoji veliki broj gotovih primjera - neki u razvojnom okruženju, drugi se mogu naći na internetu. Ovo me svakako čini srećnim. Uzimamo kod, povezujemo dio, uvjeravamo se da radi, a zatim ga počinjemo mijenjati kako bi odgovarao našem zadatku. Dijete spaja spojeve prema dijagramu i pod mojim nadzorom. Ovo je dobro. Takođe morate biti u stanju da radite striktno prema uputstvima.

Redosled rada („od posebnog ka opštem“)

Ovo je teška tačka. Morate naučiti da se veliki projekat („napravi robota“) sastoji od malih zadataka („povezivanje senzora“, „povezivanje motora“...), a oni se, pak, sastoje od još manjih koraka („pronađi program,” “spoji ploču.” “, “preuzmi firmver”...). Obavljanjem manje-više razumljivih zadataka nižeg nivoa „zatvaramo“ zadatke srednjeg nivoa i iz njih se formira ukupni rezultat. Objasnio sam, ali mislim da do spoznaje neće doći uskoro. Negdje, vjerovatno, do adolescencije.

Instalacija

Bušenje, navoji, šrafovi, matice, lemljenje i miris kolofonija - gdje bismo bili bez toga? Dijete je dobilo osnovnu vještinu "Rad s lemilom" - uspio je zalemiti nekoliko priključaka (malo sam pomogao, neću to sakriti). Ne zaboravite na sigurnosno objašnjenje.

Rad na kompjuteru

Napisao sam program za robota, ali sam ipak uspio postići neke povoljne rezultate.

Prvo: engleski. Tek su to počeli u školi, pa smo se mučili da shvatimo šta su pishalka, migalka, jarkost i druge transliteracije. Bar smo ovo shvatili. Namjerno nisam koristio maternje engleske riječi, jer još nismo dostigli ovaj nivo.

Drugo: efikasan rad. Učili smo kombinacije prečica i kako brzo izvesti standardne operacije. Periodično, kada smo pisali program, sin i ja smo mijenjali mjesta, a ja sam govorio šta treba uraditi (zamjena, pretraga itd.). Morao sam ponavljati iznova i iznova: “dvaklik na odabir”, “drži Shift”, “drži Ctrl” i tako dalje. Proces učenja ovdje nije brz, ali mislim da će se vještine postepeno odlagati „u podkoru“.

Skriveni tekstMožete reći da je gore navedeno gotovo očigledno. Ali, iskreno, ove jeseni sam imao priliku da predajem informatiku u 9. razredu u jednoj školi. To je užasno. Učenici ne znaju osnovne stvari kao što su Ctrl + Z, Ctrl + C i Ctrl + V, biranje teksta držeći Shift ili dvostruki klik na riječ itd. I to uprkos činjenici da su bili na trećoj godini studija informatike... Izvucite sami zaključak.

Treće: kucanje dodirom. Komentare u kodu sam povjerio djetetu da ukuca (neka vježba). Odmah smo pravilno postavili ruke tako da su naši prsti postupno zapamtili lokaciju tipki.

Kao što vidite, tek smo na početku. Nastavićemo da usavršavamo svoje veštine i znanja, biće korisni u životu.

Inače, o budućnosti...

Dalji razvoj

Robot je napravljen, vozi, treperi i pišti. Šta sad? Inspirisani onim što smo postigli, planiramo da to dodatno usavršavamo. Postoji ideja da se napravi daljinski upravljač - poput lunarnog rovera. Bilo bi zanimljivo, sjedeći za daljinskim upravljačem, kontrolirati kretanje robota koji se vozi na sasvim drugom mjestu. Ali to će biti druga priča...

I na kraju, zapravo, junaci ovog članka (video klikom):

Iskustvo stvaranja prvog robota na Arduinu (robot “lovac”)

Spasibo za vnimanie!

Link do koda

izvor: www.habr.com

Dodajte komentar