- Wymagane składniki:
- Moduł czujnika ultradźwiękowego:
- Objaśnienie obwodu:
- Jak to działa:
- Objaśnienie programowania:
Roboty to maszyny, które zmniejszają wysiłek człowieka przy ciężkich pracach poprzez automatyzację zadań w przemyśle, fabrykach, szpitalach itp. Większość robotów jest obsługiwana za pomocą jakiejś jednostki sterującej lub komponentów, takich jak przycisk, pilot, joystick, komputer, gesty i inne wykonanie jakiegoś polecenia za pomocą kontrolera lub procesora. Ale dzisiaj jesteśmy tutaj z automatycznym robotem, który porusza się autonomicznie bez żadnych zdarzeń zewnętrznych, omijając wszystkie przeszkody na swojej drodze, tak, mówimy o robocie unikającym przeszkód. W tym projekcie wykorzystaliśmy Raspberry Pi i sterownik silnika do sterowania robotem oraz czujnik ultradźwiękowy do wykrywania obiektów na ścieżce robota.
Wcześniej omawialiśmy wiele przydatnych robotów, które można znaleźć w naszej sekcji projektów robotyki.
Wymagane składniki:
- Raspberry Pi
- Moduł czujnika ultradźwiękowego HC-SR04
- Podwozie ROBOTA w komplecie ze śrubą
- Silniki DC
- L293D IC
- Koła
- Deska do chleba
- Rezystor (1k)
- Kondensator (100nF)
- Przewody łączące
- Zasilacz lub power bank
Moduł czujnika ultradźwiękowego:
Przeszkoda Avoider Robot to zautomatyzowany robot i to nie musi być sterowany za pomocą dowolnego pilota. Te typy zautomatyzowanych robotów mają pewne czujniki „szóstego zmysłu”, takie jak wykrywacze przeszkód, wykrywacz dźwięku, wykrywacz ciepła lub wykrywacze metalu. Tutaj zrobiliśmy wykrywanie przeszkód za pomocą sygnałów ultradźwiękowych. W tym celu użyliśmy modułu czujnika ultradźwiękowego.
Czujniki ultradźwiękowe są powszechnie używane do wykrywania obiektów i określania odległości przeszkody od czujnika. Jest to świetne narzędzie do pomiaru odległości bez fizycznego kontaktu, jak np. Pomiar poziomu wody w zbiorniku, pomiar odległości, robot omijający przeszkody itp. Więc tutaj wykryliśmy obiekt i zmierzyliśmy odległość za pomocą czujnika ultradźwiękowego i Raspberry Pi.
Czujnik ultradźwiękowy HC-SR04 służy do pomiaru odległości w zakresie 2cm-400cm z dokładnością do 3mm. Moduł czujnika składa się z nadajnika ultradźwiękowego, odbiornika i obwodu sterującego. Czujnik ultradźwiękowy składa się z dwóch okrągłych oczu, z których jedno służy do przesyłania fali ultradźwiękowej, a drugie do jej odbierania.
Możemy obliczyć odległość obiektu na podstawie czasu potrzebnego fali ultradźwiękowej na powrót do czujnika. Ponieważ czas i prędkość dźwięku są znane, możemy obliczyć odległość za pomocą następujących wzorów.
- Odległość = (czas x prędkość dźwięku w powietrzu (343 m / s)) / 2.
Wartość dzieli się przez dwa, ponieważ fala przemieszcza się do przodu i do tyłu pokonując tę samą odległość, a więc czas na dotarcie do przeszkody to tylko połowa całkowitego czasu.
Więc obliczyliśmy odległość (w centymetrach) od przeszkody jak poniżej:
pulse_start = time.time () while GPIO.input (ECHO) == 1: # Sprawdź, czy ECHO jest WYSOKI 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
Gdzie pulse_duration to czas między wysłaniem a odebraniem sygnału ultradźwiękowego.
Objaśnienie obwodu:
Obwód jest bardzo prosty dla tego robota unikającego przeszkód za pomocą Raspberry Pi. Moduł Czujnik ultradźwiękowy, stosowany do wykrywania celów, został połączony przy GPIO styku 17 i 27 malinowy Pi. Układ scalony sterownika silnika L293D jest podłączony do Raspberry Pi 3 w celu sterowania silnikami robota. Piny wejściowe sterownika silnika 2, 7, 10 i 15 są podłączone do pinów GPIO Raspberry Pi o numerach odpowiednio 12, 16, 20 i 21. Tutaj użyliśmy dwóch silników prądu stałego do napędzania robota, w którym jeden silnik jest podłączony do styku wyjściowego 3 i 6 układu scalonego sterownika silnika, a drugi silnik jest podłączony do styku 11 i 14 układu scalonego sterownika silnika.
Jak to działa:
Praca tego autonomicznego robota jest bardzo łatwa. Kiedy robot jest włączony i zaczyna działać, Raspberry Pi mierzy odległości obiektów przed nim za pomocą modułu czujnika ultradźwiękowego i zapisuje w zmiennej. Następnie RPi porównuje tę wartość ze wstępnie zdefiniowanymi wartościami i podejmuje odpowiednie decyzje, aby przesunąć robota w lewo, w prawo, do przodu lub do tyłu.
Tutaj w tym projekcie wybraliśmy odległość 15cm do podjęcia jakiejkolwiek decyzji przez Raspberry Pi. Teraz, gdy Raspberry Pi osiągnie odległość mniejszą niż 15 cm od dowolnego obiektu, Raspberry Pi zatrzymuje robota i przesuwa go z powrotem, a następnie obraca w lewo lub w prawo. Teraz przed ponownym przesunięciem go do przodu, Raspberry Pi ponownie sprawdza, czy w odległości 15 cm nie ma przeszkody, jeśli tak, to ponownie powtarza poprzedni proces, w przeciwnym razie przesuń robota do przodu, aż ponownie wykryje jakąkolwiek przeszkodę lub obiekt.
Objaśnienie programowania:
W programie używamy języka Python. Przed kodowaniem użytkownik musi skonfigurować Raspberry Pi. Możesz sprawdzić nasze poprzednie samouczki dotyczące rozpoczęcia pracy z Raspberry Pi oraz instalowania i konfigurowania systemu operacyjnego Raspbian Jessie w Pi.
Część programowa tego projektu odgrywa bardzo ważną rolę przy wykonywaniu wszystkich operacji. Przede wszystkim dołączamy wymagane biblioteki, inicjalizujemy zmienne i definiujemy wyprowadzenia czujnika ultradźwiękowego, silnika i komponentów.
import RPi.GPIO jako czas importu GPIO #Import time library GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Następnie stworzyliśmy funkcje def forward (), def back (), def left (), def right () do poruszania robota odpowiednio w przód, w tył, w lewo lub w prawo oraz def stop (), aby zatrzymać robota, sprawdź funkcje w kodzie podanym poniżej.
Następnie w programie głównym uruchomiliśmy czujnik ultradźwiękowy i odczytaliśmy czas między nadaniem i odbiorem sygnału oraz obliczyliśmy odległość. Tutaj powtórzyliśmy ten proces 5 razy dla lepszej dokładności. Wyjaśniliśmy już proces obliczania odległości za pomocą czujnika ultradźwiękowego.
i = 0 avgDistance = 0 dla i w zakresie (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: #Sprawdź, czy ECHO jest HIGH GPIO.output (led, Fałsz) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round (distance, 2) avgDistance = avgDistance + distance
Wreszcie, jeśli Robot znajdzie przed sobą jakąkolwiek przeszkodę, to po uzyskaniu odległości od przeszkody zaprogramowaliśmy robota, aby obrał inną trasę.
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
Pełny kod tego robota unikającego przeszkód Raspberry Pi znajduje się poniżej wraz z filmem demonstracyjnym.