Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

Përshëndetje.

Në këtë artikull do të përshkruaj procesin e ndërtimit të robotit tim të parë me Arduino. Materiali do të jetë i dobishëm për novikët e tjerë, siç jam unë, që dëshirojnë të krijojnë një "karrocë të vetë-kalueshme". Artikulli përbën një përshkrim të fazave të punës me shtesat e mia për nuancat e ndryshme. Linku për kodin përfundimtar (nuk është ndoshta më i mirë) është dhënë në fund të artikullit.

Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

Sa mĂ« shumĂ« qĂ« kam mundĂ«si, kam pĂ«rfshirĂ« djalin tim (8 vjeç). ÇfarĂ« arritĂ«m dhe çfarĂ« jo — pĂ«r kĂ«tĂ« kam rezervuar njĂ« pjesĂ« tĂ« artikullit, ndoshta do tĂ« jetĂ« e dobishme pĂ«r dikĂ«.

Përshkrimi i përgjithshëm i robotit

Fillimisht disa fjalĂ« pĂ«r vetĂ« robotin (ideja). Nuk doja tĂ« ndĂ«rtoja diçka tipike nga fillimi. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, grupi i komponentĂ«ve ishte mjaft standard — shasia, motorĂ«t, sensori ultratinguj, sensori i vijĂ«s, LED-at, dhe tinkeri. Fillimisht nga ky "kombinim supash" u krijua njĂ« robot qĂ« ruan territorin e tij. Ai shkon drejt shkelĂ«sit qĂ« kalon vijĂ«n e rrugĂ«s, dhe mĂ« pas kthehet nĂ« qendĂ«r. MegjithatĂ«, nĂ« kĂ«tĂ« variant nevojitej njĂ« vijĂ« e tĂ«rhequr, plus matematikĂ« e tepĂ«rt pĂ«r tĂ« qĂ«ndruar vazhdimisht nĂ« qark.

Prandaj, pas disa reflektimesh, kam bërë disa ndryshime në ide dhe kam vendosur të krijoj një robot "gjuetar". Në fillim ai rrotullohet rreth boshtit të tij, duke zgjedhur një objektiv afër (një person). Nëse "viktima" zbullohet, "gjuetari" aktivizon dritat dhe sirenën, dhe fillon të lëvizë drejt saj. Kur personi largohet, roboti zgjedh një objektiv të ri dhe e ndjek atë, dhe kështu me radhë. Një robot i tillë nuk ka nevojë për një rreth të kufizuar dhe mund të punojë në territor të hapur.

Siç e shihni, kjo shumë ngjan me një lojë "kapërcimish". Megjithatë, pavarësisht se roboti nuk doli mjaft aktiv, ai ndershëm bashkëpunon me njerëzit përreth tij. Këtë e pëlqejnë veçanërisht fëmijët (herë pas here, duket se ata do ta shkelin atë, zemra më rreh...) Mendoj se për të popullarizuar ndërtimin teknik, kjo është një zgjidhje e mirë.

Struktura e robotit

Pra, tani që e kemi përcaktuar idenë, le të kalojmë në kompozimin. Lista e elementeve formohet nga ajo që duhet të dijë roboti. Këtu gjithçka është e qartë, prandaj le të shohim menjëherë numërimin:

Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

«Truri» i robotit — karta arduino uno (1); ishte nĂ« kompletin porositur nga Kina. PĂ«r qĂ«llimet tona, Ă«shtĂ« mjaft e mjaftueshme (orientohemi nga numri i pinĂ«ve tĂ« pĂ«rdorur). Nga i njĂ«jti set morĂ«m njĂ« shasi tĂ« gatshme (2), mbi tĂ« cilĂ«n montohen dy rrotat drejtuese (3) dhe njĂ« pasme (qĂ« rrotullohet lirshĂ«m) (4). NĂ« set gjithashtu ishte njĂ« hapĂ«sirĂ« baterish tĂ« gatshme (5). NĂ« pjesĂ«n frontale tĂ« robotit qĂ«ndron njĂ« sensor ultratinguj (HC-SR04) (6), nĂ« pjesĂ«n e pasme — njĂ« drejtues motorĂ«sh (L298N) (7), nĂ« qendĂ«r — njĂ« LED qĂ« ndriçon (8), dhe pak tĂ« anash — njĂ« buzzer (9).

Në fazën e kompozimit shohim:

— qĂ« gjithçka tĂ« futet
— qĂ« tĂ« jetĂ« e balancuar
— qĂ« tĂ« jetĂ« vendosur nĂ« mĂ«nyrĂ« efikase

Pjesërisht, këtë e bënë për ne kolegët tanë kinezë. Kështu, hapësira e rëndë e baterisë është vendosur në qendër, dhe rreth saj qëndrojnë rrotat drejtuese. Të gjitha bordet e tjera janë të lehta, mund të vendosen në periferi.

