Lekcja 25/31: Samochód Smart Car-3 unika przeszkód za pomocą czujników podczerwieni | SunFounder Robojax
Ten projekt przekształca Twój samochód inteligentny SunFounder 3-in-1 Arduino w autonomiczny pojazd omijający przeszkody. Montując dwa czujniki podczerwieni (IR)—jeden z lewej i jeden z prawej strony—samochód może wykrywać obiekty na swojej drodze i podejmować decyzje w ułamku sekundy, aby je ominąć. To podstawowy krok w robotyce, uczący łączenia danych z czujników z logiką sterowania silnikami w celu stworzenia reaktywnej, samojezdnej maszyny. Zasady, których się tutaj nauczysz, znajdują zastosowanie w wielu rzeczywistych aplikacjach, w tym:
- Budowa robota odkurzającego, który porusza się po pomieszczeniu bez wpadania na meble.
- Tworzenie robota podążającego za linią lub rozwiązującego labirynty na zawody lub projekty edukacyjne.
- Opracowanie zautomatyzowanego robota patrolującego, który może przemierzać obwód i unikać ścian.
- Projektowanie inteligentnego samochodzika-zabawki, który może bawić się samodzielnie bez utykania.
Ten przewodnik opiera się bezpośrednio na poprzednich lekcjach, podczas których nauczyłeś się sterować silnikami samochodu i rozumieć działanie czujników IR. Tutaj połączymy te umiejętności, aby wdrożyć prosty, ale skuteczny algorytm omijania przeszkód.
Jak działa logika omijania przeszkód
Podstawowa idea jest prosta: samochód używa dwóch czujników IR do sprawdzania przeszkód po lewej i prawej stronie. Każdy czujnik wysyła sygnał cyfrowy: LOW (0), gdy wykryje obiekt w swoim zasięgu (około 20 cm), oraz HIGH (1), gdy droga jest wolna. Logika następnie określa działanie samochodu na podstawie stanów czujników (na filmie w 02:35):
- Przeszkoda po lewej, prawa wolna: Samochód skręca w prawo, aby ją ominąć.
- Przeszkoda po prawej, lewa wolna: Samochód skręca w lewo.
- Przeszkody po obu stronach: Samochód cofa się, aby uciec z potencjalnego ślepego zaułka.
- Brak przeszkód: Samochód jedzie do przodu.
To reaktywne podejście to klasyczny przykład maszyny stanów skończonych, gdzie zachowanie samochodu jest bezpośrednią odpowiedzią na bieżące dane z czujników.
Komponenty sprzętowe
Aby ukończyć ten projekt, będziesz potrzebować następujących komponentów, z których wszystkie są zawarte w zestawie SunFounder 3-in-1 Arduino:
- 1x Zestaw samochodu inteligentnego SunFounder 3-in-1 Arduino (lub równoważne części)
- 2x Czujniki omijania przeszkód na podczerwień
- 1x Arduino Uno (lub kompatybilna płyta)
- 1x Nakładka/płyta sterownika silników
- Przewody połączeniowe
Schemat podłączeń
Prawidłowe ustawienie czujników jest kluczowe dla działania tego projektu. Czujniki IR muszą być skierowane do przodu i lekko na zewnątrz, ponieważ będą wykrywać przeszkody po bokach samochodu (na filmie w 02:07). Poniższy schemat podłączeń pokazuje, jak połączyć czujniki z Arduino. Należy pamiętać, że instruktor użył konkretnego punktu dystrybucji zasilania na płytce stykowej samochodu, ale połączenia z Arduino są najważniejsze.
Połączenia są następujące (na filmie w 03:47):
- Zasilanie (VCC): Podłącz pin VCC obu czujników IR do wyjścia 5V na Arduino lub do szyny zasilania samochodu.
- Masa (GND): Podłącz pin GND obu czujników IR do wspólnej masy na Arduino lub do szyny masy samochodu.
- Wyjście prawego czujnika (OUT): Podłącz cyfrowe wyjście prawego czujnika IR do pinu cyfrowego 7 na Arduino.
- Wyjście lewego czujnika (OUT): Podłącz cyfrowe wyjście lewego czujnika IR do pinu cyfrowego 8 na Arduino.
Połączenia sterownika silników dla lewego i prawego silnika są takie same jak te ustalone w poprzedniej lekcji o sterowaniu silnikami.
Wyjaśnienie kodu
Kod dla tego projektu jest prosty. Główny program jest dostępny do pobrania poniżej artykułu. Tutaj skupimy się na częściach konfigurowalnych przez użytkownika, które możesz dostosować do własnego samochodu.
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int rightIR = 7;
const int leftIR = 8;
Te linie definiują piny używane dla sterownika silników i czujników IR. Piny silników (A_1B, A_1A, B_1B, B_1A) kontrolują prędkość i kierunek obu silników. Piny rightIR i leftIR to miejsca, do których podłączasz przewody sygnałowe z czujników. Jeśli użyłeś innych pinów, zmieniłbyś te wartości tutaj.
int speed = 150;
Ta zmienna ustawia podstawową prędkość samochodu. Wartość może wynosić od 0 do 255, gdzie 255 to maksymalna prędkość. Wartość 150 to dobry punkt wyjścia do nauki, ponieważ jest wystarczająco szybka, aby być interesująca, ale wystarczająco wolna, aby pozwolić na czas reakcji (na filmie w 07:10). Możesz to dostosować, aby samochód był szybszy lub wolniejszy.
Reszta kodu definiuje logikę w funkcji loop(). Odczytuje ona stan lewego i prawego czujnika, a następnie wywołuje odpowiednią funkcję ruchu (moveForward(), moveBackward(), backLeft(), backRight()). Te funkcje są wstępnie zdefiniowane i sterują sterownikiem silników, aby osiągnąć pożądany ruch. Instruktor dodał również funkcję stop() w późniejszej modyfikacji, aby zatrzymać samochód na krótki okres po manewrze omijania, co czyni jego ruchy bardziej zdecydowanymi (na filmie o 10:29).
Prezentacja projektu na żywo
Na filmie instruktor najpierw demonstruje logikę za pomocą monitora szeregowego. Umieszczając pudełko w pobliżu czujników, można zobaczyć odpowiednie komunikaty, takie jak „Skręć w lewo", „Skręć w prawo" lub „Jedź do tyłu", pojawiające się na ekranie, co potwierdza, że odczyty czujników i logika są poprawne (na filmie o 09:11).
Po zweryfikowaniu logiki instruktor dodaje kluczowe ulepszenie: funkcję stop(). Funkcja ta całkowicie zatrzymuje samochód na określony czas (np. 1 sekundę) po wykonaniu skrętu lub cofaniu, zapobiegając gwałtownym ruchom i pozwalając samochodowi ponownie ocenić otoczenie (na filmie o 10:29).
Na koniec samochód jest testowany na podłodze z serią przeszkód. Film pokazuje, jak samochód z powodzeniem omija pudełka, skręcając w lewo, w prawo i cofając w razie potrzeby, aby znaleźć wolną drogę, co demonstruje praktyczne zastosowanie tego algorytmu unikania przeszkód (na filmie o 12:13).
Rozdziały
- [00:00] Wprowadzenie do unikania przeszkód z czujnikami IR
- [01:24] Wymagania wstępne i przegląd projektu
- [02:35] Jak działa logika unikania przeszkód
- [03:47] Podłączanie czujników IR i silników
- [05:40] Otwieranie i wyjaśnianie kodu
- [09:11] Testowanie logiki za pomocą monitora szeregowego
- [10:29] Dodanie funkcji zatrzymania dla płynniejszej nawigacji
- [11:42] Testowanie funkcji zatrzymania
- [12:13] Finalny test praktyczny na podłodze
This code has not been parsed yet. Please return to the admin panel to parse it.
Common Course Links
Common Course Files
Zasoby i odniesienia
-
DokumentacjaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kit¶docs.sunfounder.com
-
ZewnętrznyPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Pliki📁
Biblioteki Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB