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

Bok

U ovom članku želim opisati proces sastavljanja svog prvog robota pomoću Arduina. Materijal će biti koristan drugim početnicima poput mene koji žele napraviti neku vrstu "samohodećih kolica". Članak je opis faza rada s mojim dodacima na raznim nijansama. Link na konačni kod (vjerojatno ne baš najidealniji) nalazi se na kraju članka.

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

Kad god je to bilo moguće uključila sam i svog sina (8 godina) u sudjelovanje. Što je točno radilo s njim, a što nije - ovome sam posvetio dio članka, možda će nekome biti od koristi.

Opći opis robota

Prvo nekoliko riječi o samom robotu (ideju). U početku nisam baš htio sastaviti nešto standardno. U isto vrijeme, skup komponenti bio je prilično standardan - šasija, motori, ultrazvučni senzor, linijski senzor, LED diode, visokotonac. U početku je iz ovog "seta za juhu" izumljen robot koji čuva svoj teritorij. Vozi prema prekršitelju koji je prešao kružnu liniju, a zatim se vraća u sredinu. Međutim, ova je verzija zahtijevala nacrtanu crtu, plus dodatnu matematiku kako bi cijelo vrijeme ostao u krugu.

Stoga sam nakon malo razmišljanja malo promijenio ideju i odlučio napraviti robota “lovca”. U startu se okreće oko svoje osi birajući obližnju metu (osobu). Ako je "plijen" otkriven, "lovac" uključuje treptava svjetla i sirenu i počinje voziti prema njemu. Kada se osoba udalji/pobjegne, robot odabire novu metu i slijedi je, i tako dalje. Takav robot ne treba ograničeni krug i može raditi na otvorenim prostorima.

Kao što vidite, ovo dosta nalikuje igri nadoknađivanja. Iako se robot na kraju nije pokazao dovoljno brzim, on iskreno komunicira s ljudima oko sebe. Posebno ga vole djeca (ponekad se ipak čini da će ga zgaziti, srce im zaigra...). Mislim da je ovo dobro rješenje za popularizaciju tehničkog dizajna.

Struktura robota

Dakle, odlučili smo se za ideju, idemo dalje raspored. Popis elemenata se formira od onoga što bi robot trebao moći učiniti. Ovdje je sve sasvim očito, pa pogledajmo odmah numeriranje:

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

"Mozak" robota je arduino uno ploča (1); bio u kompletu naručen iz Kine. Za naše potrebe to je sasvim dovoljno (koncentriramo se na broj upotrijebljenih pinova). Iz istog kompleta uzeli smo već gotovu šasiju (2), na koju su pričvršćena dva pogonska kotača (3) i jedan stražnji (slobodno rotirajući) (4). U kompletu je također uključen i gotov pretinac za baterije (5). Ispred robota nalazi se ultrazvučni senzor (HC-SR04) (6), straga je pokretač motora (L298N) (7), u sredini je LED bljeskalica (8), a malo do sa strane je visokotonac (9).

U fazi izgleda gledamo:

- tako da sve odgovara
- biti uravnotežen
- biti racionalno postavljen

Naše kineske kolege su to već dijelom učinile za nas. Dakle, teški odjeljak za baterije smješten je u sredini, a pogonski kotači su smješteni otprilike ispod njega. Sve ostale ploče su lagane i mogu se postaviti na periferiju.

nijanse:

  1. Šasija iz kompleta ima puno tvorničkih rupa, ali još uvijek nisam skužio koja je logika u njima. Motori i baterija su učvršćeni bez problema, a zatim je krenulo “prilagodba” s bušenjem novih rupa za učvršćivanje ove ili one ploče.
  2. Mjedeni regali i drugi pričvrsni elementi iz skladišnih prostora bili su od velike pomoći (ponekad smo ih morali izvaditi).
  3. Provukao sam sabirnice sa svake ploče kroz stezaljke (opet sam ih našao u skladištu). Vrlo povoljno, sve žice lijepo leže i ne vise.

Pojedinačni blokovi

Sad ću proći blokovi i reći ću vam osobno o svakom.

pretinac za baterije

Jasno je da robot mora imati dobar izvor energije. Opcije mogu varirati, ja sam odabrao opciju s 4 AA baterije. Ukupno daju približno 5 V, a taj se napon može izravno primijeniti na 5V pin arduino ploče (zaobilazeći stabilizator).

Naravno, bio sam malo oprezan, ali ovo rješenje je sasvim izvodljivo.

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

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

Motori i vozač

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

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

Za upravljanje motorima, kao što sam gore napisao, koristi se upravljački program L298N. Prema dokumentaciji, ima tri pina za svaki motor: jedan za promjenu brzine i par pinova za smjer vrtnje. Ovdje postoji jedna važna točka. Ispada da ako je napon napajanja 5 V, tada kontrola brzine jednostavno ne radi! Odnosno, ili se uopće ne okreće, ili se okreće maksimalno. Ovo je značajka zbog koje sam "ubio" nekoliko večeri. Na kraju sam negdje na jednom forumu pronašao spomen.

Općenito govoreći, trebala mi je mala brzina rotacije pri okretanju robota - kako bi imao vremena skenirati prostor. No, budući da od te ideje nije bilo ništa, morao sam to učiniti drugačije: mali okret - stani - okret - stani, itd. Opet, ne tako elegantno, ali izvodljivo.

Ovdje ću također dodati da nakon svake potjere robot odabire slučajni smjer za novo skretanje (u smjeru kazaljke na satu ili suprotno).

Ultrazvučni senzor

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

Još jedan hardverski dio kod kojeg smo morali tražiti kompromisno rješenje. Ultrazvučni senzor proizvodi nestabilne brojeve na stvarnim preprekama. Zapravo, ovo je bilo očekivano. Idealno radi negdje na natjecanjima gdje su glatke, ravne i okomite podloge, ali ako nekome "bljesne" noge ispred njega treba uvesti dodatnu obradu.

Kao takvu obradu postavljam srednji filter za tri točke. Na temelju testiranja na stvarnoj djeci (tijekom testiranja nijedno dijete nije ozlijeđeno!) pokazalo se sasvim dovoljnim za normalizaciju podataka. Fizika je ovdje jednostavna: imamo signale koji se reflektiraju od potrebno objekata (dajući potrebnu udaljenost) i reflektiran 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 filtar odsijeca.

Nakon svih obrada dobivamo udaljenost do najbližeg objekta. Ako je manji od određene granične vrijednosti, tada uključujemo alarm i vozimo ravno prema “uljezu”.

Žmigavac i sirena

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

Kontrolni program

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

Prvo što smo morali shvatiti je da je robot uređaj u stvarnom vremenu. Točnije, da zapamtim, jer i prije i sada još uvijek radim u elektronici. Dakle, odmah zaboravljamo na izazov odgoditi(), koji rado koriste u primjerima skica, a koji jednostavno “zamrzne” program na određeno vrijeme. Umjesto toga, kako savjetuju iskusni ljudi, uvodimo mjerače vremena za svaki blok. Potreban interval je prošao - radnja je izvršena (povećana svjetlina LED-a, uključen motor i tako dalje).

Tajmeri se mogu međusobno povezati. Na primjer, visokotonac radi sinkrono s bljeskalicom. Ovo malo pojednostavljuje program.

Naravno, sve dijelimo na zasebne funkcije (bljeskajuća svjetla, zvuk, okretanje, kretanje naprijed i tako dalje). Ako to ne učinite, onda nećete moći shvatiti što dolazi odakle i odakle.

Nijanse pedagogije

Sve gore opisano radio sam u slobodno vrijeme navečer. Na ležeran način proveo sam oko tri tjedna na robotu. Ovo je moglo završiti ovdje, ali obećao sam vam reći io radu s djetetom. Što se može učiniti u ovoj dobi?

Radite prema uputama

Prvo smo provjerili svaki detalj zasebno - LED diode, visokotonac, motore, senzore itd. Postoji veliki broj gotovih primjera - neki odmah u razvojnom okruženju, drugi se mogu naći na internetu. Ovo me svakako veseli. Uzimamo kod, spajamo dio, uvjeravamo se da radi, a zatim ga počinjemo mijenjati kako bi odgovarao našem zadatku. Dijete spaja prema shemi i pod nekim mojim nadzorom. Ovo je dobro. Također morate biti u mogućnosti raditi strogo prema uputama.

Redoslijed rada (“od posebnog prema općem”)

Ovo je teška točka. Morate naučiti da se veliki projekt (“napravi robota”) sastoji od malih zadataka (“spojite senzor”, “spojite motore”...), a oni pak od još manjih koraka (“pronađite program”, “spojite ploču.””, “preuzmite firmware”...). Obavljanjem koliko-toliko razumljivih zadataka niže razine “zatvaramo” zadatke srednje razine, a iz njih se formira ukupni rezultat. Objasnio sam, ali mislim da do realizacije neće doći skoro. Negdje, vjerojatno, u adolescenciji.

Instalacija

Bušenje, navoji, vijci, matice, lemljenje i miris kolofonije – gdje bismo bez toga? Dijete je dobilo osnovnu vještinu "Rad s lemilicom" - uspio je zalemiti nekoliko veza (malo sam pomogao, neću to sakriti). Ne zaboravite na sigurnosno objašnjenje.

Rad na računalu

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 što su pishalka, migalka, yarkost i druge transliteracije. Barem smo ovo razumjeli. Namjerno nisam koristio izvorne engleske riječi, jer još nismo dosegli ovu razinu.

Drugo: učinkovit rad. Učili smo kombinacije prečaca i kako brzo izvesti standardne operacije. Povremeno, dok smo pisali program, sin i ja smo se mijenjali, a ja sam govorio što treba učiniti (zamjena, pretraga itd.). Morao sam ponavljati iznova i iznova: "dvostruki klik odaberite", "držite Shift", "držite Ctrl" i tako dalje. Proces učenja ovdje nije brz, ali mislim da će se vještine postupno taložiti "u podkorteksu".

Skriveni tekstMožete reći da je gore navedeno gotovo očito. Ali, iskreno, jesenas sam imao priliku predavati informatiku u 9. razredu jedne škole. To je strašno. Učenici ne znaju osnovne stvari kao što su Ctrl + Z, Ctrl + C i Ctrl + V, odabir teksta držeći Shift ili dvostruki klik na riječ i tako dalje. I to unatoč tome što su bili na trećoj godini studija informatike... Zaključite sami.

Treće: tipkanje dodirom. Komentare u kodu povjerila sam djetetu da ih tipka (neka vježba). Odmah smo ispravno postavili ruke tako da su naši prsti postupno zapamtili položaj tipki.

Kao što vidite, tek smo na početku. Nastavit ćemo usavršavati svoje vještine i znanja, bit će nam korisna u životu.

Usput, o budućnosti...

Daljnji razvoj

Robot je napravljen, vozi, trepće i pišti. Što sada? Inspirirani onim što smo postigli, planiramo ga dalje usavršavati. Postoji ideja da se napravi daljinski upravljač - poput lunarnog rovera. Bilo bi zanimljivo sjedeći za daljinskim upravljačem upravljati kretanjem 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”)

Hvala vam!

Veza koda

Izvor: www.habr.com

Dodajte komentar