Nuanct:

  1. NĂ« shasinĂ« e setit ka shumĂ« vrima fabrike, por nuk e kuptoj logjikĂ«n e tyre — akoma nuk kam arritur ta zbuloj. Motori dhe blloku i baterisĂ« janĂ« siguruar pa probleme, dhe mĂ« pas nisi «pĂ«rshtatja» me gĂ«rmime vrimash tĂ« reja pĂ«r tĂ« siguruar kĂ«tĂ« apo atĂ« bord.
  2. Pjeshë shumë ndihmuan stendat prej bronzi dhe pjesët e tjera të ngjitjes nga depo (ndonjëherë duhej të përballesha me situatat).
  3. Unazat nga çdo bord kalova nëpër kapëse (edhe ato gjeta në depo). Shumë praktike, të gjitha fijet qëndrojnë bukur dhe nuk lëvizin.

Njësi të veçanta

Tani do të flas për njësitë dhe do të tregoj personalisht për secilën.

Bateria

E kuptoj që robotit i nevojitet një burim i mirë energjie. Opsionet mund të jenë të ndryshme, unë zgjodha variantin me 4 bateri AA. Së bashku ato japin rreth 5 V, dhe kjo tension mund të hidhet direkt në pinin 5V të bordit Arduino (duke kaluar stabilizatorin).

Sigurisht, pata disa shqetësime, por ky zgjidhje është plotësisht funksionale.

Duke qenë se energjia nevojitet kudo, për lehtësi krijova dy porta në qendër të robotit: një 'ndajn' tokën (në të djathtë), dhe tjetra - 5 V (në të majtë).

Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

Motoret dhe drejtorët

Fillimi me montimin e motorëve. Montimi është fabrikor, por është bërë me toleranca të mëdha. Me fjalë të tjera, motorët mund të «lëkunden» disa milimetra majtas-djathtas. Për qëllimin tonë, kjo nuk është kritik, por diku tjetër mund të ketë ndikim (robotin do ta tërheqë nga rruga). Paraprakisht, kam vendosur motorët të jenë plotësisht paralelë dhe i kam ngjitur me ngjitës.

Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

Për të kontrolluar motorët, siç kam shkruar më sipër, përdoret drejtuesi L298N. Sipas dokumentacionit, ai ka tre pinë për çdo motor: një për rregullimin e shpejtësisë dhe një çift pinash për drejtimin e rrotullimit. Këtu është një moment shumë i rëndësishëm. Duke u zbuluar, nëse tensioni i furnizimit është 5 V, rregullimi i shpejtësisë thjesht nuk funksionon! Domethënë, ose nuk rrotullohet në tërësi, ose rrotullohet me maksimumin. Kjo është një veçori që më ka «shkatërruar» disa mbrëmje. Në fund, e gjeta një përmendje diku në një nga forume.

Së drejtë, shpejtësia e ulët e rrotullimit më nevojitej për të kthyer robotin - që ai të kishte kohë për të skanuar hapësirën. Por, pasi që me këtë ide nuk doli asgjë, duhej të veproja ndryshe: një kthesë e vogël - ndalesë - kthesë - ndalesë e kështu me radhë. Përsëri, jo aq elegant, por funksional.

Së fundmi, do të shtoj se pas çdo ndjekjeje, roboti zgjedh një drejtim të rastësishëm për kthesën e re (me ose kundër orës).

Sensor ultratinguj

Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

Një tjetër pajisje, ku duhej të kërkoja një zgjidhje kompromisi. Sensori ultratinguj jep numra të pasigurt para pengesave reale. Në fakt, kjo ishte e pritshme. Ai punon perfekt në ndonjë garë, ku ka sipërfaqe të lëmuara, të rrafshta dhe perpendicular, por po të ketë 'krisje' nga këmbët e dikujt para tij - këtu duhet futur trajtim shtesë.

Si një trajtim të tillë vendosa filtrin median në tri llogaritje. Duke u bazuar në testet me fëmijë të vërtetë (gjatë testeve asnjë fëmijë nuk u dëmtua!), rezultoi se ishte krejtësisht e mjaftueshme për normalizimin e të dhënave. Fizika këtu është e thjeshtë: kemi sinjale, të reflektuara nga objektet e nevojshme (duke dhënë distancën e kërkuar) dhe të reflektuara nga më të largët, për shembull, muret. Të dytat paraqesin shpërthime të rastit në matjet e llojit 45, 46, 230, 46, 46, 45, 45, 310, 46
 Pikërisht filtri median i tyre i ndalon ato.

