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

Përshëndetje.

Në këtë artikull, dëshiroj të përshkruaj procesin e ndërtimit të robotit tim të parë me Arduino. Materiali do të jetë i dobishëm për të tjerët si unë, që dëshirojnë të krijojnë ndonjë 'karrocë që lëviz vetë'. Artikulli përbën një përshkrim të fazave të punës me shtesat e mia mbi nuanca të ndryshme. Lidhja për kodin përfundimtar (një kod, ndoshta jo më i përsosuri) jepet në fund të artikullit.

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

Sa herë që kam mundur, kam përfshirë djalin tim (8 vjeç) në proces. Çfarë lloj suksesesh kemi pasur së bashku dhe çfarë jo — për këtë kam rezervuar një pjesë të artikullit, ndoshta do t'ju ndihmojë dikujt.

Përshkrimi i përgjithshëm i robotit

Fillimisht disa fjalë për robotin (ideja). Nuk dëshiroja të ndihmoja në ndërtimin e diçkaje tipike. Megjithatë, seti i komponentëve ishte mjaft standard — shasia, motorët, sensori ultrazë, sensori i vijës, LED-at, sirena. Fillimisht, nga ky 'set supë' u ideua një robot që mbron territorin e tij. Ai shkon drejt shkelësit që ka kaluar vijën e rrethit dhe më pas kthehet në qendër. Megjithatë, në këtë variant kërkohej një vijë e vizatuar, si dhe matematikë shtesë për të qëndruar gjithmonë brenda rrethit.

Prandaj, pas disa mendimeve, ndryshova pak idenë dhe vendosa të bëj robotin 'gjuetar'. Në fillim, ai rrotullohet rreth boshtit të tij, duke zgjedhur një objektiv afër (një njeri). Nëse 'viktima' identifikohet, 'gjuetari' activizon dritën e paralajmërimit dhe sirenën dhe fillon të lëviz drejt saj. Kur njeriu largohet, roboti përcakton një objektiv të ri dhe e ndjek, 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 për shumë ngjan si një lojë e 'ndjekjes'. Edhe pse në përfundim, roboti nuk doli aq i shpejtë, ai bashkëpunon sinqerisht me njerëzit përreth. Kjo pëlqehet veçanërisht nga fëmijët (ndonjëherë, megjithatë, duket se ata do ta shkelin atë, dhe zemra më rreh...). Mendoj se kjo është një zgjidhje e mirë për të popullarizuar ndërtimin teknik.

Struktura e robotit

Tani që u përcaktuam me idenë, kalojmë në kompozim. Lista e elementeve formohet nga ajo që duhet të dijë robi. Këtu gjithçka është mjaft e qartë, prandaj le të shikojmë direkt numërimin:

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

«Mendja» e robotit është karta arduino uno (1); ishte në setin e porositur nga Kina. Për qëllimet tona, ajo është mjaft e mjaftueshme (ne orientohemi nga numri i pins të përdorur). Nga ky set morëm një shasi të gatshme (2), në të cilën vendosen dy rrotat kryesore (3) dhe një e pasme (që rrotullohet lirisht) (4). Gjithashtu në set ishte një kuti baterish (5) e gatshme. Para robotit ndodhet një sensor ultrazvokësh (HC-SR04) (6), pas tij — një drejtues motorësh (L298N) (7), në qendër — një LED ndriçues (8), dhe pak më anash — një buzzer (9).

Në fazën e përbërjes ne shikojmë:

— që të gjithë të hyjnë
— që të jetë i balancuar
— që të jetë i vendosur në mënyrë racionale

Pjesërisht kjo është bërë tashmë nga kolegët tanë kinezë. Kështu, kutia e rëndë e baterive është vendosur në qendër, dhe afërsisht nën të ndodhen rrotat kryesore. Të gjitha kartat e tjera janë të lehta, ato mund të vendosen në periferinë.

Detaje:

  1. Në shasinë e setit ka shumë hapje fabrike, por si është logjika e tyre — nuk e kuptova asnjëherë. Motorët dhe blloku i baterive u vendosën pa probleme, më pas filloi ‘përshtatja’ me shpimin e hapjeve të reja për të vendosur këtë ose atë kartë.
  2. Na ndihmuan shumë stolitë nga bronzi dhe ndihma tjetër nga rezervat (ndonjëherë ishte e nevojshme të përballeshim).
  3. Kabllot nga secila kartë kalova përmes kapëseve (edhe këto i gjeta në rezervat). Mjaft e përshtatshme, të gjithë kabllot shtrihen bukur dhe nuk mbesin lajmë.

Blloqet e veçanta

Tani do të kaloj te blloqet dhe do të flasë veçmas për secilin.

Kuti baterish

Është e qartë se robotit i nevojitet një burim i mirë energjie. Mundësitë mund të jenë të ndryshme, unë zgjodha opsionin me 4 bateri AA. Në total ato japin rreth 5 V, dhe kjo tension mund të jepet drejtpërdrejt në pin 5V të kartës arduino (pa kaluar përmes stabilizuesit).

