Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

HallÄ

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 göra nÄgon slags "sjÀlvgÄende vagn". Artikeln Àr en beskrivning av stadierna för att arbeta med mina tillÀgg pÄ olika nyanser. En lÀnk till den slutliga koden (förmodligen inte den mest idealiska) ges i slutet av artikeln.

Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

NÀr det var möjligt involverade jag min son (8 Är) i att delta. Vad exakt fungerade med det och vad som inte gjorde det - jag har dedikerat en del av artikeln till detta, kanske det kommer att vara anvÀndbart för nÄgon.

AllmÀn beskrivning av roboten

Först nÄgra ord om sjÀlva roboten (idé). Jag ville inte riktigt sÀtta ihop nÄgot standard i början. Samtidigt var uppsÀttningen av komponenter ganska standard - chassi, motorer, ultraljudssensor, linjesensor, lysdioder, diskant. Ursprungligen uppfanns en robot frÄn detta "soppset" som vaktar dess territorium. Han kör mot gÀrningsmannen som har passerat cirkellinjen och ÄtervÀnder sedan till mitten. Den hÀr versionen krÀvde dock en dragen linje, plus extra matematik för att hÄlla sig i cirkeln hela tiden.

DÀrför, efter lite funderande, Àndrade jag idén nÄgot och bestÀmde mig för att göra en "jÀgare"-robot. I början vÀnder den sig runt sin axel och vÀljer ett nÀrliggande mÄl (person). Om "bytet" upptÀcks, sÀtter "jÀgaren" pÄ blinkljusen och sirenen och börjar köra mot det. NÀr personen flyttar ivÀg/springer ivÀg vÀljer roboten ett nytt mÄl och förföljer det osv. En sÄdan robot behöver inte en begrÀnsad cirkel, och den kan arbeta i öppna ytor.

Som du kan se pĂ„minner detta mycket om ett ikappspel. Även om roboten i slutĂ€ndan inte visade sig vara tillrĂ€ckligt snabb, interagerar den Ă€rligt med mĂ€nniskorna omkring den. Barn gillar det sĂ€rskilt (ibland verkar det dock som att de Ă€r pĂ„ vĂ€g att trampa pĂ„ det, deras hjĂ€rta hoppar över ett slag...). Jag tror att detta Ă€r en bra lösning för att popularisera teknisk design.

Robot struktur

SÄ vi har bestÀmt oss för idén, lÄt oss gÄ vidare till layout. Listan med element bildas utifrÄn vad roboten ska kunna göra. Allt hÀr Àr ganska uppenbart, sÄ lÄt oss omedelbart titta pÄ numreringen:

Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

Robotens "hjÀrnor" Àr en arduino uno-brÀda (1); var i ett set bestÀllt frÄn Kina. För vÄra ÀndamÄl rÀcker det (vi fokuserar pÄ antalet anvÀnda stift). FrÄn samma kit tog vi ett fÀrdigt chassi (2), pÄ vilket tvÄ drivhjul (3) och ett bak (fritt roterande) (4) Àr fÀsta. Satsen innehöll Àven ett fÀrdigt batterifack (5). Framför roboten finns en ultraljudssensor (HC-SR04) (6), pÄ baksidan finns en motordrivare (L298N) (7), i mitten finns en LED-blinkare (8), och lite till pÄ sidan finns en diskanthögtalare (9).

I layoutstadiet tittar vi pÄ:

– sĂ„ att allt passar
- att vara balanserad
- att vara rationellt placerad

VÄra kinesiska kollegor har redan delvis gjort detta Ät oss. SÄ det tunga batterifacket Àr placerat i mitten och drivhjulen Àr placerade ungefÀr under det. Alla andra brÀdor Àr lÀtta och kan placeras pÄ periferin.

nyanser:

  1. Chassit frĂ„n satsen har mĂ„nga fabrikshĂ„l, men jag har fortfarande inte kommit pĂ„ vad logiken Ă€r i dem. Motorerna och batteripaketet sĂ€krades utan problem, sedan började ”justeringen” med att man borrade nya hĂ„l för att sĂ€kra den eller den brĂ€dan.
  2. MÀssingsstÀllen och andra fÀsten frÄn förvaringsutrymmen var till stor hjÀlp (ibland var vi tvungna att fÄ ut dem).
  3. Jag förde samlingsskenorna frÄn varje brÀda genom klÀmmorna (igen, jag hittade dem i förvaring). Mycket bekvÀmt, alla kablar ligger fint och dinglar inte.

Enskilda block

Nu ska jag gÄ igenom block och jag ska berÀtta personligen om var och en.

Batterifack

Det Àr klart att roboten mÄste ha en bra energikÀlla. Alternativen kan variera, jag valde alternativet med 4 AA-batterier. Totalt ger de cirka 5 V, och denna spÀnning kan appliceras direkt pÄ 5V-stiftet pÄ arduinokortet (förbigÄende av stabilisatorn).

Naturligtvis var jag försiktig, men den hÀr lösningen Àr ganska anvÀndbar.

Eftersom ström behövs överallt, gjorde jag för bekvÀmlighets skull tvÄ kontakter i mitten av roboten: en "fördelar" marken (till höger) och den andra - 5 V (till vÀnster).

Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

Motorer och förare

Först om montering av motorerna. FÀstet Àr fabrikstillverkat, men gjort med stora toleranser. Motorerna kan med andra ord vinkla ett par millimeter Ät vÀnster och höger. För vÄr uppgift Àr detta inte kritiskt, men pÄ vissa stÀllen kan det ha effekt (roboten börjar röra sig Ät sidan). För sÀkerhets skull stÀllde jag in motorerna strikt parallellt och fixade dem med lim.

Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

För att styra motorerna, som jag skrev ovan, anvÀnds L298N-drivrutinen. Enligt dokumentationen har den tre stift för varje motor: en för att Àndra hastigheten och ett par stift för rotationsriktningen. Det finns en viktig punkt hÀr. Det visar sig att om matningsspÀnningen Àr 5 V, sÄ fungerar varvtalskontrollen helt enkelt inte! Det vill sÀga, antingen vÀnder den inte alls, eller sÄ vÀnder den till maximalt. Det hÀr Àr funktionen som fick mig att "döda" ett par kvÀllar. Till slut hittade jag ett omnÀmnande nÄgonstans pÄ ett av forumen.

Generellt sett behövde jag en lĂ„g rotationshastighet nĂ€r jag vĂ€nde roboten - sĂ„ att den hann med att skanna utrymmet. Men eftersom det inte blev nĂ„got av denna idĂ©, var jag tvungen att göra det annorlunda: en liten svĂ€ng - stopp - svĂ€ng - stopp, etc. Återigen, inte sĂ„ elegant, men fungerande.

Jag ska ocksÄ lÀgga till hÀr att efter varje jakt vÀljer roboten en slumpmÀssig riktning för en ny svÀng (medurs eller moturs).

ultraljudssensor

Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

Ytterligare en hÄrdvara dÀr vi var tvungna att leta efter en kompromisslösning. Ultraljudssensorn producerar instabila siffror pÄ verkliga hinder. Egentligen var detta vÀntat. Helst fungerar det nÄgonstans i tÀvlingar dÀr det finns slÀta, jÀmna och vinkelrÀta ytor, men om nÄgons ben "blinkar" framför den mÄste ytterligare bearbetning införas.

Som sÄdan bearbetning stÀller jag in medianfilter för tre punkter. Baserat pÄ tester pÄ riktiga barn (inga barn kom till skada under testerna!) visade det sig vara ganska tillrÀckligt för att normalisera data. Fysiken hÀr Àr enkel: vi har signaler som reflekteras frÄn nödvÀndig objekt (som ger erforderligt avstÄnd) och reflekteras frÄn mer avlÀgsna sÄdana, till exempel vÀggar. De senare Àr slumpmÀssiga utslÀpp i mÀtningar av formen 45, 46, 230, 46, 46, 45, 45, 310, 46... Det Àr dessa som medianfiltret skÀr av.

Efter all bearbetning fÄr vi avstÄndet till nÀrmaste objekt. Om det Àr lÀgre Àn ett visst tröskelvÀrde slÄr vi pÄ larmet och kör rakt mot "inkrÀktaren".

Blinkare och siren

Kanske de enklaste delarna av alla ovanstÄende. De kan ses pÄ bilderna ovan. Det finns inget att skriva om hÄrdvara hÀr, sÄ nu gÄr vi vidare till koda.

Styrprogram

Jag ser inte poÀngen med att beskriva koden i detalj, vem behöver den - lÀnken finns i slutet av artikeln, allt Àr ganska lÀsbart dÀr. Men det skulle vara trevligt att förklara den allmÀnna strukturen.

Det första vi var tvungna att förstÄ var att en robot Àr en realtidsenhet. Mer exakt, för att komma ihÄg, för bÄde förr och nu jobbar jag fortfarande med elektronik. SÄ vi glömmer omedelbart utmaningen dröjsmÄl(), som de Àlskar att anvÀnda i exempelskisser, och som helt enkelt "fryser" programmet under en viss tidsperiod. IstÀllet introducerar vi, som erfarna personer rekommenderar, timers för varje block. Det erforderliga intervallet har passerat - ÄtgÀrden har utförts (ökade ljusstyrkan pÄ lysdioden, slog pÄ motorn och sÄ vidare).

Timers kan kopplas samman. Till exempel fungerar diskanthögtalaren synkront med blinkaren. Detta förenklar programmet lite.

Naturligtvis delar vi upp allt i separata funktioner (blinkande ljus, ljud, svÀngning, framÄt, och sÄ vidare). Om du inte gör detta kommer du inte att kunna ta reda pÄ vad som kommer ifrÄn var och var.

Nyanser av pedagogik

Jag gjorde allt som beskrivs ovan pÄ min fritid pÄ kvÀllarna. PÄ ett lugnt sÀtt tillbringade jag ungefÀr tre veckor pÄ roboten. Det hÀr kunde ha slutat hÀr, men jag lovade ocksÄ att berÀtta om arbetet med ett barn. Vad kan man göra i den hÀr Äldern?

Arbeta enligt instruktionerna

Vi kontrollerade först varje detalj separat - lysdioder, diskant, motorer, sensorer etc. Det finns ett stort antal fÀrdiga exempel - nÄgra direkt i utvecklingsmiljön, andra finns pÄ Internet. Detta gör mig verkligen glad. Vi tar koden, ansluter delen, ser till att den fungerar, sedan börjar vi Àndra den för att passa vÄr uppgift. Barnet gör kopplingarna enligt diagrammet och under en del av min tillsyn. Det hÀr Àr bra. Du mÄste ocksÄ kunna arbeta strikt enligt instruktionerna.

Arbetsordning ("frÄn sÀrskilt till allmÀnt")

Detta Àr en svÄr punkt. Du mÄste lÀra dig att ett stort projekt ("gör en robot") bestÄr av smÄ uppgifter ("anslut en sensor", "anslut motorer"...), och de i sin tur bestÄr av Ànnu mindre steg ("hitta en program," "anslut ett kort." ", "ladda ner firmware"...). Genom att utföra mer eller mindre förstÄeliga uppgifter pÄ den lÀgre nivÄn "stÀnger" vi uppgifterna pÄ mellannivÄn, och frÄn dem bildas det övergripande resultatet. Jag förklarade, men jag tror att insikten inte kommer snart. NÄgonstans, förmodligen, i tonÄren.

Installation

Borrning, gÀngor, skruvar, muttrar, lödning och lukten av kolofonium - var skulle vi vara utan det? Barnet fick den grundlÀggande fÀrdigheten "Arbeta med en lödkolv" - han lyckades löda flera anslutningar (jag hjÀlpte till lite, jag kommer inte att dölja det). Glöm inte sÀkerhetsförklaringen.

Datorarbete

Jag skrev programmet för roboten, men jag lyckades ÀndÄ uppnÄ nÄgra gynnsamma resultat.

Först: engelska. De hade precis börjat i skolan, sÄ vi kÀmpade för att komma pÄ vad pishalka, migalka, yarkost och andra translitterationer var. Vi förstod Ätminstone detta. Jag anvÀnde medvetet inte infödda engelska ord, eftersom vi Ànnu inte har nÄtt denna nivÄ.

För det andra: effektivt arbete. Vi lÀrde ut snabbtangentskombinationer och hur man snabbt utför standardoperationer. Med jÀmna mellanrum, nÀr vi skrev programmet, bytte min son och jag plats och jag sa vad som behövde göras (byte, sökning, etc.). Jag var tvungen att upprepa om och om igen: "dubbelklicka pÄ vÀlj", "hÄll ned Shift", "hÄll ned Ctrl" och sÄ vidare. InlÀrningsprocessen hÀr Àr inte snabb, men jag tror att fÀrdigheterna gradvis kommer att deponeras "i subcortex."

Dold textMan kan sÀga att ovanstÄende Àr nÀstan sjÀlvklart. Men Àrligt talat, i höstas hade jag möjlighet att undervisa i datavetenskap i 9:an pÄ en skola. Det Àr hemskt. Elever kan inte sÄ grundlÀggande saker som Ctrl + Z, Ctrl + C och Ctrl + V, att markera text medan du hÄller ned Skift eller dubbelklickar pÄ ett ord, och sÄ vidare. Detta trots att de gick tredje Äret pÄ att lÀsa datavetenskap... Dra din egen slutsats.

För det tredje: tryck pÄ att skriva. Jag anförtrodde kommentarerna i koden till barnet att skriva (lÄt honom öva). Vi placerade omedelbart vÄra hÀnder korrekt sÄ att vÄra fingrar gradvis kom ihÄg var nycklarna var.

Som ni ser Àr vi fortfarande bara igÄng. Vi kommer att fortsÀtta att finslipa vÄra fÀrdigheter och kunskaper, de kommer att vara anvÀndbara i livet.

Förresten, om framtiden...

Ytterligare utveckling

Roboten tillverkas, kör, blinkar och piper. Och nu dÄ? Inspirerade av vad vi har uppnÄtt planerar vi att förfina det ytterligare. Det finns en idé att göra en fjÀrrkontroll - som en mÄnrover. Det skulle vara intressant att sitta vid en fjÀrrkontroll styra rörelsen hos en robot som kör pÄ en helt annan plats. Men det blir en annan historia...

Och i slutet, faktiskt, hjÀltarna i den hÀr artikeln (video genom att klicka):

Erfarenhet av att skapa den första roboten pÄ Arduino (robot "jÀgare")

Tack för din uppmÀrksamhet!

→ LĂ€nk till kod

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster