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.

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:

«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:
- 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Ă«.
- Na ndihmuan shumë stolitë nga bronzi dhe ndihma tjetër nga rezervat (ndonjëherë ishte e nevojshme të përballeshim).
- 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).

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Ă«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

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 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):
Faleminderit për vëmendjen!
â
Burimi: habr.com
