- Potrebne komponente:
- Ultrazvočni senzorski modul:
- Pojasnilo vezja:
- Kako deluje:
- Pojasnilo programiranja:
Roboti so stroji, ki zmanjšujejo človeški napor pri težkih delih z avtomatizacijo nalog v industriji, tovarnah, bolnišnicah itd. Večino robotov poganja neka krmilna enota ali sestavni deli, kot so tipka, daljinski upravljalnik, krmilna palica, računalnik, kretnje in izvajanje nekega ukaza z uporabo krmilnika ali procesorja. Ampak danes smo tukaj z avtomatsko robota, ki se premika avtonomno brez kakršnih koli zunanjih dogodkov prepreči vse ovire na svoji poti, da govorimo o Ovira Izogibanje Robot. V tem projektu smo uporabili Raspberry Pi in Motor driver za pogon robota in ultrazvočni senzor za zaznavanje predmetov na poti Robota.
V preteklosti smo obravnavali številne uporabne robote, ki jih lahko najdete v našem razdelku Robotski projekti.
Potrebne komponente:
- Raspberry Pi
- Ultrazvočni senzorski modul HC-SR04
- ROBOT Šasija v kompletu z vijakom
- Enosmerni motorji
- L293D IC
- Kolesa
- Odbor za kruh
- Upor (1k)
- Kondenzator (100nF)
- Priključne žice
- Napajanje ali napajalnik
Ultrazvočni senzorski modul:
Ovira Avoider Robot je avtomatiziran robot in ni treba nadzorovati z uporabo katere koli daljinskim upravljalnikom. Te vrste avtomatiziranih robotov imajo senzorje šestega čuta, kot so detektorji ovir, detektor zvoka, detektor toplote ali detektorji kovin. Tu smo opravili zaznavanje ovir z uporabo ultrazvočnih signalov. V ta namen smo uporabili ultrazvočni senzorski modul.
Ultrazvočni senzorji se običajno uporabljajo za zaznavanje predmetov in določanje oddaljenosti ovire od senzorja. To je odlično orodje za merjenje razdalje brez kakršnega koli fizičnega stika, na primer merjenje nivoja vode v rezervoarju, merjenje razdalje, robota za izogibanje oviram itd. Tu smo zaznali objekt in izmerili razdaljo z uporabo ultrazvočnega senzorja in Raspberry Pi.
Ultrazvočni senzor HC-SR04 se uporablja za merjenje razdalje v območju od 2 cm do 400 cm z natančnostjo 3 mm. Senzorski modul je sestavljen iz ultrazvočnega oddajnika, sprejemnika in krmilnega vezja. Ultrazvočni senzor je sestavljen iz dveh krožnih očes, od katerih se eno uporablja za oddajanje ultrazvočnega vala, drugo pa za sprejem.
Oddaljenost predmeta lahko izračunamo na podlagi časa, ki ga ultrazvočni val vzame nazaj na senzor. Ker sta čas in hitrost zvoka znana, lahko razdaljo izračunamo po naslednjih formulah.
- Razdalja = (čas x hitrost zvoka v zraku (343 m / s)) / 2.
Vrednost je deljena z dvema, saj val potuje naprej in nazaj, pri čemer pokriva enako razdaljo. Tako je čas za dosego ovire le polovica celotnega porabljenega časa.
Tako smo izračunali razdaljo (v centimetrih) od ovire, kot spodaj:
pulse_start = time.time (), medtem ko je GPIO.input (ECHO) == 1: # Preverite, ali je ECHO VISOK GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = krog (razdalja, 2) avgDistance = avgDistance + distance
Kjer je pulz_duration čas med pošiljanjem in sprejemom ultrazvočnega signala.
Pojasnilo vezja:
Vezje je zelo enostavno za tega robota, ki se izogiba oviram z uporabo Raspberry Pi. Modul Ultrazvočni senzor, ki se uporablja za zaznavanje predmetov, ki je priključen na GPIO pin 17 in 27 maline Pi. Pogonskim motorjem IC L293D je povezan z maline Pi 3 za pogon motorjev robota. Vhodni zatiči 2, 7, 10 in 15 gonilnika motorja so priključeni na pin pin Raspberry Pi GPIO št. 12, 16, 20 in 21. Tu smo za pogon robota uporabili dva enosmerna motorja, pri katerih je en motor priključen na izhodni zatič 3 in 6 vmesnika IC gonilnika motorja, drugi motor pa v priključku 11 in 14 vmesnika IC gonilnika motorja.
Kako deluje:
Delo s tem avtonomnim robotom je zelo enostavno. Ko se robot vklopi in začne delovati, Raspberry Pi z uporabo ultrazvočnega senzorskega modula izmeri razdaljo predmetov pred seboj in shrani v spremenljivko. Nato RPi primerja to vrednost z vnaprej določenimi vrednostmi in v skladu s tem sprejme odločitve o premikanju robota levo, desno, naprej ali nazaj.
V tem projektu smo izbrali razdaljo 15 cm za kakršno koli odločitev Raspberry Pi. Zdaj, ko Raspberry Pi doseže razdaljo do katerega koli predmeta manj kot 15 cm, Raspberry Pi ustavi robota in ga premakne nazaj ter nato obrne levo ali desno. Zdaj, preden ga spet premakne naprej, Raspberry Pi ponovno preveri, ali je v razdalji 15 cm prisotna katera ovira, če je odgovor pritrdilen, nato še enkrat ponovi prejšnji postopek, sicer pa robota premaknite naprej, dokler ne bo znova zaznal nobene ovire ali predmeta.
Pojasnilo programiranja:
Tukaj za program uporabljamo jezik Python. Pred kodiranjem mora uporabnik konfigurirati Raspberry Pi. Preverite naše prejšnje vadnice za Začetek uporabe Raspberry Pi ter Namestitev in konfiguriranje OS Raspbian Jessie v Pi.
Programski del tega projekta ima zelo pomembno vlogo za izvajanje vseh operacij. Najprej vključimo zahtevane knjižnice, inicializiramo spremenljivke in določimo nožice za ultrazvočni senzor, motor in komponente.
uvoz RPi.GPIO kot GPIO čas uvoza #Uvozi knjižnico časa GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Po njem smo ustvarili nekaj funkcij def forward (), def back (), def left (), def right () za premikanje robota v smeri naprej, nazaj, levo ali desno in def stop () za zaustavitev robota, preverite funkcije v spodnji kodi.
Nato smo v glavnem programu sprožili ultrazvočni senzor in odčitali čas med prenosom in sprejemom signala ter izračunali razdaljo. Tu smo ta postopek petkrat ponovili za boljšo natančnost. Postopek izračuna razdalje smo že razložili z ultrazvočnim senzorjem.
i = 0 avgDistance = 0 za i v območju (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) medtem ko GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time (), medtem ko GPIO.input (ECHO) == 1: # Preverite, ali je ECHO HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round (distance, 2) avgDistance = avgDistance + distance
Nazadnje, če Robot pred seboj najde kakršno koli oviro, smo potem, ko se oddaljimo od ovire, programirali Robota, da ubere drugo pot.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: leva () zastava = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Popolna koda tega robota za izogibanje oviram Raspberry Pi je podana spodaj z demonstracijskim videom.