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

Përshëndetje

Në këtë artikull dua të përshkruaj procesin e montimit të robotit tim të parë duke përdorur Arduino. Materiali do të jetë i dobishëm për fillestarët e tjerë si unë, të cilët dëshirojnë të bëjnë një lloj "karroce vetë-drejtuese". Artikulli është një përshkrim i fazave të punës me shtesat e mia në nuanca të ndryshme. Një lidhje me kodin përfundimtar (me shumë mundësi jo më ideali) është dhënë në fund të artikullit.

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

Sa herë që ishte e mundur, përfshija djalin tim (8 vjeç) në pjesëmarrje. Çfarë funksionoi saktësisht me të dhe çfarë jo - Unë i kam kushtuar një pjesë të artikullit kësaj, mbase do të jetë e dobishme për dikë.

Përshkrimi i përgjithshëm i robotit

Së pari, disa fjalë për vetë robotin (идея). Nuk doja të mblidhja diçka standarde në fillim. Në të njëjtën kohë, grupi i përbërësve ishte mjaft standard - shasia, motorët, sensori tejzanor, sensori i linjës, LED, tweeter. Fillimisht, një robot u shpik nga ky "grup supe" që ruan territorin e tij. Ai drejton drejt shkelësit që ka kaluar vijën e rrethit dhe më pas kthehet në qendër. Megjithatë, ky version kërkonte një vijë të tërhequr, plus matematikë shtesë për të qëndruar në rreth gjatë gjithë kohës.

Prandaj, pas një mendimi, ndryshova disi idenë dhe vendosa të bëj një robot "gjuetar". Në fillim, ai rrotullohet rreth boshtit të tij, duke zgjedhur një objektiv (person) afër. Nëse zbulohet "preja", "gjuetari" ndez dritat ndezëse dhe sirenën dhe fillon të ecë drejt saj. Kur personi largohet/ik, roboti zgjedh një objektiv të ri dhe e ndjek atë, e kështu me radhë. Një robot i tillë nuk ka nevojë për një rreth të kufizuar dhe mund të funksionojë në zona të hapura.

Siç mund ta shihni, kjo është shumë si një lojë e kapjes. Edhe pse në fund roboti nuk doli të ishte mjaftueshëm i shpejtë, ai sinqerisht ndërvepron me njerëzit përreth tij. Fëmijëve u pëlqen veçanërisht (ndonjëherë, megjithatë, duket se ata janë gati ta shkelin, zemra e tyre kërcen një rrahje...). Mendoj se kjo është një zgjidhje e mirë për popullarizimin e dizajnit teknik.

Struktura e robotit

Pra, kemi vendosur për idenë, le të vazhdojmë faqosje. Lista e elementeve është formuar nga ajo që roboti duhet të jetë në gjendje të bëjë. Gjithçka këtu është mjaft e qartë, kështu që le të shohim menjëherë numërimin:

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

"Truri" i robotit është një tabelë arduino uno (1); ishte në një komplet të porositur nga Kina. Për qëllimet tona, është mjaft e mjaftueshme (ne fokusohemi në numrin e kunjave të përdorura). Nga i njëjti komplet morëm një shasi të gatshme (2), në të cilën janë bashkangjitur dy rrota lëvizëse (3) dhe një e pasme (rrotulluese lirisht) (4). Kompleti përfshinte gjithashtu një ndarje baterie të gatshme (5). Përpara robotit ka një sensor tejzanor (HC-SR04) (6), në pjesën e pasme ka një drejtues motori (L298N) (7), në qendër ka një ndezës LED (8), dhe pak për në anën ka një tweeter (9).

Në fazën e paraqitjes ne shikojmë:

- në mënyrë që gjithçka të përshtatet
- të jetë i ekuilibruar
- të vendoset në mënyrë racionale