Pas gjithĂ« pĂ«rpunimit, na rezulton distanca deri te objekti mĂ« i afĂ«rt. NĂ«se Ă«shtĂ« mĂ« e vogĂ«l se njĂ« vlerĂ« prag — atĂ«herĂ« aktivizojmĂ« alarmimin dhe shkojmĂ« direkt te "shkelĂ«si".

Drita dhe sirena

Më së paku, elementet më të thjeshtë nga e gjithë lista e përmendur. I shihni në fotografitë më lart. Nuk ka asgjë për të thënë për harduerin, prandaj tani kalojmë te kodi.

Programi i menaxhimit

Nuk ka asnjĂ« kuptim tĂ« shkruaj nĂ« detaje kodin, ata qĂ« kanĂ« nevojĂ« — lidhja nĂ« fund tĂ« artikullit, atje Ă«shtĂ« mjaft e lexueshme. MegjithatĂ«, do tĂ« ishte mirĂ« tĂ« shpjegohej struktura e pĂ«rgjithshme.

E para e parĂ« qĂ« duhej ti jepja mendjes: robotĂ«t janĂ« pajisje nĂ« kohĂ« reale. SaktĂ«sisht, duhet ta kujtoja kĂ«tĂ«, sepse gjithmonĂ« kam punuar me elektronikĂ«. Prandaj, menjĂ«herĂ« harrojmĂ« thirrjen delay(), e cila shpesh pĂ«rdoret nĂ« shembuj dhe skica, dhe qĂ« thjesht "ngrin" programin pĂ«r njĂ« periudhĂ« tĂ« caktuar tĂ« kohĂ«s. NĂ« vend tĂ« kĂ«saj, siç sugjerojnĂ« njerĂ«zit e pĂ«rvojshĂ«m, ne pĂ«rdorim timer mbi çdo bllok. Kaloi periudha e kĂ«rkuar — kryejmĂ« veprimin (rrisim ndriçimin e LED-it, ndezim motorin, etj.).

Timerët mund të kenë lidhje mes tyre. Për shembull, sirena punon paralelisht me dritën ndihmuese. Kjo e bën programin pak më të thjeshtë.

Natyrisht, gjithçka ndahen në funksione të veçanta (drita ndihmuese, tingulli, kthesa, lëvizja përpara, etj.). Nëse nuk e bëni kështu, më vonë do të jetë e vështirë të kuptoni se çfarë vjen nga ku dhe në cilin drejtim.

Nansat e pedagogjisë

Gjithçka qĂ« pĂ«rmenda mĂ« lart, e kam bĂ«rĂ« nĂ« kohĂ«n time tĂ« lirĂ« nĂ« mbrĂ«mje. NĂ« njĂ« ritĂ«m tĂ« ngadaltĂ«, kam kaluar rreth tri javĂ« nĂ« robot. Mund tĂ« ishte mirĂ« tĂ« pĂ«rfundonim kĂ«tu, por unĂ« gjithashtu iu premtoja tĂ« flisja pĂ«r punĂ«n me fĂ«mijĂ«n. ÇfarĂ« mund tĂ« realizohet nĂ« kĂ«tĂ« moshĂ«?

Puna sipas udhëzimeve

Secili detaj e kemi kontrolluar fillimisht veçmas — LED-et, tonet, motorĂ«t, sensorĂ«t etj. Ka njĂ« numĂ«r tĂ« madh shembujsh tĂ« gatshĂ«m — disa saktĂ«sisht nĂ« mjedisin e zhvillimit, tĂ« tjerĂ« mund tĂ« gjenden nĂ« internet. Kjo, padyshim, Ă«shtĂ« e kĂ«ndshme. Marrim kodin, lidhim detajet, e sigurojmĂ« qĂ« punon, pastaj fillojmĂ« ta modifikojmĂ« pĂ«r nevojat tona. Lidhjet sipas skemĂ«s dhe nĂ«n kontrollin tim, fĂ«mija i bĂ«n vetĂ«. Kjo Ă«shtĂ« e mirĂ«. TĂ« dijĂ« tĂ« punojĂ« saktĂ«sisht sipas udhĂ«zimeve Ă«shtĂ« gjithashtu e rĂ«ndĂ«sishme.

Renditja e punĂ«s (“nga e veçanta nĂ« tĂ« pĂ«rgjithshmen”)

Ky Ă«shtĂ« njĂ« pikĂ« e ndĂ«rlikuar. Duhet tĂ« mĂ«sojnĂ« se njĂ« projekt i madh (“tĂ« krijosh njĂ« robot”) pĂ«rbĂ«het nga detyra tĂ« vogla (“tĂ« lidhĂ«sh sensorin”, “tĂ« lidhĂ«sh motorĂ«t”
) dhe ato, nga ana e tyre, nga hapa edhe mĂ« tĂ« vegjĂ«l (“tĂ« gjejmĂ« programin”, “tĂ« lidhim pllakĂ«n”, “tĂ« ngarkojmĂ« firmware-in”
). Duke pĂ«rfunduar detyra mjaft tĂ« kuptueshme nĂ« nivelin mĂ« tĂ« ulĂ«t, ne “mbyllim” detyrat e nivelit tĂ« mesĂ«m, dhe nga ato formohet rezultati pĂ«rfundimtar. E kam shpjeguar, por mendoj se kuptimi do tĂ« vijĂ« akoma jo shpejt. Diku, ndoshta, deri nĂ« moshĂ«n adoleshente.

