Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Tere.

Selles artiklis tahan ma kirjeldada oma esimese roboti ehitamise protsessi Arduinol. Materjal on kasulik teistele algajatele nagu mina, kes soovivad valmistada mõne „iseliikuva käru“. Artikkel esitab etappidest, millega töötasin koos minu lisanditega erinevate nüansside kohta. Lõppkoodi link (tõenäoliselt mitte kõige ideaalne) on artikli lõpus.

Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Võimaluse korral kaasasin oma poega (8 aastat). Mis temaga õnnestus ja mis mitte — sellele olen pühendanud osa artiklist, ehkki kellegile võib see kasuks tulla.

Roboti üldine kirjeldus

Alguses paar sõna robotsest (idee). Midagi tüüpilist alguses ehitada ei olnud väga soov. Samas oli komponentide komplekt üsna tavaline — šassii, mootorid, ultraheliandur, jooneandur, LED-id, häälestitoru. Alguses sellest „suppide komplektist“ mõeldi robot, mis kaitseb oma territooriumi. Ta sõidab rikkumise juurde, kes on ületanud ringi joone, ja siis naaseb keskele. Kuid selles variandis oli vajalik joon, lisaks liiast matemaatikat, et pidevalt ringis püsida.

Pärast mõningast kaalumist muutsin ma natuke ideed ja otsustasin teha roboti "jahtija". Startides pöörab ta end ümber oma telje, valides läheduses oleva sihi (inimese). Kui "saak" on avastatud, lülitab "jahtija" sisse vilkuva valguse ja sireeni ning hakkab sellele suunduma. Kui inimene lahkub/peaaegu lahkub, valib robot uue sihi ja jätkab selle tagaajamist, ja nii edasi. Selline robot ei vaja piiratud ringi ja võib töötada avatud alal.

Nagu näha, meenutab see suuresti mängu "katsumine". Kuigi robot ei osutunud piisavalt kiireks, suhtleb ta ausalt teda ümbritsevate inimestega. Lastele meeldib see eriti (mõnikord tundub, et nad on kohe-kohe ta maha tallamas, süda hakkab kiiremini põksuma…). Arvan, et see on hea lahendus tehnilise konstruktsioonide populariseerimiseks.

Roboti struktuur

Nüüd, kui oleme ideega selgusele jõudnud, liigume komponeerimise. Elementide loetelu koosneb sellest, mida robot peaks oskama. Siin on kõik täiesti selge, seega vaatame kohe numbrilist järjestust:

Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Roboti 'aju' on Arduino Uno plaat (1), mis oli tellitud Hiinast komplektis. Selle jaoks on see meie vajadustele täiesti piisav (lähtume kasutatavate pinnide arvust). Samast komplektist võtsime ka valmis šassi (2), millele kinnitatakse kaks mandrilikku ratast (3) ja üks tagaratas (vabalt pööratav) (4). Komplektil oli ka valmis aku pesa (5). Roboti ees on ultrasonik sensor (HC-SR04) (6), taga - mootori draiver (L298N) (7), keskel - vilkuv LED (8) ja veidi eemal - helipirn (9).

Kokkuvõtete etapis vaatame:

— et kõik mahub sisse
— et see oleks tasakaalus
— et see oleks ratsionaalselt paigutatud

Osaliselt on selle juba meie hiinlased ära teinud. Nii on raske aku pesa paigutatud keskele ning ligikaudu selle all asuvad mandrilikud rattad. Kõik teised plaadid on kerged, neid saab paigutada perifeeriasse.

Nüansid:

  1. Komplektis olevas šassis on palju tehase auke, kuid mis nende loogika on — ma ei saanud aru. Mootorid ja akupank kinnituvad probleemideta, edasi algas 'sobitamine' uute aukude puurimisega, et kinnitada üks või teine plaat.
  2. Kuldsete toestuste ja muu kinnituse varud tõid palju kasu (mõnikord tuli leida loominguline lahendus).
  3. Iga plaadi juhtmed läbisid kinnitused (leiutatud varudest). See on väga mugav, kõik kaablid on ilusti korras ja ei ripu.

Erakordsed plokid

Nüüd tutvustan plokke ja räägin igaühe kohta eraldi.

Aku osa

On selge, et robot peab omama head toiteallikat. Võimalusi on erinevaid, mina valisin variandi nelja AA patareiga. Koos annavad need umbes 5 V, ja sellist pinget saab otse saata arduino plaadi 5V pinile (stabilisaatorit vahele jätmata).