Kolegët tanë kinezë tashmë e kanë bërë pjesërisht këtë për ne. Pra, ndarja e rëndë e baterisë vendoset në qendër, dhe rrotat lëvizëse janë afërsisht nën të. Të gjitha dërrasat e tjera janë të lehta dhe mund të vendosen në periferi.

Nuancat:

  1. Shasia nga kompleti ka shumë vrima fabrike, por unë ende nuk e kam kuptuar se cila është logjika në to. Motorët dhe paketa e baterive u siguruan pa probleme, më pas filloi "rregullimi" me shpimin e vrimave të reja për të siguruar këtë apo atë tabelë.
  2. Raftet prej bronzi dhe lidhësit e tjerë nga zonat e magazinimit ishin një ndihmë e madhe (ndonjëherë na duhej t'i nxirrnim jashtë).
  3. I kalova shiritat nga çdo dërrasë përmes kapëseve (përsëri, i gjeta në ruajtje). Shumë i përshtatshëm, të gjitha telat shtrihen bukur dhe nuk varen.

Blloqe individuale

Tani do të kaloj blloqe dhe unë do t'ju tregoj personalisht për secilën prej tyre.

ndarja e baterisë

Është e qartë se roboti duhet të ketë një burim të mirë energjie. Opsionet mund të ndryshojnë, unë zgjodha opsionin me 4 bateri AA. Në total, ato japin afërsisht 5 V, dhe ky tension mund të aplikohet drejtpërdrejt në pinin 5V të tabelës arduino (duke anashkaluar stabilizuesin).

Sigurisht, kisha njëfarë kujdesi, por kjo zgjidhje është mjaft e zbatueshme.

Meqenëse energjia nevojitet kudo, për lehtësi bëra dy lidhës në qendër të robotit: njëri "shpërndan" tokën (në të djathtë), dhe e dyta - 5 V (në të majtë).

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

Motorët dhe shoferi

Së pari, në lidhje me montimin e motorëve. Montimi eshte fabrik, por me toleranca te medha. Me fjalë të tjera, motorët mund të lëkunden disa milimetra majtas dhe djathtas. Për detyrën tonë kjo nuk është kritike, por në disa vende mund të ketë një efekt (roboti do të fillojë të lëvizë anash). Për çdo rast, i vendosa motorët në mënyrë rigoroze paralele dhe i rregullova me ngjitës.

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

Për të kontrolluar motorët, siç kam shkruar më lart, përdoret drejtuesi L298N. Sipas dokumentacionit, ai ka tre kunja për çdo motor: një për ndryshimin e shpejtësisë dhe një palë kunja për drejtimin e rrotullimit. Këtu ka një pikë të rëndësishme. Rezulton se nëse voltazhi i furnizimit është 5 V, atëherë kontrolli i shpejtësisë thjesht nuk funksionon! Kjo do të thotë, ose nuk kthehet fare, ose kthehet në maksimum. Ky është tipari që më bëri të “vrasja” disa mbrëmje. Në fund, gjeta një përmendje diku në një nga forumet.

Në përgjithësi, më duhej një shpejtësi e ulët rrotullimi kur ktheja robotin - në mënyrë që të kishte kohë për të skanuar hapësirën. Por, duke qenë se asgjë nuk doli nga kjo ide, më duhej ta bëja ndryshe: një kthesë e vogël - ndalesë - kthesë - ndalesë etj. Sërish jo aq elegante, por e zbatueshme.

Do të shtoj gjithashtu këtu se pas çdo ndjekjeje roboti zgjedh një drejtim të rastësishëm për një kthesë të re (në drejtim të akrepave të orës ose në të kundërt).

Sensori tejzanor

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

Një tjetër pjesë e harduerit ku duhej të kërkonim një zgjidhje kompromisi. Sensori tejzanor prodhon numra të paqëndrueshëm në pengesa reale. Në fakt, kjo pritej. Idealisht, funksionon diku në konkurse ku ka sipërfaqe të lëmuara, të njëtrajtshme dhe pingule, por nëse këmbët e dikujt "pulsojnë" para tij, duhet të futet përpunim shtesë.

Si përpunim të tillë kam vendosur filtri mesatar për tre pika. Bazuar në testet e fëmijëve të vërtetë (asnjë fëmijë nuk u dëmtua gjatë testeve!), doli të ishte mjaft i mjaftueshëm për të normalizuar të dhënat. Fizika këtu është e thjeshtë: ne kemi sinjale të reflektuara nga e nevojshme objektet (duke dhënë distancën e kërkuar) dhe të reflektuara nga ato më të largëta, për shembull, muret. Këto të fundit janë emetime të rastësishme në matjet e formës 45, 46, 230, 46, 46, 45, 45, 310, 46... Janë këto që i ndërpret filtri median.

Pas gjithë përpunimit, marrim distancën deri në objektin më të afërt. Nëse është më pak se një vlerë e caktuar pragu, atëherë ne ndezim alarmin dhe ecim drejt e drejt "ndërhyrësit".

Flasher dhe sirenë

Ndoshta elementët më të thjeshtë nga të gjitha sa më sipër. Ato mund të shihen në fotot e mësipërme. Nuk ka asgjë për të shkruar këtu për harduerin, kështu që tani le të kalojmë kodin.

Programi i kontrollit

Nuk e shoh kuptimin në përshkrimin e kodit në detaje, kujt i duhet - lidhja është në fund të artikullit, gjithçka është mjaft e lexueshme atje. Por do të ishte mirë të shpjegonim strukturën e përgjithshme.

Gjëja e parë që duhej të kuptonim ishte se një robot është një pajisje në kohë reale. Më saktë, të kujtoj, sepse edhe më parë edhe tani punoj ende në elektronikë. Pra, ne e harrojmë menjëherë sfidën vonesë (), të cilin ata duan ta përdorin në skica të shembujve dhe që thjesht "ngrijnë" programin për një periudhë të caktuar kohe. Në vend të kësaj, siç këshillojnë njerëzit me përvojë, ne prezantojmë kohëmatës për çdo bllok. Intervali i kërkuar ka kaluar - veprimi është kryer (rriti ndriçimin e LED, ndezi motorin, etj.).

Kohëmatësit mund të ndërlidhen. Për shembull, tweeter-i funksionon në mënyrë sinkronike me ndezësin. Kjo thjeshton pak programin.

Natyrisht, ne ndajmë gjithçka në funksione të veçanta (dritat ndezëse, zëri, kthimi, ecja përpara, etj.). Nëse nuk e bëni këtë, atëherë nuk do të jeni në gjendje të kuptoni se çfarë po vjen nga dhe ku.

Nuancat e pedagogjisë

Çdo gjë të përshkruar më sipër e bëja në kohën time të lirë në mbrëmje. Në një mënyrë të qetë, kalova rreth tre javë në robot. Kjo mund të kishte përfunduar këtu, por ju premtova gjithashtu se do t'ju tregoja për punën me një fëmijë. Çfarë mund të bëhet në këtë moshë?

Punoni sipas udhëzimeve

Ne fillimisht kontrolluam çdo detaj veç e veç - LED, cicërimë, motorë, sensorë, etj. Ka një numër të madh shembujsh të gatshëm - disa janë në mjedisin e zhvillimit, të tjerët mund të gjenden në internet. Kjo sigurisht që më bën të lumtur. Ne marrim kodin, lidhim pjesën, sigurohemi që funksionon, pastaj fillojmë ta ndryshojmë atë për t'iu përshtatur detyrës sonë. Fëmija i bën lidhjet sipas diagramit dhe nën mbikëqyrjen time. Kjo eshte mire. Ju gjithashtu duhet të jeni në gjendje të punoni në mënyrë rigoroze sipas udhëzimeve.

Rendi i punës ("nga e veçanta në të përgjithshme")

Kjo është një pikë e vështirë. Ju duhet të mësoni se një projekt i madh ("bëni një robot") përbëhet nga detyra të vogla ("lidhni një sensor", "lidhni motorët"...), dhe ato, nga ana tjetër, përbëhen nga hapa edhe më të vegjël ("gjeni një program, "lidh një bord." ", "shkarko firmware"...). Duke kryer detyra pak a shumë të kuptueshme të nivelit të ulët, ne “mbyllim” detyrat e nivelit të mesëm dhe prej tyre formohet rezultati i përgjithshëm. E shpjegova, por mendoj se realizimi nuk do të vijë shpejt. Diku, ndoshta, nga adoleshenca.

rritje

Shpimi, fijet, vida, arra, saldimi dhe aroma e kolofonit - ku do të ishim pa të? Fëmija mori aftësinë bazë "Të punosh me një hekur saldimi" - ai arriti të bashkojë disa lidhje (kam ndihmuar pak, nuk do ta fsheh). Mos harroni për shpjegimin e sigurisë.

Puna me kompjuter

Unë shkrova programin për robotin, por megjithatë arrita të arrij disa rezultate të favorshme.

Së pari: anglisht. Ata sapo e kishin filluar në shkollë, kështu që ne po përpiqeshim të kuptonim se çfarë ishin pishalka, migalka, yarkost dhe transliterime të tjera. Të paktën këtë e kuptuam. Unë qëllimisht nuk kam përdorur fjalë amtare angleze, pasi nuk kemi arritur ende këtë nivel.

Së dyti: punë efikase. Ne mësuam kombinimet e tasteve kryesore dhe mënyrën e kryerjes së shpejtë të operacioneve standarde. Periodikisht, kur po shkruanim programin, unë dhe djali im ndërronim vendet dhe thosha se çfarë duhej bërë (zëvendësim, kërkim, etj.). Më duhej të përsërisja vazhdimisht: "klikoni dy herë zgjidhni", "mbani Shift", "mbani Ctrl" dhe kështu me radhë. Procesi i të mësuarit këtu nuk është i shpejtë, por mendoj se aftësitë gradualisht do të depozitohen "në nënkorteks".

Teksti i fshehurMund të thuash se sa më sipër është pothuajse e qartë. Por, sinqerisht, këtë vjeshtë pata mundësinë të mësoja shkenca kompjuterike në klasën e 9-të në një shkollë. Kjo është e tmerrshme. Nxënësit nuk dinë gjëra të tilla themelore si Ctrl + Z, Ctrl + C dhe Ctrl + V, zgjedhja e tekstit duke mbajtur Shift ose duke klikuar dy herë mbi një fjalë, e kështu me radhë. Kjo përkundër faktit se ata ishin në vitin e tretë të studimeve për shkenca kompjuterike... Nxirrni përfundimin tuaj.

Së treti: shtypja me prekje. Komentet në kod ia besova fëmijës për të shtypur (le të praktikojë). Ne menjëherë i vendosëm duart në mënyrë korrekte në mënyrë që gishtat tanë gradualisht të kujtonin vendndodhjen e çelësave.

Siç mund ta shihni, ne jemi ende duke filluar. Ne do të vazhdojmë të përmirësojmë aftësitë dhe njohuritë tona; ato do të jenë të dobishme në jetë.

Meqë ra fjala, për të ardhmen...

Zhvillimi i mëtutjeshëm

Roboti është krijuar, drejton, pulson dhe bip. Po tani? Të frymëzuar nga ajo që kemi arritur, ne planifikojmë ta përsosim më tej. Ekziston një ide për të bërë një telekomandë - si një rover hënor. Do të ishte interesante, ulur në një telekomandë, të kontrollonim lëvizjen e një roboti që lëviz në një vend krejtësisht tjetër. Por kjo do të jetë një histori tjetër ...

Dhe në fund, në fakt, heronjtë e këtij artikulli (video duke klikuar):

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

Спасибо за внимание!

Lidhja me kodin

Burimi: www.habr.com

Shto një koment