Sigurisht që kisha disa rezerva, por ky zgjidhje është plotësisht funksionale.

Duke qenë se energjia nevojitet kudo, për lehtësinë vendosa në qendër të robotit dy porta: një ‘ndan’ tokën (djathtas), dhe tjetra — 5 V (majtas).

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

Motorët dhe drejtori

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ëvizin" disa milimetra majtas-djathtas. Për detyrën tonë, kjo nuk është kritike, por ndodhi që diku mund të ndikojë (robotin mund ta devijojë në anë). Për çdo rast, i kam vendosur motorët strikt paralel dhe i kam bllokuar me ngjitës.

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

Për të kontrolluar motorët, siç e kam shkruar më sipër, përdoret драйверi L298N. Sipas dokumentacionit, ai ka tre pinë për çdo motor: një për të ndryshuar shpejtësinë dhe çift pinësh për drejtimin e rrotullimit. Këtu ka një moment të rëndësishëm. Duket se, nëse tensioni i furnizimit është 5 V, rregullimi i shpejtësisë thjesht nuk punon! Kështu që ose nuk rrotullon fare, ose rrotullon në maksimum. Kjo është një veçori, për shkak të së cilës kam "shkruar" disa mbrëmje. Në fund, gjeta një përmendje diku në një nga forume.

Në të vërtetë, një shpejtësi e ulët rrotullimi më duhej gjatë kthesës së robotit — që ai të kishte kohë për të skanuar hapësirën. Por, pasi që me një ide të tillë nuk doli asgjë, më duhej të veproja ndryshe: një kthesë e vogël — ndalesë — kthesë — ndalesë, etj. Përsëri, nuk është aq elegante, por është funksionale.

Për këtë, do të shtoj gjithashtu se pas çdo ndjekjeje, roboti zgjedh një drejtim të rastësishëm për kthesën e re (në ose kundër akrepës).

Sensor ultratingull

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

Një tjetër pajisje, ku duhej të kërkoja një zgjidhje kompromisi. Sensori ultratingull në pengesa reale jep numra të paqëndrueshëm. Në të vërtetë, kjo ishte e pritshme. Ai funksionon perfekt diku në garat, ku ka sipërfaqe të sheshta, të rrafshta dhe perpendicular, por nëse përpara tij "shkëlqejnë" këmbët e dikujt — këtu duhet të futet përpunimi shtesë.

Si një përpunim të tillë vendosa filtrin median për tre matje. Sipas testeve në fëmijë të vërtetë (gjatë testeve asnjë fëmijë nuk pësoi!), rezultoi se ishte mjaft i mjaftueshëm për normalizimin e të dhënave. Fizika këtu është e thjeshtë: kemi sinjale, të reflektuara nga objektet (që japin distancën e kërkuar) dhe të reflektuara nga më të largëtit, për shembull, muret. Të dyta paraqesin shkarkime të rastësishme në matje si 45, 46, 230, 46, 46, 45, 45, 310, 46… Pikërisht ato i filtrin median dhe i largon.

Pas procesit të gjithë, ne marrim distancën deri te objekti më i afërt. Nëse ajo është më e vogël se një vlerë prag, atëherë ne ndezim alarmimin dhe shkojmë drejtpërdrejt te "shkelësi".

Flasha dhe sirena

Mund të them se këto janë elementët më të thjeshtë nga të gjitha ato që kemi përmendur. Mund t'i shihni në fotografitë më sipër. Përsa i përket harduerit, nuk ka çfarë të flasim, kështu që tani kalojmë te kodeve.

Programi i menaxhimit

Nuk ka shumë kuptim të përshkruaj detajet e kodit, ata që kanë nevojë - linku është në fund të artikullit, atje është mjaft i lexueshëm. Por do ishte mirë të shpjegohej struktura e përgjithshme.

E para që duhej të reflektoja: roboti është një pajisje me kohë reale. Më saktë, të kujtohem, sepse dhe më parë, ashtu si tani, merrem me elektronikën. Kështu që menjëherë harrojmë thirrjen delay(), e cila përdoret shpesh në shembuj skica dhe që thjesht "ngrin" programin për një kohë të caktuar. Në vend të kësaj, siç rekomandojnë njerëzit me përvojë, vendosim timer për secilën bllok. Kaloi koha e nevojshme - vepruam (rritëm ndriçimin e LED-it, ndezim motorin dhe kështu me radhë).

Timerët mund të jenë të lidhur me njëri-tjetrin. Për shembull, sinjali funksionon në mënyrë sinkrone me flashin. Kjo e thjeshton pak programin.

Natyrisht, gjithçka e ndajmë në funksione të veçanta (flashi, zëri, kthesa, lëvizja përpara dhe kështu me radhë). Nëse nuk e bëjmë kështu, më vonë do të jetë e vështirë të kuptojmë se çka vjen nga ku dhe kah përshkon.

Nuanca të pedagogjisë

Të gjitha ato që u përmendën më sipër, i kam bërë në kohën time të lirë gjatë mbrëmjeve. Në një ritëm të ngadaltë, kam kaluar rreth tri javë me robotin. Mendoj se mund të përfundojë këtu, por gjithashtu premtoj t'ju tregoj për punën me fëmijën. Çfarë është e realizueshme në atë moshë?

Puna sipas udhëzimeve

Çdo detaj ne e kontrollonim fillimisht veç e veç - LED-at, flakën, motorët, sensorët etj. Ka një numër të madh shembujsh të gatshme - disa drejtpërdrejt në mjedisin e zhvillimit, të tjerë mund të gjenden në internet. Kjo, pa dyshim, është e këndshme. Marrim kodin, lidhim detajet, sigurohemi që punon, dhe pastaj fillojmë ta ndryshojmë sipas detyrës sonë. Lidhjet sipas skemës dhe nën disa kontrollin tim, fëmija i bën vetë. Kjo është mirë. Të punosh në mënyrë të saktë sipas udhëzimeve gjithashtu duhet të dihet.

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

Ky është një pikë e vështirë. Duhet të mësojmë që një projekt i madh ("të bëjmë një robot") përbëhet nga detyra të vogla ("të lidhim sensorët", "të lidhim motorët"...), ndërsa ato vetë përbëhen nga hapa edhe më të vegjël ("të gjejmë programin", "të lidhim bordin", "të ngarkojmë firmware-in"...). Duke përfunduar detyra më të kuptueshme të nivelit të ulët, ne "mbyllim" detyrat e nivelit të mesëm, dhe prej tyre marrim rezultatin e përgjithshëm. E kam shpjeguar, por mendoj se kuptimi do vijë pas një kohe, ndoshta rreth moshës adoleshente.

Montazhi

Bëri, fileta, vidha, kaçet, saldimi dhe aromën e kolofonisë — si mund të mungojnë këto. Fëmija fitoi aftësinë bazike "Puna me saldatorin" — arriti të saldimin disa bashkimeve (pak e ndihmova, nuk do ta fsheh). Mos harroni për shpjegimin e teknikave të sigurisë.

Puna në komputer

Unë shkrova programin për robotin, por ndonjë rezultat i rastit arriti të arrihet.

Së pari: anglishtja. Në shkollë sapo e filluan, prandaj ne "me vështirësi" shpjeguam se çfarë është pishalka, migalka, yarkost dhe termat e tjerë të transliteruar. Të paktën kuptuam këtë. E bëra qëllimisht të mos përdor fjalët në anglisht, pasi deri në atë nivel nuk ishim arritur ende.

E dyta: puna efektive. Mësuam kombinimet e ngrohta të çelësave, si të kryenim operacione tipike shpejt. Periodikisht, kur shkruanim programin, ne ndërronim vendet me djalin tim dhe unë i thosha se çfarë duhet bërë (zëvendësimi, kërkimi etj.). Duhej ta përsërisja përsëri e përsëri: "zgjidh me dy klikime", "mbaj Shift-in", "mbaj Ctrl-in" dhe kështu me radhë. Procesi i mësimit këtu nuk është i shpejtë, por mendoj se aftësitë do të regjistrohen ngadalë "në nënndërgjegje".

Tekst i fshehurMund të thoni se ajo që është përshkruar më sipër është thuajse e qartë. Por, sinqerisht, këtë vjeshtë më ra të zhvilloj informatikën në klasat e 9-ta në një shkollë. Kjo është e tmerrshme. Nxënësit nuk dinë gjëra elementare si Ctrl + Z, Ctrl + C dhe Ctrl + V, të shënojnë tekstin me Shift të mbajtur ose me dy klikime mbi fjalën dhe të tjera. Kjo, ndërsa ata ishin në vitin e tretë të studimeve të informatikës... Bëni vetë përfundimet.

E treta: shtypja pa shikim. Komentarët në kodin ia besova fëmijës (le të stërvitet). Menjëherë vendosëm duar siç duhet, në mënyrë që gishti gradualisht të mbante mend vendosjen e çelësave.

Siç e shihni, ne ende sapo e fillojmë. Aftësitë dhe njohuritë do të thellohen edhe më tej, do të na nevojiten në jetë.

Një informacion në lidhje me perspektivën...

Zhvillimi në vazhdim

Roboti është ndërtuar, lëviz, ndriçon dhe bën zë. Çfarë do të ndodhë tani? Të frymëzuar nga ajo që arritëm, planifikojmë ta përmirësojmë më tej. Kemi ide për të bërë një kontroll në distancë — si një rover. Do të ishte interesante, duke qenë pas një pult, të kontrollosh lëvizjen e robotit, i cili lëviz në një vend të tjetër. Por kjo do të jetë një histori e veçantë...

Dhe në fund, këta janë heronjtë e këtij artikulli (video e klikueshme):

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

Faleminderit për vëmendjen!

Lidhja me kodin

Burimi: habr.com

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster