- Požadované komponenty:
- Ultrazvukový senzorový modul:
- Vysvětlení obvodu:
- Jak to funguje:
- Vysvětlení programování:
Roboty jsou stroje, které snižují lidské úsilí při těžkých pracích automatizací úkolů v průmyslových odvětvích, továrnách, nemocnicích atd. Většina robotů je provozována pomocí některé řídicí jednotky nebo komponent, jako je tlačítko, dálkový ovladač, joystick, počítač, gesta a provedení nějakého příkazu pomocí řadiče nebo procesoru. Ale dnes jsme tady s automatickým robotem, který se pohybuje autonomně bez jakýchkoli vnějších událostí a vyhýbá se všem překážkám v cestě, ano, mluvíme o překážce vyhýbající se robotovi. V tomto projektu jsme použili ovladač Raspberry Pi a Motor k pohonu robota a ultrazvukový senzor pro detekci objektů v cestě robota.
Dříve jsme se zabývali mnoha užitečnými roboty, najdete je v naší sekci Robotické projekty.
Požadované komponenty:
- Raspberry Pi
- Ultrazvukový senzorový modul HC-SR04
- Podvozek ROBOT se šroubem
- Stejnosměrné motory
- L293D IC
- Kola
- Chlebová deska
- Rezistor (1k)
- Kondenzátor (100nF)
- Připojovací vodiče
- Napájení nebo napájecí banka
Ultrazvukový senzorový modul:
Překážka vyhýbající Robot je Automatizované Robot, a to nemusí být řízen pomocí libovolného dálkového ovladače. Tyto typy automatizovaných robotů mají některé senzory „šestého smyslu“, jako jsou detektory překážek, detektory zvuku, detektory tepla nebo detektory kovů. Zde jsme provedli detekci překážek pomocí ultrazvukových signálů. Pro tento účel jsme použili modul ultrazvukového senzoru.
Ultrazvukové senzory se běžně používají k detekci objektů a určení vzdálenosti překážky od senzoru. To je skvělý nástroj pro měření vzdálenosti bez jakéhokoli fyzického kontaktu, jako je měření hladiny vody v nádrži, měření vzdálenosti, robot zabraňující překážkám atd. Takže zde jsme detekovali objekt a změřili vzdálenost pomocí ultrazvukového senzoru a Raspberry Pi.
Ultrazvukový senzor HC-SR04 se používá k měření vzdálenosti v rozsahu 2 cm - 400 cm s přesností 3 mm. Modul snímače se skládá z ultrazvukového vysílače, přijímače a řídicího obvodu. Ultrazvukový senzor se skládá ze dvou kruhových očí, z nichž jedno slouží k přenosu ultrazvukové vlny a druhé k jejímu přijetí.
Můžeme vypočítat vzdálenost objektu na základě času, který ultrazvuková vlna potřebuje k návratu zpět k senzoru. Protože je znám čas a rychlost zvuku, můžeme vzdálenost vypočítat podle následujících vzorců.
- Vzdálenost = (čas x rychlost zvuku ve vzduchu (343 m / s)) / 2.
Hodnota se dělí dvěma, protože vlna se pohybuje vpřed a vzad a pokrývá stejnou vzdálenost. Čas potřebný k dosažení překážky je tedy jen polovina celkového času.
Vypočítali jsme tedy vzdálenost (v centimetrech) od překážky, jak je uvedeno níže:
pulse_start = time.time () while GPIO.input (ECHO) == 1: # Zkontrolovat, zda je ECHO VYSOKÝ 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
Kde pulse_duration je doba mezi odesláním a příjmem ultrazvukového signálu.
Vysvětlení obvodu:
Okruh je pro tento Obstacle Avoiding Robot pomocí Raspberry Pi velmi jednoduchý. Modul ultrazvukového senzoru, který se používá k detekci objektů, je připojen na pin GPIO 17 a 27 Raspberry Pi. Motor Driver IC L293D je spojen s Raspberry Pi 3 pro pohon motorů robotu. Vstupní piny 2, 7, 10 a 15 ovladače motoru jsou připojeny k pinům Raspberry Pi GPIO číslo 12, 16, 20 a 21. Zde jsme použili dva stejnosměrné motory k pohonu robota, ve kterém je jeden motor připojen k výstupním kolíkům 3 a 6 ovladače motoru IC a další motor je připojen k pinům 11 a 14 ovladače motoru IC.
Jak to funguje:
Práce tohoto autonomního robota je velmi snadná. Když je robot zapnutý a běží, Raspberry Pi měří vzdálenosti objektů před ním pomocí modulu ultrazvukového senzoru a ukládá jej do proměnné. Poté RPi porovná tuto hodnotu s předdefinovanými hodnotami a podle toho se rozhodne přesunout robota doleva, doprava, dopředu nebo dozadu.
Tady v tomto projektu jsme vybrali vzdálenost 15 cm pro jakékoli rozhodnutí Raspberry Pi. Nyní, kdykoli se Raspberry Pi dostane do vzdálenosti menší než 15 cm od jakéhokoli objektu, Raspberry Pi zastaví robota a posune jej zpět a poté jej otočí doleva nebo doprava. Nyní před opětovným posunutím dopředu Raspberry Pi znovu zkontroluje, zda se v dosahu 15 cm nenachází nějaká překážka, pokud ano, pak znovu opakuje předchozí postup, jinak posuňte robota dopředu, dokud znovu nezjistí překážku nebo předmět.
Vysvětlení programování:
Pro program používáme jazyk Python. Před kódováním musí uživatel nakonfigurovat Raspberry Pi. Můžete si prohlédnout naše předchozí výukové programy Začínáme s Raspberry Pi a Instalace a konfigurace Raspbian Jessie OS v Pi.
Programová část tohoto projektu hraje velmi důležitou roli při provádění všech operací. Nejprve zahrneme požadované knihovny, inicializujeme proměnné a definujeme piny pro ultrazvukový senzor, motor a komponenty.
import RPi.GPIO jako GPIO čas importu # knihovna importu času GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Poté jsme vytvořili některé funkce def forward (), def back (), def left (), def right () pro pohyb robota vpřed, vzad, doleva nebo doprava a def stop () pro zastavení robota, zkontrolujte funkce v níže uvedeném kódu.
Poté jsme v hlavním programu inicializovali ultrazvukový senzor a odečetli jsme čas mezi přenosem a příjmem signálu a vypočítali vzdálenost. Zde jsme tento proces pro lepší přesnost opakovali 5krát. Již jsme vysvětlili proces výpočtu vzdálenosti pomocí ultrazvukového senzoru.
i = 0 avgDistance = 0 pro i v rozsahu (5): GPIO.output (TRIG, False) time.sleep (0,1) GPIO.output (TRIG, True) time.sleep (0,00001) GPIO.output (TRIG, False) while GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () while GPIO.input (ECHO) == 1: # Zkontrolujte, zda je ECHO VYSOKÝ 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
Nakonec, pokud Robot před sebou najde nějakou překážku, pak jsme po dosažení vzdálenosti od překážky naprogramovali Robota tak, aby se vydal jinou cestou.
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: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Kompletní kód tohoto Raspberry Pi Obstacle Avoiding Robot je uveden níže s ukázkovým videem.