Arduino esimese roboti loomise kogemus (robot "jahimees")

Tere

Selles artiklis tahan kirjeldada oma esimese roboti kokkupanemise protsessi Arduino abil. Materjal on kasulik teistele minusugustele algajatele, kes soovivad teha mingit "isejooksvat käru". Artikkel on töö etappide kirjeldus koos minu täiendustega erinevate nüansside kohta. Lõpliku koodi (tõenäoliselt mitte kõige ideaalsema) link on toodud artikli lõpus.

Arduino esimese roboti loomise kogemus (robot "jahimees")

Võimalusel kaasasin osalemisse ka oma poja (8a). Mis sellega täpselt töötas ja mis mitte - pühendasin sellele osa artiklist, võib-olla on see kellelegi kasulik.

Roboti üldine kirjeldus

Esiteks paar sõna roboti enda kohta (idee). Ma ei tahtnud alguses midagi standardset kokku panna. Samas oli komponentide komplekt üsna standardne - šassii, mootorid, ultraheliandur, liiniandur, LEDid, tweeter. Algselt leiutati sellest “supikomplektist” robot, mis valvab oma territooriumi. Ta sõidab ringijoone ületanud kurjategija poole ja naaseb seejärel keskele. See versioon nõudis aga tõmmatud joont ja täiendavat matemaatikat, et kogu aeg ringis püsida.

Seetõttu muutsin pärast mõningast mõtlemist ideed mõnevõrra ja otsustasin teha "jahimehe" roboti. Alguses pöörab see ümber oma telje, valides läheduses oleva sihtmärgi (inimese). Kui “ohver” avastatakse, lülitab “jahimees” sisse vilkurid ja sireeni ning hakkab tema poole sõitma. Kui inimene eemaldub/jookseb, valib robot uue sihtmärgi ja ajab seda taga jne. Selline robot ei vaja piiratud ringi ja see võib töötada avatud aladel.

Nagu näete, sarnaneb see paljuski järelejõudmismänguga. Kuigi lõpuks robot piisavalt kiireks ei osutunud, suhtleb ta ausalt ümbritsevate inimestega. Eriti meeldib see lastele (vahel tundub aga, et hakkab tallata, süda jätab löögi vahele...). Arvan, et see on hea lahendus tehnilise disaini populariseerimiseks.

Roboti struktuur

Niisiis, oleme selle idee üle otsustanud, liigume edasi paigutus. Elementide loend moodustub sellest, mida robot peaks suutma. Siin on kõik üsna ilmne, nii et vaatame kohe nummerdamist:

Arduino esimese roboti loomise kogemus (robot "jahimees")

Roboti “ajudeks” on arduino uno plaat (1); oli Hiinast tellitud komplektis. Meie eesmärkidel on see täiesti piisav (keskendume kasutatud tihvtide arvule). Samast komplektist võtsime valmis šassii (2), millele on kinnitatud kaks veoratast (3) ja üks tagumine (vabalt pöörlev) (4). Komplekti kuulus ka valmis patareipesa (5). Roboti ees on ultraheliandur (HC-SR04) (6), taga on mootoridraiver (L298N) (7), keskel on LED-vilku (8) ja veidi küljel on tweeter (9).

Paigutusetapis vaatame:

- et kõik sobiks
- olla tasakaalus
- olema ratsionaalselt paigutatud

Meie Hiina kolleegid on seda meie eest osaliselt juba teinud. Niisiis on raske akuruum paigutatud keskele ja veorattad asuvad ligikaudu selle all. Kõik muud lauad on kerged ja neid saab paigutada perifeeriasse.

Nugejad:

  1. Komplekti kuuluval šassiil on palju tehaseauke, kuid ma pole siiani aru saanud, mis loogika neis on. Mootorid ja akuplokk said probleemideta kinnitatud, siis algas “reguleerimine” uute aukude puurimisega selle või teise plaadi kinnitamiseks.
  2. Suureks abiks olid messingist nagid ja muud panipaikade kinnitusvahendid (vahel tuli need välja hankida).
  3. Lasin iga plaadi siinid läbi klambrite (jälle leidsin need laost). Väga mugav, kõik juhtmed asetsevad kenasti ja ei rippu.

Üksikud plokid

Nüüd ma lähen läbi plokid ja ma räägin teile igaühest isiklikult.

patareipesa

Selge see, et robotil peab olema hea energiaallikas. Valikud võivad erineda, valisin 4 AA patareiga variandi. Kokku annavad need umbes 5 V ja seda pinget saab otse rakendada arduino plaadi 5 V kontaktile (stabilisaatorist mööda minnes).

Muidugi olin ettevaatlik, kuid see lahendus on üsna toimiv.

Kuna toidet on vaja kõikjal, tegin mugavuse huvides roboti keskele kaks pistikut: üks "jaotab" maad (paremal) ja teine ​​- 5 V (vasakul).

Arduino esimese roboti loomise kogemus (robot "jahimees")

Mootorid ja juht

Esiteks mootorite paigaldamise kohta. Kinnitus on valmistatud tehases, kuid valmistatud suurte tolerantidega. Ehk siis mootorid võivad paar millimeetrit vasakule-paremale kõigutada. Meie ülesande jaoks pole see kriitiline, kuid mõnes kohas võib see mõju avaldada (robot hakkab külili liikuma). Igaks juhuks seadsin mootorid rangelt paralleelseks ja kinnitasin liimiga.

Arduino esimese roboti loomise kogemus (robot "jahimees")

Mootorite juhtimiseks, nagu eespool kirjutasin, kasutatakse draiverit L298N. Dokumentatsiooni järgi on sellel iga mootori jaoks kolm tihvti: üks kiiruse muutmiseks ja paar tihvti pöörlemissuuna jaoks. Siin on üks oluline punkt. Selgub, et kui toitepinge on 5 V, siis kiiruse reguleerimine lihtsalt ei tööta! See tähendab, et see kas ei pöördu üldse või pöördub maksimaalselt. See on funktsioon, mis pani mind paar õhtut "tapma". Lõpuks leidsin kuskilt ühest foorumist mainimise.

Üldiselt vajasin robotit keerates väikest pöörlemiskiirust – et tal oleks aega ruumi skaneerida. Aga kuna sellest ideest ei tulnud midagi välja, siis tuli teha teisiti: väike pööre - peatus - pööre - peatus jne. Jällegi mitte nii elegantne, aga toimiv.

Lisan siia ka, et pärast iga jälitamist valib robot uueks pöördeks juhusliku suuna (päripäeva või vastupäeva).

Ultraheli andur

Arduino esimese roboti loomise kogemus (robot "jahimees")

Veel üks riistvara, kus pidime otsima kompromisslahendust. Ultraheliandur toodab tegelikel takistustel ebastabiilseid numbreid. Tegelikult oli see ootuspärane. Ideaalis töötab see kuskil võistlustel, kus on siledad, ühtlased ja risti asetsevad pinnad, aga kui kellegi jalad ees “vilguvad”, tuleb kasutusele võtta lisatöötlus.

Selliseks töötlemiseks seadsin mediaanfilter kolmel korral. Pärislastega tehtud testide põhjal (katsete käigus ükski laps viga ei saanud!) osutus andmete normaliseerimiseks täiesti piisavaks. Füüsika on siin lihtne: meilt peegelduvad signaalid vajalik objektid (andes vajaliku kauguse) ja peegelduvad kaugematelt, näiteks seintelt. Viimased on juhuslikud emissioonid mõõtmistes kujul 45, 46, 230, 46, 46, 45, 45, 310, 46... Just need lõikab mediaanfilter ära.

Pärast kogu töötlemist saame kauguse lähima objektini. Kui see on alla teatud läviväärtuse, siis lülitame alarmi sisse ja sõidame otse “sissetungija” poole.

Vilk ja sireen

Võib-olla kõige lihtsamad elemendid kõigist ülaltoodutest. Neid saab näha ülaltoodud fotodel. Riistvara kohta pole siin midagi kirjutada, nii et liigume nüüd edasi kood.

Juhtimisprogramm

Ma ei näe mõtet koodi üksikasjalikult kirjeldada, kes seda vajab - link on artikli lõpus, seal on kõik üsna loetav. Aga tore oleks selgitada üldist ülesehitust.

Esimese asjana pidime aru saama, et robot on reaalajas töötav seade. Täpsemalt, et mäletada, sest nii enne kui ka praegu töötan endiselt elektroonika alal. Seega unustame väljakutse kohe ära viivitus (), mida nad armastavad kasutada näidissketsides ja mis lihtsalt "külmutab" programmi teatud ajaks. Selle asemel, nagu kogenud inimesed soovitavad, tutvustame iga ploki jaoks taimereid. Nõutav intervall on möödas - toiming on tehtud (suurendati LED-i heledust, lülitati mootor sisse ja nii edasi).

Taimereid saab omavahel ühendada. Näiteks tweeter töötab vilkuriga sünkroonselt. See lihtsustab programmi veidi.

