Hej.
I den hÀr artikeln vill jag beskriva processen för att montera min första robot med Arduino. Materialet kommer att vara anvÀndbart för andra nybörjare som jag, som vill konstruera en slags "sjÀlvgÄende vagn". Artikeln Àr en beskrivning av arbetsstegen med mina tillÀgg om olika detaljer. LÀnken till den slutgiltiga koden (förmodligen inte den mest perfekta) ges i slutet av artikeln.

Jag involverade sÄ mycket som möjligt min son (8 Är). Vad som fungerade med honom och vad som inte gjorde det har jag avsatt en del av artikeln till, kanske nÄgon kan dra nytta av det.
AllmÀn beskrivning av roboten
Först nĂ„gra ord om sjĂ€lva roboten (idĂ©). Att bygga nĂ„got typiskt i början kĂ€ndes inte sĂ€rskilt intressant. Samtidigt var uppsĂ€ttningen av komponenter ganska standard â chassi, motorer, ultraljudssensor, linjesensor, LED-lampor, pipa. FrĂ„n detta "soppa-set" skapades en robot som bevakar sitt territorium. Den Ă„ker mot en inkrĂ€ktare som korsar linjen av cirkeln, och Ă„tervĂ€nder sedan till centrum. Men i denna variant behövdes en ritad linje, plus extra matematik för att stĂ€ndigt hĂ„lla sig inom cirkeln.
DÀrför, efter att ha tÀnkt en stund, Àndrade jag lite pÄ idén och bestÀmde mig för att bygga roboten "jÀgare". I början snurrar den kring sin egen axel för att vÀlja ett nÀrstÄende mÄl (en mÀnniska). Om "bytet" upptÀcks, tÀnder "jÀgaren" blinkande ljus och siren, och börjar Äka mot den. NÀr personen gÄr undan eller springer ivÀg, vÀljer roboten ett nytt mÄl och förföljer det, och sÄ vidare. SÄdan en robot behöver ingen avgrÀnsad cirkel och kan fungera pÄ öppet territorium.
Som ni ser pĂ„minner detta mycket om spelet "tag". Ăven om roboten i slutĂ€ndan inte blev tillrĂ€ckligt snabb, interagerar den Ă€rligt med de mĂ€nniskor som omger den. Detta tycker barn sĂ€rskilt om (ibland kĂ€nns det som om de nĂ€stan kommer att trampa pĂ„ den, och hjĂ€rtat slĂ„r lite snabbare ...). Jag tror att för att frĂ€mja teknisk byggande Ă€r detta en bra lösning.
Robotens struktur
SÄ, vi har kommit överens om idén, lÄt oss gÄ vidare till komponeringen. Lista över element bildas utifrÄn vad roboten ska kunna göra. HÀr Àr allt ganska uppenbart, sÄ lÄt oss titta pÄ numreringen:

Robotens "hjÀrna" Àr Arduino Uno-kortet (1); den ingick i ett kit bestÀllt frÄn Kina. För vÄra behov Àr den fullt tillrÀcklig (vi fokuserar pÄ antalet anvÀnda pinnar). FrÄn samma kit tog vi en fÀrdig chassi (2) som har tvÄ drivhjul (3) och ett bakhjul (fritt roterande) (4). I kitet fanns ocksÄ en fÀrdig batterihÄllare (5). Framme pÄ roboten finns en ultrasensordetektor (HC-SR04) (6), bak finns motorstyrningsenheten (L298N) (7), i mitten sitter en blinkande LED (8) och nÄgot vid sidan om finns en högtalare (9).
Under monteringssteget kollar vi:
â att allt fĂ„r plats
â att det Ă€r balanserat
â att det Ă€r rationellt placerat
Delvis har vÄra kinesiska kollegor redan gjort detta Ät oss. Den tunga batterihÄllaren sitter i mitten, och ungefÀr under den stÄr drivhjulen. Alla andra kort Àr lÀtta, de kan placeras runt om.
Nyanser:
- Chassit i kitet har mÄnga fabriksborningar, men jag har fortfarande inte förstÄtt logiken i dem. Motorerna och batteriblocket fÀstes utan problem, men sedan började "justeringen" med borrning av nya hÄl för att fÀsta det eller det kortet.
- De mÀssingsstolpar och övrigt fÀste jag hittade i gömmorna har verkligen varit till stor hjÀlp (ibland fick jag improvisera).
- Jag ledde varje leda frÄn korten genom klÀmmor (hittade ocksÄ dessa i gömmorna). Mycket praktiskt, alla kablar ligger fint och hÀnger inte.
Separata block
Nu gÄr jag igenom blocken och berÀttar mer om varje.
BatterihÄllare
Det Àr sjÀlvklart att roboten behöver en bra energikÀlla. Alternativen kan vara olika, jag valde en med 4 AA-batterier. Tillsammans ger de ungefÀr 5 V, och denna spÀnning kan direkt matas in pÄ 5V-pinnen pÄ Arduino-kortet (utan att gÄ igenom regleraren).
Visst fanns det en viss försiktighet, men detta Àr en fullt fungerande lösning.
Eftersom kraft behövs överallt har jag för enkelhetens skull gjort tvĂ„ anslutningar i robotens mitt: en som "delar" jord (till höger) och en annan â 5 V (till vĂ€nster).

Motorer och styrdon
Först om motorfÀstet. FÀstet Àr fabriksmonterat, men gjort med stora toleranser. Med andra ord kan motorerna "vicka" nÄgra millimeter Ät vÀnster och höger. För vÄr uppgift Àr detta inte kritiskt, men det kan pÄverka nÄgonstans (roboten kan börja driva Ät sidan). Jag har för sÀkerhets skull stÀllt motorerna helt parallellt och fixerat dem med lim.

För att styra motorerna, som jag nÀmnde tidigare, anvÀnds en L298N-drivrutin. Enligt dokumentationen har den tre pinnar för varje motor: en för att justera hastigheten och tvÄ pinnar för rotationsriktningen. HÀr finns en viktig punkt. Det visar sig att om strömspÀnningen Àr 5 V sÄ fungerar hastighetsregleringen helt enkelt inte! Antingen snurrar den inte alls, eller sÄ snurrar den pÄ max. En sÄdan egenskap som gjorde att jag "förlorade" ett par kvÀllar. Till slut hittade jag en hÀnvisning nÄgonstans pÄ ett forum.
Ăverhuvudtaget behövde jag lĂ„g rotationshastighet vid robotens svĂ€ngning - sĂ„ att den hade tid att skanna omgivningen. Men eftersom det inte gick att genomföra med den idĂ©n, var jag tvungen att göra pĂ„ ett annat sĂ€tt: liten svĂ€ngning - stopp - svĂ€ngning - stopp och sĂ„ vidare. Ă terigen, inte sĂ„ elegant men fullt fungerande.
Jag lÀgger till hÀr att efter varje förföljelse vÀljer roboten en slumpmÀssig riktning för den nya svÀngningen (medurs eller moturs).
Ultraljudssensor

Ănnu en pryl dĂ€r jag fick leta efter en kompromisslösning. Ultraljudssensorn ger instabila vĂ€rden pĂ„ verkliga hinder. Egentligen var det förvĂ€ntat. Den fungerar perfekt pĂ„ tĂ€vlingar dĂ€r det finns slĂ€ta, jĂ€mna och vinkelrĂ€ta ytor, men om nĂ„gon svĂ€nger framför den - dĂ„ mĂ„ste ytterligare behandling införas.
Som sÄdan behandling installerade jag för tre mÀtningar. Baserat pÄ tester pÄ riktiga barn (ingen barn skadades under testerna!) visade det sig vara helt tillrÀckligt för att normalisera data. Fysiken hÀr Àr enkel: vi har signaler som reflekteras frÄn önskade objekt (som ger det önskade avstÄndet) och de som reflekteras frÄn mer avlÀgsna, till exempel vÀggar. De senare bestÄr av slumpmÀssiga utslag i mÀtningarna av typen 45, 46, 230, 46, 46, 45, 45, 310, 46⊠Det Àr just dessa som medelvÀrdesfiltret sorterar bort.
Efter all behandling fĂ„r vi avstĂ„ndet till det nĂ€rmaste objektet. Om det Ă€r mindre Ă€n en viss tröskelvĂ€rde â dĂ„ slĂ„r vi pĂ„ larmet och Ă„ker direkt till "övertrĂ€daren".
Blinkers och siren
Kanske de enklaste elementen av allt som nÀmnts. De syns pÄ bilderna ovan. Det finns inget att sÀga om hÄrdvaran hÀr, sÄ lÄt oss nu gÄ vidare till koden.
Styrprogrammet
Jag ser ingen mening med att detaljerat skriva koden, de som behöver den â lĂ€nken finns i slutet av artikeln, dĂ€r Ă€r allt ganska lĂ€sbart. Men det skulle vara bra att förklara den övergripande strukturen.
Det första som jag var tvungen att tĂ€nka pĂ„: roboten Ă€r en realtidsenhet. MĂ„ste sĂ€ga att jag kom ihĂ„g detta, för jag har alltid sysslat med elektronik. SĂ„, glöm nu omedelbart bort anropet delay(), som mĂ„nga gillar att anvĂ€nda i exempel-skissar, och som helt enkelt "fryser" programmet under den angivna tidsperioden. IstĂ€llet, som erfarna personer rekommenderar, inför timer för varje block. Har den nödvĂ€ndiga tidsperioden gĂ„tt â utför Ă„tgĂ€rden (öka ljusstyrkan pĂ„ LED:en, slĂ„ pĂ„ motorn och sĂ„ vidare).
Timrarna kan vara kopplade till varandra. Till exempel fungerar summern synkront med blinkern. Detta förenklar programmet nÄgot.
Naturligtvis delar vi upp allt i separata funktioner (blinker, ljud, svÀng, köra framÄt och sÄ vidare). Om man inte gör det, blir det svÄrt att reda ut vad som Àr vad senare.
Pedagogiska nyanser
Allt det som har beskrivits ovan gjorde jag pÄ min fritid pÄ kvÀllarna. I lugnt tempo spenderade jag ungefÀr tre veckor pÄ roboten. Vid det hÀr laget skulle man kunna vara klar, men jag lovade ocksÄ att berÀtta om arbetet med barnet. Vad kan utföras i den Äldern?
Arbeta enligt instruktioner
Vi testade varje komponent separat â lysdioder, summer, motorer, sensorer osv. Det finns mĂ„nga fĂ€rdiga exempel â vissa direkt i utvecklingsmiljön, andra kan hittas pĂ„ internet. Detta Ă€r onekligen glĂ€djande. Vi tar koden, ansluter komponenten, ser till att den fungerar, dĂ€refter anpassar vi den till vĂ„r uppgift. Anslutningarna enligt schemat och under min kontroll gör barnet sjĂ€lv. Det Ă€r bra. Att kunna arbeta tydligt enligt instruktioner Ă€r ocksĂ„ en fĂ€rdighet som behövs.
Arbetsordning ("frÄn det enskilda till det allmÀnna")
Det hĂ€r Ă€r en komplex punkt. Man mĂ„ste vĂ€nja sig vid att ett stort projekt ("bygga en robot") bestĂ„r av smĂ„ uppgifter ("koppla sensorn", "koppla motorerna"âŠ), och de i sin tur bestĂ„r av Ă€nnu mindre steg ("hitta programmet", "koppla kretskortet", "ladda upp programvaran"âŠ). Genom att utföra nĂ„gorlunda förstĂ„eliga uppgifter pĂ„ lĂ€gre nivĂ„ "stĂ€nger" vi uppgifter pĂ„ mellan nivĂ„, och dĂ€rifrĂ„n vĂ€xer det fram ett gemensamt resultat. Jag har förklarat, men jag tror att insikten kommer att dröja ett tag. Troligen kommer den vid tonĂ„ren.
Montering
Borrning, gĂ€ngor, skruvar, muttrar, lödning och lukten av harts â hur skulle vi klara oss utan det. Barnet har fĂ„tt grundlĂ€ggande fĂ€rdigheten "Arbeta med lödkolv" â vi lyckades löda nĂ„gra kopplingar (jag hjĂ€lpte lite, ska jag erkĂ€nna). Glöm inte sĂ€kerhetsinstruktionerna.
Datorarbete
Programmet för roboten skrev jag, men jag lyckades faktiskt nÄ nÄgra sidoresultat.
Första: engelska. I skolan började de precis, sÄ vi "slitigt" gick igenom vad pishalka, migalka, yarkost och annan translitterering betyder. Vi förstod Ätminstone det. Jag valde medvetet att inte anvÀnda engelska ord som vi Ànnu inte har nÄtt upp till.
Andra: effektivt arbete. Vi lÀrde oss heta tangentkombinationer för att snabbt utföra typiska operationer. Periodiskt, nÀr vi skrev programmet, bytte vi platser, och jag sa vad som behövde göras (ersÀttning, sökning etc.). Jag var tvungen att upprepa om och om igen: "markera med dubbelklick", "hÄll ner Shift", "hÄll ner Ctrl" och sÄ vidare. InlÀrningsprocessen hÀr Àr inte snabb, men jag tror att fÀrdigheterna gradvis kommer att lagras "i bakhuvudet".
Dolt innehÄllDu kanske tycker att det ovanstÄende Àr nÀstan sjÀlvklart. Men Àrligt talat fick jag i höst leda datavetenskap i nionde klass i en skola. Det Àr fruktansvÀrt. Eleverna har ingen aning om sÄdana elementÀra saker som Ctrl + Z, Ctrl + C och Ctrl + V, att markera text med nedtryckt Shift eller dubbelklicka pÄ ett ord och sÄ vidare. Detta trots att de har haft tre Ärs datavetenskapsundervisning... Dra sjÀlva slutsatsen.
Tredje: blindskrift. Jag lÀt barnet skriva kommentarerna i koden (lÄt honom trÀna). Vi sÄg till att han började med rÀtt handstÀllning sÄ att fingrarna lÄngsamt kom ihÄg tangenternas placering.
Som ni ser har vi fortfarande bara just börjat. FÀrdigheter och kunskaper kommer vi att finslipa vidare, de kommer att komma till nytta i livet.
Förresten, angĂ„ende framtidenâŠ
Vidare utveckling
Robot var klar, Ă„ker runt, blinkar och piper. Vad kommer nu? Inspirerade av vad vi har uppnĂ„tt planerar vi att fortsĂ€tta utveckla den. Vi har en idĂ© om att göra fjĂ€rrkontroll â likt en mĂ„nlandare. Det skulle vara intressant att, frĂ„n en slags kontrollpanel, styra rörelsen av en robot som Ă„ker pĂ„ helt annan plats. Men det fĂ„r bli en annan historiaâŠ
Och i slutet, sjÀlva hjÀltarna i denna artikel (video vid klick):
Tack för uppmÀrksamheten!
â
KĂ€lla: habr.com
