- Potrebni materiali:
- Koncepti sledilca vrstic
- Shema sledilnega robota Raspberry Pi Line in razlaga:
- Programiranje Raspberry PI:
- Raspberry Pi Line Follower v akciji:
Kot vsi vemo, je Raspberry Pi čudovita razvijalska platforma, ki temelji na mikroprocesorju ARM. Z veliko računsko močjo in razvojnimi možnostmi lahko naredi čudeže v rokah ljubiteljev elektronike ali študentov. Če želite izvedeti več o Raspberry Pi in kako deluje, poskusimo zgraditi Robot sledilca linij z uporabo Raspberry Pi.
Če vas robotika zanima, morate dobro poznati ime " Robot sledilca linij ". Ta robot lahko sledi liniji, samo z uporabo para senzorja in motorjev. Morda se ne bi zdelo učinkovito, če bi za izdelavo preprostega robota uporabili zmogljiv mikroprocesor, kot je Raspberry Pi. Toda ta robot vam daje prostor za neskončen razvoj in roboti, kot je Kiva (Amazonov skladiščni robot), so primer za to. Preverite lahko tudi druge naše robotske sledilce:
- Robot za sledenje linij z mikrokrmilnikom 8051
- Robot sledilca linije, ki uporablja Arduino
Potrebni materiali:
- Raspberry Pi 3 (vsak model bi moral delovati)
- IR senzor (2 št.)
- Motor z enosmernim gonilom (2 št.)
- L293D Motor voznik
- Ležalniki (lahko tudi sami izdelate kartone)
- Napajalnik (kateri koli razpoložljivi vir energije)
Koncepti sledilca vrstic
Line Follower Robot lahko sledi liniji s pomočjo IR senzorja. Ta senzor ima IR oddajnik in IR sprejemnik. IR oddajnik (IR LED) oddaja svetlobo in sprejemnik (fotodioda) čaka, da se oddana svetloba vrne nazaj. IR svetloba se bo vrnila nazaj le, če jo odbija površina. Medtem pa vse površine ne odbijajo IR svetlobe, le bela barvna površina jih lahko popolnoma odbije, črna barvna površina pa jih bo popolnoma opazovala, kot prikazuje spodnja slika. Več o modulu IR senzorja preberite tukaj.
Zdaj bomo z dvema IR senzorjema preverili, ali je robot na progi, in dva motorja za popravilo robota, če se premakne iz tira. Ti motorji zahtevajo visok tok in bi morali biti dvosmerni; zato uporabljamo modul pogonskega motorja, kot je L293D. Računalniško napravo, kot je Raspberry Pi, bomo potrebovali tudi za poučevanje motorjev na podlagi vrednosti IR senzorja. Poenostavljen blokovni diagram istega je prikazan spodaj.
Ta dva IR senzorja bosta nameščena na obeh straneh črte. Če noben senzor ne zazna črne črte, PI naroči motorjem, naj se premaknejo naprej, kot je prikazano spodaj
Če se levi senzor prikaže na črni črti, PI naroči robotu, da zavije levo tako, da sam zavrti desno kolo.
Če desni senzor prihaja na črno črto, PI naroči robotu, da zavije desno, tako da sam zavrti levo kolo.
Če sta oba senzorja na črni črti, se robot ustavi.
Tako bo Robot lahko sledil črti, ne da bi prišel izven proge. Zdaj pa poglejmo, kako izgledata vezje in koda.
Shema sledilnega robota Raspberry Pi Line in razlaga:
Popoln diagram vezja za sledilnega robota Raspberry Pi je prikazan spodaj
Kot lahko vidite, vezje vključuje dva IR senzorja in par motorjev, priključenih na Raspberry pi. Celotno vezje napaja Mobile Power Bank (v zgornjem vezju je predstavljena baterija AAA).
Ker podrobnosti o zatičih na Raspberry Pi niso omenjene, jih moramo preveriti s spodnjo sliko
Kot je prikazano na sliki, je zgornji levi kotni zatič PI zatič + 5V, ta + 5V zatič uporabljamo za napajanje IR senzorjev, kot je prikazano na vezju (rdeča žična). Nato ozemljitvene zatiče s črno žico priključimo na maso IR senzorja in modula Motor Driver. Rumena žica se uporablja za povezovanje izhodne pin senzorja 1 in 2 na GPIO zatiči in 3 oz.
Za pogon motorjev potrebujemo štiri zatiče (A, B, A, B). Ti štirje zatiči so povezani z GPIO14,4,17 oziroma 18. Oranžna in bela žica skupaj tvorita povezavo za en motor. Tako imamo dva taka para za dva motorja.
Motorji so povezani z modulom L293D Motor Driver, kot je prikazano na sliki, pogonski modul pa napaja napajalnik. Prepričajte se, da je ozemljitev napajalnika priključena na tla Raspberry Pi, šele nato bo vaša povezava delovala.
Programiranje Raspberry PI:
Ko končate z montažo in povezavami, bi moral biti vaš robot videti približno tako.
UZdaj je čas, da programiramo našega bota in ga zaženemo. Popolno kodo tega bota najdete na dnu te vadnice. Več o programiranju in zagonu kode v Raspberry Pi lahko preberete tukaj. Pomembne vrstice so razložene spodaj
Datoteko GPIO bomo uvozili iz knjižnice, spodnja funkcija nam omogoča programiranje GPIO nožic PI. Prav tako preimenujemo »GPIO« v »IO«, zato bomo v programu, kadar se želimo sklicevati na zatiče GPIO, uporabili besedo »IO«.
uvozi RPi.GPIO kot IO
Včasih, ko zatiči GPIO, ki jih poskušamo uporabiti, morda opravljajo nekatere druge funkcije. V tem primeru bomo med izvajanjem programa prejeli opozorila. Spodaj ukaz PI-ju sporoči, naj prezre opozorila in nadaljuje s programom.
IO.setwarnings (False)
Zatiče GPIO PI lahko označimo bodisi s številko zatiča na krovu bodisi s številko njihove funkcije. Tako kot »PIN 29« na plošči je »GPIO5«. Torej tukaj povemo, ali bomo tu zastopali pin z '29' ali '5'.
IO.setmode (IO.BCM)
6 vtičev nastavimo kot vhodne / izhodne zatiče. Prva dva zatiča sta vhodna zatiča za branje IR senzorja. Naslednji štirje so izhodni zatiči, od katerih se prva dva uporabljata za upravljanje desnega motorja, naslednja dva pa za levi motor.
IO.setup (2, IO.IN) #GPIO 2 -> Levi IR ven IO.setup (3, IO.IN) #GPIO 3 -> Desni IR izhod IO.setup (4, IO.OUT) #GPIO 4 - > Motor 1 terminal A IO.setup (14, IO.OUT) #GPIO 14 -> Motor 1 terminal B IO.setup (17, IO.OUT) #GPIO 17 -> Motor Levi terminal A IO.setup (18, IO.OUT) #GPIO 18 -> Levi terminal B motorja
IR senzor odda "True", če je na beli površini. Dokler oba senzorja rečeta True, lahko gremo naprej.
if (IO.input (2) == True in IO.input (3) == True): # oba bela se pomakneta naprej IO.output (4, True) # 1A + IO.output (14, False) # 1B- IO.output (17, True) # 2A + IO.output (18, False) # 2B-
Če prvi IR senzor pride čez črno črto, moramo zaviti desno. To naredimo tako, da odčitamo IR senzor in če je stanje izpolnjeno, ustavimo desni motor in zavrtimo levi motor sam, kot je prikazano v spodnji kodi
elif (IO.input (2) == False in IO.input (3) == True): # zavijte desno IO.output (4, True) # 1A + IO.output (14, True) # 1B- IO.output (17, True) # 2A + IO.output (18, False) # 2B-
Če drugi IR senzor pride čez črno črto, moramo zaviti levo. To naredimo tako, da preberemo IR senzor in če je stanje izpolnjeno, zaustavimo levi motor in zavrtimo samo desni motor, kot je prikazano v spodnji kodi
elif (IO.input (2) == True in IO.input (3) == False): # zavij levo IO.output (4, True) # 1A + IO.output (14, False) # 1B- IO.output (17, True) # 2A + IO.output (18, True) # 2B-
Če oba senzorja prečkata črno črto, to pomeni, da se mora robot ustaviti. To lahko storite tako, da sta oba terminala motorja resnična, kot je prikazano na spodnji kodi
else: #stay still IO.output (4, True) # 1A + IO.output (14, True) # 1B- IO.output (17, True) # 2A + IO.output (18, True) # 2B-
Raspberry Pi Line Follower v akciji:
Naložite kodo pythona za sledilca vrstic na vaš Raspberry Pi in jo zaženite. Potrebujemo prenosni napajalnik, v tem primeru je napajalnik primeren, zato sem ga uporabil. Tisti, ki ga uporabljam, ima dva priključka USB, zato sem napajal PI, druge pa Power Power Driver, kot je prikazano na spodnji sliki.
Zdaj vse, kar morate storiti, je, da nastavite svojo črno barvno skladbo in spustite bota nad njo. Za izdelavo skladbe sem uporabil črni barvni izolacijski trak, v katerem lahko uporabite kateri koli material črne barve, vendar poskrbite, da vaša osnovna barva ni temna.
Popolno delovanje bota najdete na spodnjem videoposnetku. Upam, da ste projekt razumeli in ste uživali pri njegovi izdelavi. Če imate kakršna koli vprašanja, jih objavite v spodnjem oddelku za komentarje.