Loomulikult jagame kõik eraldi funktsioonideks (vilkuvad tuled, heli, pööramine, edasiliikumine jne). Kui te seda ei tee, ei saa te aru, mis kust ja kust tuleb.

Pedagoogika nüansid

Kõike eelpool kirjeldatut tegin õhtuti vabal ajal. Rahulikult veetsin robotil umbes kolm nädalat. See oleks võinud siinkohal lõppeda, aga lubasin teile rääkida ka lapsega töötamisest. Mida saab selles vanuses teha?

Töötage vastavalt juhistele

Kontrollisime esmalt iga detaili eraldi - LEDid, tweeter, mootorid, andurid jne. Valmisnäiteid on suur hulk - ühed otse arenduskeskkonnast, teised leiad internetist. See teeb mind kindlasti õnnelikuks. Võtame koodi, ühendame osa, veendume, et see töötab, seejärel hakkame seda oma ülesande järgi muutma. Laps teeb seoseid skeemi järgi ja mõnel minu järelvalve all. See on hea. Samuti peate suutma töötada rangelt vastavalt juhistele.

Töö järjekord (“ehk konkreetsest üldiseni”)

See on raske punkt. Peate õppima, et suur projekt ("teha robot") koosneb väikestest ülesannetest ("ühendage andur", "ühendage mootorid"...) ja need omakorda veelgi väiksematest sammudest ("leida a programm", "ühendage plaat." ", "laadige alla püsivara"...). Täides enam-vähem arusaadavaid madalama astme ülesandeid, “sulgeme” keskastme ülesanded ning nendest kujuneb koondtulemus. Seletasin, aga arvan, et taipamist ei tule niipea. Kuskil ilmselt noorukieas.

Paigaldamine

Puurimine, keermed, kruvid, mutrid, jootmine ja kampoli lõhn – kus me oleksime ilma selleta? Laps sai põhioskuse “Jootekolviga töötamine” - tal õnnestus mitu ühendust jootma (aitasin veidi, ma ei varja seda). Ärge unustage ohutusalast selgitust.

Töö arvutiga

Kirjutasin programmi robotile, kuid siiski õnnestus saavutada mõned soodsad tulemused.

Esiteks: inglise keel. Nad olid seda just koolis alustanud, nii et me nägime vaeva, et aru saada, mis on pishalka, migalka, yarkost ja muud transliteratsioonid. Vähemalt saime sellest aru. Ma ei kasutanud teadlikult ingliskeelseid sõnu, kuna me pole veel sellele tasemele jõudnud.

Teiseks: tõhus töö. Õpetasime kiirklahvikombinatsioone ja tavatoimingute kiiret sooritamist. Aeg-ajalt, kui programmi kirjutasime, vahetasime pojaga kohti ja ma ütlesin, mida on vaja teha (asendamine, otsing jne). Pidin ikka ja jälle kordama: "topeltklõps vali", "hoidke Shift", "hoidke Ctrl" ja nii edasi. Siinne õppeprotsess ei ole kiire, kuid arvan, et oskused ladestuvad järk-järgult "alakooresse".

Varjatud tekstVõib öelda, et ülaltoodu on peaaegu ilmne. Aga ausalt, sel sügisel avanes mul võimalus ühes koolis 9. klassis informaatikat õpetada. See on kohutav. Õpilased ei tea selliseid elementaarseid asju nagu Ctrl + Z, Ctrl + C ja Ctrl + V, teksti valimine Shift all hoides või sõnal topeltklõps jne. Seda hoolimata sellest, et nad õppisid arvutiteadust kolmandal kursusel... Tehke oma järeldused.

Kolmandaks: puutega tippimine. Usaldasin koodis olevad kommentaarid lapse trükkimiseks (las harjutab). Kohe asetasime käed õigesti nii, et näppudele meenus tasapisi klahvide asukoht.

Nagu näete, me alles alustame. Jätkame oma oskuste ja teadmiste lihvimist, need tulevad elus kasuks.

Muide, tuleviku kohta...

Edasine areng

Robot on tehtud, sõidab, vilgub ja piiksub. Mis nüüd? Saavutatust inspireerituna plaanime seda veelgi täiustada. On idee teha pult – nagu kuukulgur. Huvitav oleks puldi taga istudes juhtida roboti liikumist, mis sõidab hoopis teises kohas. Aga see oleks hoopis teine ​​lugu...

Ja lõpuks, tegelikult selle artikli kangelased (video klõpsates):

Arduino esimese roboti loomise kogemus (robot "jahimees")

Tänan teid tähelepanu eest!

Koodi link

Allikas: www.habr.com

Lisa kommentaar