Montimi

BĂ«rja e vrimave, filetime, bulonat, kapakĂ«t, saldimi dhe erĂ«ra tĂ« tilla — ku do t’i gjejmĂ« kĂ«to. FĂ«mija fitoi aftĂ«sinĂ« bazĂ« "PunĂ« me saldatorin" — arriti tĂ« saldhĂ« disa lidhje (pata pak ndihmĂ«, nuk do ta fsheh). Mos harroni pĂ«r shpjegimin e teknikave tĂ« sigurta.

Puna në kompjuter

Programin për robotin e shkrova unë, por ndonjë rezultat anësor arritëm gjithsesi.

E para: anglishtja. Në shkollë sapo e filluam, prandaj e kuptuam me vështirësi se çfarë është pishalka, migalka, yarkost dhe transliterime të tjera. E kuptuam të paktën këtë. Qëllimisht nuk përdora fjalët e natyrshme angleze, pasi nuk ishim ende në atë nivel.

E dyta: puna efektive. Mësuam kombinime të ngrohta të tastierës, si të kryejmë shpejt operacione tipike. Periodikisht, ndërsa shkruanim programin, ne ndërronim vendet me djalin, dhe unë thosha se çfarë duhej bërë (zëvendësim, kërkim, etj.). Duhej të përsërisja vazhdimisht: "zgjidhni me një klik të dyfishuar", "mbani shtypur Shift", "mbani shtypur Ctrl" dhe kështu me radhë. Procesi i mësimit këtu nuk është i shpejtë, por mendoj se aftësitë do të mbeten gradualisht "në nënndërgjegje".

Teksti i fshehurMund ta thoni, se ajo qĂ« u pĂ«rmend mĂ« sipĂ«r Ă«shtĂ« pothuajse e qartĂ«. Por, sinqerisht, kĂ«tĂ« vjeshtĂ« mĂ« Ă«shtĂ« dashur tĂ« bĂ«j mĂ«sim pĂ«r informatikĂ« nĂ« klasat e 9-ta nĂ« njĂ« shkollĂ«. ËshtĂ« tmerr. NxĂ«nĂ«sit nuk dinĂ« gjĂ«ra kaq elementare si Ctrl + Z, Ctrl + C dhe Ctrl + V, pĂ«rzgjedhjen e tekstit me Shift tĂ« mbajtur ose me dy herĂ« klikim mbi fjalĂ« dhe tĂ« tjera. Kjo Ă«shtĂ« e çuditshme, duke pasur parasysh se ata janĂ« nĂ« vitin e tretĂ« tĂ« mĂ«simit tĂ« informatikĂ«s
 BĂ«ni vetĂ« pĂ«rfundimin.

E treta: shkrimi me shpejtësi. Komentet në kod i besova një fëmije (le të ushtrohet). Menjëherë vendosëm duar në pozita të duhura, në mënyrë që gishti gradualisht të mësojë vendosjen e çelësave.

Siç e shihni, ne ende sapo kemi filluar. Do të vijojmë të përmirësojmë aftësitë dhe njohuritë, do na duhen në jetë.

Për më tepër, për perspektivën...

Zhvillimi i mëtejshëm

RobotĂ«t janĂ« ndĂ«rtuar, lĂ«vizin, bllokojnĂ« dhe bĂ«jnĂ« zĂ«. Tani çfarĂ«? Duke u frymĂ«zuar nga arritjet, ne planifikojmĂ« ta zhvillojmĂ« mĂ« tej. Ka ide pĂ«r tĂ« bĂ«rĂ« njĂ« kontroll tĂ« distancĂ«s — si njĂ« njĂ«si hĂ«nor. Do tĂ« ishte interesante, duke u ulur pĂ«rpara njĂ« pulti, tĂ« kontrollosh lĂ«vizjen e robotit qĂ« lĂ«viz nĂ« njĂ« vend tĂ« ndryshĂ«m. Por kjo do tĂ« jetĂ« njĂ« histori tjetĂ«r...

Dhe në fund, në të vërtetë, janë heronjtë e këtij artikulli (video me klikim):

Përvoja e krijimit të robotit të parë me Arduino (robot "gjuetar")

Faleminderit për vëmendjen!

→ Linku pĂ«r kodin

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster