- Būtini komponentai:
- Ultragarso jutiklio modulis:
- Grandinės paaiškinimas:
- Kaip tai veikia:
- Programavimo paaiškinimas:
Robotai yra mašinos, mažinančios žmonių pastangas atliekant sunkius darbus, automatizuojant užduotis pramonėje, gamyklose, ligoninėse ir kt. Dauguma robotų valdomi naudojant kai kuriuos valdymo blokus ar komponentus, tokius kaip mygtukas, nuotolinis valdiklis, vairasvirtė, kompiuteris, gestai ir kai kurios komandos vykdymas naudojant valdiklį ar procesorių. Bet šiandien mes esame su automatiniu robotu, kuris autonomiškai juda be jokių išorinių įvykių, išvengdamas visų kliūčių savo kelyje, taip, mes kalbame apie robotą, vengiantį kliūčių. Šiame projekte mes panaudojome „ Raspberry Pi“ ir „Motor“ tvarkyklę, kad vairuotume robotą ir ultragarso jutiklį, kad aptiktume objektus roboto kelyje.
Anksčiau mes apėmėme daug naudingų robotų, juos galite rasti mūsų robotikos projektų skyriuje.
Būtini komponentai:
- Avietė Pi
- Ultragarso jutiklio modulis HC-SR04
- ROBOT važiuoklė komplektuojama su varžtu
- Nuolatinės srovės varikliai
- L293D IC
- Ratai
- Bandomoji Lenta
- Rezistorius (1k)
- Kondensatorius (100nF)
- Jungiamieji laidai
- Maitinimo šaltinis arba maitinimo bankas
Ultragarso jutiklio modulis:
Robotas „ Obstacle Avoider“ yra automatizuotas robotas, kurio nereikia valdyti jokiu nuotolinio valdymo pultu. Šio tipo automatizuoti robotai turi keletą „šeštojo jutimo“ jutiklių, tokių kaip kliūčių detektoriai, garso detektoriai, šilumos detektoriai ar metalo detektoriai. Čia mes atlikome kliūčių aptikimą naudodami ultragarso signalus. Šiuo tikslu mes panaudojome ultragarso jutiklio modulį.
Ultragarsiniai jutikliai dažniausiai naudojami objektams aptikti ir kliūties atstumui nuo jutiklio nustatyti. Tai yra puikus įrankis matuoti atstumą be jokio fizinio kontakto, pvz., Vandens lygio matavimas rezervuare, atstumo matavimas, kliūčių vengimo robotas ir kt. Taigi čia aptikome objektą ir išmatavome atstumą naudodami ultragarso jutiklį ir avietę Pi.
Ultragarsinis jutiklis HC-SR04 naudojamas matuoti atstumą nuo 2 cm iki 400 cm 3 mm tikslumu. Jutiklio modulį sudaro ultragarso siųstuvas, imtuvas ir valdymo grandinė. Ultragarsinis jutiklis susideda iš dviejų apskritų akių, iš kurių viena naudojama ultragarso bangai perduoti, kita - jai priimti.
Mes galime apskaičiuoti objekto atstumą pagal laiką, per kurį ultragarso banga grįžta atgal į jutiklį. Kadangi garso laikas ir greitis yra žinomi, atstumą galime apskaičiuoti pagal šias formules.
- Atstumas = (laikas x garso greitis ore (343 m / s)) / 2.
Vertė padalijama iš dviejų, nes banga eina į priekį ir atgal, įveikdama tą patį atstumą. Taigi laikas pasiekti kliūtį yra tik pusė viso užtrukto laiko.
Taigi, mes apskaičiavome atstumą (centimetrais) nuo kliūties, kaip nurodyta toliau:
pulse_start = time.time () o GPIO.input (ECHO) == 1: #Patikrinkite, ar ECHO yra HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 atstumas = apvalus (atstumas, 2) vid. atstumas = vid. atstumas + atstumas
Kur pulso trukmė yra laikas tarp ultragarso signalo siuntimo ir priėmimo.
Grandinės paaiškinimas:
Grandinė yra labai paprasta šiam robotui su kliūtimi išvengti naudojant Raspberry Pi. Ultragarsinis jutiklis modulis, naudojamas aptikti objektų, yra prijungtas bent GPIO kaiščio 17 ir 27 aviečių Pi. Variklio vairuotojas IC L293D yra prijungtas prie Aviečių Pi 3 vairavimo roboto variklius. Variklio vairuotojo įvesties kaiščiai 2, 7, 10 ir 15 yra prijungti prie „Raspberry Pi GPIO“ kaiščių, atitinkamai 12, 16, 20 ir 21. Robotui valdyti panaudojome du nuolatinės srovės variklius, kuriuose vienas variklis prijungtas prie variklio tvarkyklės IC išėjimo kaiščių 3 ir 6, o kitas variklis prijungtas prie variklio vairuotojo IC kaiščių 11 ir 14.
Kaip tai veikia:
Darbas su šiuo autonominiu robotu yra labai lengvas. Kai robotas bus įjungtas ir pradės veikti, „Raspberry Pi“ matuoja objektų atstumus priešais jį, naudodamas ultragarso jutiklio modulį ir saugo kintamajame. Tada RPi palygina šią vertę su iš anksto nustatytomis reikšmėmis ir atitinkamai priima sprendimus, norėdamas perkelti robotą kairėn, dešinėn, pirmyn arba atgal.
Šiame projekte mes pasirinkome 15 cm atstumą bet kokiam „Raspberry Pi“ sprendimui priimti. Dabar, kai „Raspberry Pi“ atstumas nuo bet kokio objekto yra mažesnis nei 15 cm, Raspberry Pi sustabdo robotą ir pastumia jį atgal, tada pasuka į kairę arba į dešinę. Dabar, prieš vėl judėdamas į priekį, „Raspberry Pi“ vėl patikrina, ar nėra kokių nors kliūčių 15 cm atstumu, jei taip, tada vėl pakartoja ankstesnį procesą, kitaip pajudinkite robotą į priekį, kol jis vėl aptiks kokią nors kliūtį ar daiktą.
Programavimo paaiškinimas:
Programai čia naudojame Python kalbą. Prieš koduodamas vartotojas turi sukonfigūruoti „Raspberry Pi“. Galite patikrinti ankstesnes „Raspberry Pi“ darbo pradžios ir „Raspbian Jessie OS“ diegimo ir konfigūravimo „Pi“ instrukcijas.
Šio projekto programavimo dalis vaidina labai svarbų vaidmenį atliekant visas operacijas. Visų pirma, mes įtraukiame reikalingas bibliotekas, inicijuojame kintamuosius ir nustatome ultragarso jutiklio, variklio ir komponentų kaiščius.
importuoti RPi.GPIO kaip GPIO importavimo laiką # Importuoti laiko biblioteką GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Po to mes sukūrėme keletą funkcijų: def priekinė (), def atgal (), kairė (), dešinė (), kad robotas judėtų pirmyn, atgal, kairėn arba dešinėn, ir def stop (), kad sustabdytų robotą, patikrinkite toliau pateiktame kode pateiktas funkcijas.
Tada pagrindinėje programoje mes inicijavome ultragarso jutiklį ir skaitėme laiką tarp signalo perdavimo ir priėmimo bei apskaičiavome atstumą. Norėdami pagerinti tikslumą, šį procesą pakartojome 5 kartus. Mes jau paaiškinome atstumo apskaičiavimo procesą naudojant ultragarso jutiklį.
i = 0 vid. atstumas = 0 i diapazone (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) o GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time (), o GPIO.input (ECHO) == 1: #Patikrinkite, ar ECHO yra HIGH GPIO.output (led, Klaidinga) pulso_ pabaiga = laikas. Laikas () pulso trukmė = pulso_ pabaiga - impulso pradžios atstumas = impulso trukmė * 17150 atstumas = apvalus (atstumas, 2) vid. Atstumas = vid. Atstumas + atstumas
Galiausiai, jei robotas ras priešais kokią nors kliūtį, tada, kai atstumas nuo kliūties, mes užprogramavome robotą važiuoti kitu keliu.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): dešinė () flag = 1 kitas: kairė () vėliava = 0 laikas. Miego (1,5) sustojimo () laikas. Miego (1) kitas: pirmyn () vėliava = 0
Pilnas šio „ Raspberry Pi“ kliūčių vengiančio roboto kodas pateikiamas žemiau su demonstraciniu vaizdo įrašu.