- Reikalingos medžiagos:
- Linijos sekėjo sąvokos
- „Raspberry Pi“ linijos sekėjo roboto schema ir paaiškinimas:
- „Raspberry PI“ programavimas:
- Aviečių Pi linijos sekėjas veikia:
Kaip visi žinome, „Raspberry Pi“ yra nuostabi „Developing“ platforma, pagrįsta ARM mikroprocesoriumi. Turėdamas didelę skaičiavimo galią ir plėtros galimybes, jis gali sukurti stebuklus elektronikos mėgėjų ar studentų rankose. Norėdami sužinoti daugiau apie „Raspberry Pi“ ir kaip jis veikia, pabandykime sukurti „ Linijos sekėjo“ robotą naudodami „Raspberry Pi“.
Jei jus domina robotika, turėtumėte gerai žinoti pavadinimą „ Linijos sekėjo robotas “. Šis robotas gali sekti liniją, tiesiog naudodamas porą jutiklių ir variklių. Gali atrodyti neefektyvu, norint sukurti paprastą robotą naudojant tokį galingą mikroprocesorių kaip „Raspberry Pi“. Tačiau šis robotas suteikia jums erdvę begalinei plėtrai, o tokie robotai kaip „Kiva“ („Amazon“ sandėlio robotas) yra to pavyzdys. Taip pat galite patikrinti kitus mūsų robotus:
- Linijos sekėjo robotas, naudojant 8051 mikrovaldiklį
- Linijos sekėjo robotas, naudojant „Arduino“
Reikalingos medžiagos:
- „Raspberry Pi 3“ (bet koks modelis turėtų veikti)
- IR jutiklis (2Nos)
- DC pavaros variklis (2Nos)
- L293D variklio tvarkyklė
- Cheeses (Jūs taip pat galite sukurti savo, naudodamiesi kartonais)
- Maitinimo bankas (bet koks galimas maitinimo šaltinis)
Linijos sekėjo sąvokos
Linijos sekimo robotas sugeba stebėti liniją IR jutiklio pagalba. Šis jutiklis turi IR siųstuvą ir IR imtuvą. IR siųstuvas (IR šviesos diodas) perduoda šviesą, o imtuvas (fotodiodas) laukia, kol perduodama šviesa grįš atgal. IR šviesa grįš atgal, tik jei ją atspindės paviršius. Visi paviršiai neatspindi IR šviesos, juos visiškai atspindi tik baltos spalvos paviršius, o juodos spalvos paviršius juos visiškai pastebės, kaip parodyta toliau pateiktame paveikslėlyje. Sužinokite daugiau apie IR jutiklio modulį čia.
Dabar naudosime du infraraudonųjų spindulių jutiklius, kad patikrintume, ar robotas eina su linija, ir dviem varikliais, kad ištaisytume robotą, jei jis pasislenka iš kelio. Šiems varikliams reikalinga didelė srovė ir jie turėtų būti dviejų krypčių; taigi mes naudojame variklio tvarkyklės modulį, pvz., L293D. Mums taip pat reikės tokio skaičiavimo įrenginio kaip „ Raspberry Pi“, kuris nurodytų variklius pagal IR jutiklio reikšmes. Toliau parodyta supaprastinta to paties bloko schema.
Šie du IR jutikliai bus išdėstyti po vieną iš abiejų linijos pusių. Jei nė vienas iš jutiklių neaptinka juodos linijos, jie PI nurodo varikliams judėti į priekį, kaip parodyta žemiau
Jei kairysis jutiklis yra ant juodos linijos, PI nurodo robotą pasukti į kairę, sukdamas tik dešinįjį ratą.
Jei dešinysis jutiklis yra juodoje linijoje, PI nurodo robotui pasukti į dešinę, sukdamas kairįjį ratą vienas.
Jei abu jutikliai atsiduria juodoje linijoje, robotas sustoja.
Tokiu būdu robotas galės sekti liniją neišlipęs iš trasos. Dabar pažiūrėkime, kaip atrodo grandinė ir kodas.
„Raspberry Pi“ linijos sekėjo roboto schema ir paaiškinimas:
Visa šio „ Raspberry Pi“ linijos sekėjo roboto schema parodyta žemiau
Kaip matote, grandinėje yra du IR jutikliai ir pora variklių, prijungtų prie „Raspberry pi“. Visą grandinę maitina „Mobile Power“ bankas (kurį AAA baterija rodo aukščiau esančioje grandinėje).
Kadangi „Raspberry Pi“ smeigtukų detalės neminimos, smeigtukus turime patikrinti naudodami žemiau pateiktą paveikslėlį
Kaip parodyta paveikslėlyje, viršutiniame kairiajame PI kampe esantis kaištis yra + 5 V kaištis, mes naudojame šį + 5 V kaištį IR jutiklių maitinimui, kaip parodyta grandinės schemoje (raudona laidinė). Tada juodu laidu prijungiame įžeminimo kaiščius prie IR jutiklio ir „Motor Driver“ modulio žemės. Geltonas laidas yra naudojamas prijungti išvesties kaištis su davikliu 1 ir 2 į GPIO kaiščių ir 3 atitinkamai.
Norėdami vairuoti „Motor“, mums reikia keturių kaiščių (A, B, A, B). Šie keturi kaiščiai yra sujungti atitinkamai iš GPIO14,4,17 ir 18. Oranžinė ir balta viela kartu sudaro vieno variklio jungtį. Taigi mes turime dvi tokias poras dviem varikliams.
Varikliai yra prijungti prie „ L293D“ variklio tvarkyklės modulio, kaip parodyta paveikslėlyje, o vairuotojo modulį maitina maitinimo bankas. Įsitikinkite, kad maitinimo banko įžeminimas yra prijungtas prie „Raspberry Pi“ žemės, tik tada jūsų ryšys veiks.
„Raspberry PI“ programavimas:
Kai baigsite surinkimą ir jungtis, jūsų robotas turėtų atrodyti maždaug taip.
ADabar atėjo laikas užprogramuoti mūsų robotą ir jį paleisti. Visą šio roboto kodą galite rasti šios mokymo programos apačioje. Sužinokite daugiau apie programą ir vykdykite „Raspberry Pi“ kodą čia. Svarbios eilutės paaiškintos žemiau
Mes ketiname importuoti GPIO failą iš bibliotekos, žemiau pateikta funkcija leidžia mums užprogramuoti PI GPIO kaiščius. Mes taip pat pervadiname „GPIO“ į „IO“, todėl programoje, kai norime nurodyti GPIO kaiščius, naudosime žodį „IO“.
importuoti RPi.GPIO kaip IO
Kartais, kai GPIO kaiščiai, kuriuos bandome naudoti, gali atlikti kitas funkcijas. Tokiu atveju vykdydami programą gausime įspėjimus. Žemiau komanda liepia PI nepaisyti įspėjimų ir tęsti programą.
IO.setwarnings (False)
Mes galime nurodyti PI GPIO kaiščius pagal PIN kodą laive arba pagal jų funkcijos numerį. Kaip lentoje esantis „PIN 29“ yra „GPIO5“. Taigi mes sakome, kad čia mes smeigtuką atvaizduosime „29“ arba „5“.
IO.setmode (IO.BCM)
Mes nustatome 6 kaiščius kaip įvesties / išvesties kaiščius. Pirmieji du kaiščiai yra įvesties kaiščiai, skirti nuskaityti IR jutiklį. Kiti keturi yra išvesties kaiščiai, iš kurių pirmieji du naudojami dešiniajam varikliui valdyti, o kiti du - kairiajam varikliui.
IO.setup (2, IO.IN) #GPIO 2 -> kairysis IR IO.setup (3, IO.IN) #GPIO 3 -> dešinysis IR out IO.setup (4, IO.OUT) #GPIO 4 - > 1 variklio gnybtas A IO. Nustatymas (14, IO.OUT) # GPIO 14 -> 1 variklio gnybtas B IO. Nustatymas (17, IO.OUT) # GPIO 17 -> kairysis variklio terminalas A IO. Nustatymas (18, IO).OUT) #GPIO 18 -> Kairysis variklio gnybtas B
IR jutiklis išleidžia „True“, jei jis yra ant balto paviršiaus. Taigi, kol abu jutikliai sako „Tiesa“, galime judėti į priekį.
jei (IO.input (2) == True ir IO.input (3) == True): # abu balti žingsniai pirmyn IO.output (4, True) # 1A + IO.output (14, False) # 1B- IO.output (17, True) # 2A + IO.output (18, False) # 2B-
Turime pasukti į dešinę, jei pirmasis IR jutiklis eina per juodą liniją. Tai daroma nuskaitant IR jutiklį ir, jei sąlyga yra įvykdyta, sustabdome dešinįjį variklį ir pasukame kairįjį variklį vieni, kaip parodyta žemiau esančiame kode
elif (IO.input (2) == False ir IO.input (3) == True): #sukite į dešinę IO.output (4, True) # 1A + IO.output (14, True) # 1B- IO.output (17, tiesa) # 2A + IO. Išvestis (18, klaidinga) # 2B-
Turime padaryti kairį posūkį, jei antrasis IR jutiklis eina per juodą liniją. Tai daroma nuskaitant IR jutiklį ir, jei sąlyga tenkinama, sustabdome kairįjį variklį ir pasukame tik dešinįjį variklį, kaip parodyta žemiau esančiame kode
elif (IO.input (2) == True ir IO.input (3) == False): #pasukite kairę IO.output (4, True) # 1A + IO.output (14, False) # 1B- IO.output (17, tiesa) # 2A + IO. Išvestis (18, tiesa) # 2B-
Jei abu jutikliai yra per juodą liniją, tai reiškia, kad robotas turi sustoti. Tai galima padaryti užtikrinant, kad abu variklio gnybtai būtų teisingi, kaip parodyta žemiau esančiame kode
dar: # likti vis tiek IO.output (4, True) # 1A + IO.output (14, True) # 1B- IO.output (17, True) # 2A + IO.output (18, True) # 2B-
Aviečių Pi linijos sekėjas veikia:
Įkelkite eilutės sekėjo pitono kodą į savo „Raspberry Pi“ ir paleiskite jį. Mums reikia nešiojamojo maitinimo šaltinio, šiuo atveju maitinimo bankas tampa patogus, todėl naudojau tą patį. Tas, kurį naudoju, yra su dviem USB jungtimis, todėl aš naudoju PI ir kitų maitinimo šaltinių maitinimą variklio tvarkyklei, kaip parodyta paveikslėlyje žemiau.
Dabar viskas, ką jums reikia padaryti, yra susikurti savo juodos spalvos takelį ir per jį paleisti robotą. Aš naudoju juodos spalvos izoliacinę juostą kurdamas takelį, kuriame galite naudoti bet kokią juodos spalvos medžiagą, tačiau įsitikinkite, kad jūsų pagrindo spalva nėra tamsi.
Visą robotų darbą galite rasti žemiau pateiktame vaizdo įraše. Tikiuosi, kad supratote projektą ir patiko jį kurti. Jei turite klausimų, paskelbkite juos žemiau esančiame komentarų skyriuje.