Mõningane ettevaatlikkus oli mul muidugi, kuid see lahendus on täiesti funktsionaalne.

Kuna toide on vajalik igal pool, tegin roboti keskossa kaks pesat: üks jagab maapinda (paremal), ja teine — 5 V (vasakul).

Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Mootorid ja draiver

Esialgu mootori kinnitamisest. Kinnitamine on tehase valmistatud, kuid suure tolerantsiga. Teisisõnu, mootorid võivad mõne millimeetri ulatuses vasakule ja paremale „vibada“. Meie ülesande puhul see ei ole kriitiline, kuid kuskil võib see mõjutada (robot hakkab kõrvale juhtima). Igal juhul seadistasin mootoreid rangelt paralleelselt ja kinnitasin need liimiga.

Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Mootorite juhtimiseks, nagu ma üleval mainisin, kasutatakse L298N draiverit. Dokumentatsiooni kohaselt on igal mootoril kolm pesa: üks kiirusetäpsuse jaoks ja kaks pöörlemise suuna määramiseks. Siin on üks oluline moment. Selgub, et kui toitepinge on 5 V, siis kiirusereguleerimine lihtsalt ei tööta! See tähendab, et kas ei pöörle üldse või pöörleb maksimaalselt. Selline eripära, mille tõttu kaotasin paar õhtut. Lõpuks leidsin mainimise kuskil ühel foorumil.

Üldiselt vajasin madalat pöörlemiskiirus, et robotil oleks aega ruumi skannimiseks. Kuid kuna see plaan ei töötanud, pidin tegema teisiti: väike pööramine — peatamine — pööramine — peatamine jne. Again, see pole nii elegantne, kuid töötab.

Lisaks ütlen, et pärast igat jälitamist valib robot juhusliku uue pöörde suuna (kellaosutite suunaga või vastu seda).

Ultrahelisensor

Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Veel üks component, kus pidin leidma kompromisse. Ultrahelisensor annab tegelike takistuste ees ebastabiilseid numbreid. Tegelikult oli see oodatud. Ta töötab ideaalselt kuskil võistlustel, kus on siledad, tasased ja risti pinnad, aga kui keegi jalad tema ees "vilgub", tuleb teha täiendavat töötlemist.

Sellise töötlemise tagamiseks paigaldasin mediaanfiltri kolmest mõõtmest. Reaalsed laste testimistulemused (testide ajal ei kannatanud ükski laps!) näitasid, et see on andmete normaliseerimiseks täiesti piisav. Füüsika on siin lihtne: meil on signaalid, mis peegelduvad vajalikest objetidest (mis annavad vajaliku kauguse) ning kaugematelt, näiteks seintelt. Teised esindavad juhuslikke tõugetes mõõtmistes, nagu 45, 46, 230, 46, 46, 45, 45, 310, 46… Just nende keskmine filter elimineerib.

Pärast kogu töötlemist selgub meile kaugus lähimast objektist. Kui see on väiksem teatavast lävendist, siis aktiveerime häire ja suundume kohe „rikkuja” poole.

Vilkur ja sireen

Võib-olla kõige lihtsamad elemendid kõikidest loetletutest. Neid on näha ülalolevates fotodes. Raudvara osas ei ole siin kirjutamiseks midagi, seega liigume edasi koodi.

Juhtimisprogramm

Koodi üksikasjalikult kirjutada ei ole mõtet, kel on huvi — link artikli lõpus, seal on kõik piisavalt loetav. Kuid oleks hea seletada üldstruktuuri.

Esimene asi, mida pidi mõtlema: robot on reaalajas seade. Täpsemalt, peab meenutama, sest olen varem ja nüüdki sellega tegelemine. Seega unustame kohe ära kutsumise delay(), mida armastavad kasutada näidistesketšides ja mis lihtsalt „külmutab“ programmi määratud ajavahemikuks. Selle asemel, nagu soovitavad kogenud inimesed, kasutame iga ploki jaoks ajastajaid. Kui vajalik ajavahemik on möödunud — sooritasime tegevuse (suurendasime LEDi heledust, käivitasime mootori jne).

Ajastajad võivad olla omavahel seotud. Näiteks, helisignaal töötab sünkroonselt vilguga. See lihtsustab programmi natuke.

Loomulikult jagame kõik eraldi funktsioonidesse (vilkuv tuli, heli, pööramine, edasi liikumine jne). Kui nii ei tee, siis hiljem ei saa selgeks, mis on kust ja kuhu.

Pedagoogika nüansid

Kõike, mis eelnevalt kirjeldatud, tegin ma oma vabast ajast õhtuti. Rahulikult kulutasin robotile umbes kolm nädalat. Sellega võikski lõpetada, aga lubasin teile rääkida ka töö tegemisest lapsega. Mis on sellises vanuses teostatav?

Töö juhiste järgi

Iga detaili kontrollime esmalt eraldi — LED-id, kõlarid, mootorid, andurid jne. On palju valmis näiteid — mõned otse arenduskeskkonnas, teised leiavad internetist. See on kindlasti rõõmustav. Võtame koodi, ühendame seadme, veendume, et see töötab, ja siis hakkame seda oma ülesande jaoks kohandama. Ühendused vastavalt skeemile ja minu teatud kontrolli all teeb laps ise. See on hea. Tuleb osata ka täpselt järgida juhiseid.

Töötamise järjekord ("osaliselt üldiselt")

See on keeruline punkt. Tuleb harjuda, et suur projekt ("robotite tegemine") koosneb väikestest ülesannetest ("anduri ühendamine", "mootorite ühendamine" jne), ja need, omakorda, koosnevad veel väiksematest sammudest ("programmi leidmine", "plaadi ühendamine", "firmvare laadimine" jne). Täites enam-vähem arusaadavaid madalama taseme ülesandeid, täidame keskastme ülesandeid, ja nendest koguneb üldine tulemus. Olen selgitanud, aga arvan, et arusaamine ei tule veel pikka aega. Võib-olla teismelise ikka.

Paigaldamine

Kruvimine, keermestamine, kruvid, mutrid, jootmine ja vaikuse lõhn — kuidas ilma nendeta. Laps omandas aluse oskuse "Töö jootmisrauda" — suutsime kokku joota mõned ühendused (ma aitasin natuke, ei salasta). Ärge unustage rääkimist ohutusnõuetest.

Töötamine arvutiga

Roboti programmi kirjutasin mina, kuid mingit kõrvalist tulemuse siiski õnnestus saavutada.

Esimene: inglise keel. Koolis hakkasid seda alles nüüd õppima, seega harjutasime "raskustega", mis on pishalka, migalka, yarkost ja muu transkriptsioon. Õppisime vähemalt seda. Otsustasin teadlikult mitte kasutada koduseid ingliskeelseid sõnu, kuna selle tasemeni me veel ei jõudnud.

Teine: tõhus töö. Õppisime kuumi klahvikombinatsioone, kuidas kiiresti täita tüüpilisi operatsioone. Aeg-ajalt, kui kirjutasime programmi, vahetasime pojaga kohti, ja ma ütlesin, mida teha (asendamine, otsimine jne). Pidin ikka ja jälle kordama: "vali topeltklõpsuga", "hoia Shift all", "hoia Ctrl all" ja nii edasi. Õppimisprotsess siin ei ole kiire, kuid arvan, et oskused jäävad järk-järgult alateadvusse.

Peidetud tekstVõite öelda, et eelnevalt kirjeldatu on peaaegu ilmne. Kuid ausalt öeldes pidin sel sügisel õpetama informaatikat ühe kooli 9. klassides. See on õudne. Õpilased ei tea nii elementaarseid asju nagu Ctrl + Z, Ctrl + C ja Ctrl + V, teksti valimine klahvi Shift all hoides või sõnale topeltklõpsamisel ja muud. See on just nüüd, kui nad on kolmandal aastal informaatikat õppimas… Tehke järeldused ise.

Kolmandaks: pime trükkimine. Koodi kommentaarid lasin mul kirjutada ühe lapsel, et ta harjutaks. Kiiresti seadsime õigesti käed, et sõrmed järk-järgult klahvide asukohta meelde jätaks.

Nagu näete, on meil kõik endiselt alles alguses. Uurime ja süvendame oma oskusi ja teadmisi, see tuleb elus kasuks.

Muide, tulevikust…

edasiarendamine

Robot on valmis, liigub, vilgub ja piiksub. Mis nüüd saab? Saavutatud edusammudest inspireerituna plaanime seda edasi arendada. On plaanis teha kaugjuhtimine — nagu kuulus kuuauto. Oleks huvitav, istudes teatud puldil, kontrollida roboti liikumist, mis liigub täiesti teises kohas. Aga see on juba eraldi lugu…

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

Esimese roboti loomise kogemus Arduino'l (robot-'jahtija')

Aitäh tähelepanu eest!

Link koodile

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster