TRAKTOR

Typ_projektu
Arduino
Zdjecie główne
Krótki opis projektu

Projekt „Traktor” to mobilny robot z kamerą, sterowany mikrokontrolerem ESP32-CAM. Działa w dwóch trybach: manualnym, z podglądem na żywo i sterowaniem z poziomu przeglądarki w smartfonie, oraz autonomicznym. W trybie inteligentnym robot analizuje obraz w czasie rzeczywistym, samodzielnie śledzi czerwone obiekty, podjeżdża do nich i podnosi je za pomocą ruchomego ramienia z łyżką.

Niezbędne elementy

Aby zrealizować projekt, niezbędne są:

Elektronika i mechanika:

  • Gotowy robot mobilny z podwoziem i czterema silnikami DC.

  • Mikrokontroler ESP32-CAM (z modułem kamery).

  • Serwomechanizm (podłączony do pinu 15 ESP32).

  • Łyżka koparki (montowana z przodu pojazdu).

  • Opcjonalnie: moduły czujników linii.

Narzędzia montażowe i przewody:

  • Elementy usztywniające konstrukcję: opaski zaciskowe (trytytki) i mocna taśma dwustronna.

  • Zestaw przewodów połączeniowych typu Dupont.

Do programowania i sterowania:

  • Konwerter USB-UART (np. oparty na układzie FTDI) z przełącznikiem logiki na 3.3V.

  • Komputer z oprogramowaniem Visual Studio Code i PlatformIO IDE (lub Arduino IDE).

  • Smartfon z modułem Wi-Fi i przeglądarką internetową (jako kontroler).

Opis projektu

1. Działanie projektu i zastosowane algorytmy

Robot Traktor to mobilny pojazd sterowany przez mikrokontroler ESP32-CAM ze zintegrowanym modułem kamery. Komunikacja na linii użytkownik–robot odbywa się poprzez responsywny interfejs webowy, udostępniany bezpośrednio przez mikrokontroler. Po uruchomieniu urządzenie tworzy własny punkt dostępowy Wi-Fi o nazwie SIC_Robot_SHARKY.

Interfejs wyświetlany w przeglądarce internetowej (np. na smartfonie) nie wymaga instalacji dodatkowych aplikacji. Zawiera on podgląd obrazu z kamery na żywo oraz zestaw przycisków sterujących.

Pojazd może pracować w dwóch głównych trybach:

Tryb manualny

Naciśnięcie przycisków w interfejsie generuje asynchroniczne żądania HTTP GET. Pozwala to na:

  • Kierowanie pojazdem we wszystkich kierunkach.

  • Płynną regulację prędkości silników (przy użyciu sygnałów PWM).

  • Sterowanie położeniem ramienia roboczego zakończonego łyżką.

Tryb autonomicznej detekcji i śledzenia

Po aktywacji tego trybu ESP32-CAM analizuje obraz z kamery w czasie rzeczywistym, poszukując obiektów w kolorze czerwonym. Proces ten składa się z kilku etapów:

  1. Przetwarzanie obrazu: Klatki pobierane w rozdzielczości QVGA są konwertowane w locie z formatu JPEG do surowego formatu RGB565.

  2. Filtracja barwna: Algorytm analizuje obraz piksel po pikselu, wyodrębniając składowe R, G i B. Wykrywane są tylko te obszary, w których czerwień przekracza wyznaczony próg jasności i jednoznacznie dominuje nad resztą kanałów.

  3. Redukcja szumów i błędów: Program odrzuca pojedyncze piksele oraz małe skupiska (poniżej 25 pikseli), eliminując zakłócenia świetlne i szum matrycy. Pomijane są również dolne partie obrazu, aby wykluczyć sprzętowe zniekształcenia obiektywu.

  4. Obliczanie trajektorii (sprzężenie zwrotne): Po wykryciu czerwonej plamy algorytm oblicza jej środek ciężkości. Wyznaczony w ten sposób błąd położenia względem środka kadru steruje ruchem robota. Silniki otrzymują krótkie impulsy, korygując tor jazdy tak, aby cel znajdował się w centrum.

  5. Interakcja: System szacuje odległość na podstawie rozmiaru plamy barwnej. Gdy obiekt jest wystarczająco blisko (liczba czerwonych pikseli przekracza zadany próg), robot zatrzymuje się i uruchamia sekwencję serwomechanizmu: opuszczenie łyżki, zagarnięcie ładunku i jego podniesienie.

  6. Tryb skanowania: W przypadku utraty celu z pola widzenia, pojazd zaczyna powoli obracać się wokół własnej osi krok po kroku, aż obiekt ponownie pojawi się w kadrze.

2. Napotkane problemy i ich rozwiązania

W procesie projektowania i testowania robota zidentyfikowano trzy główne wyzwania techniczne, które wymagały usprawnień.

  • Problem 1: Niestabilna detekcja koloru w zmiennym oświetleniu
    Początkowy algorytm był zbyt czuły i reagował na szumy oraz ciepłe barwy otoczenia (np. drewnianą podłogę).
    Rozwiązanie: Zaostrzono warunki progowe – wartość kanału czerwonego (R) musi teraz przekraczać 50, być co najmniej dwukrotnie wyższa od kanału zielonego (G) i wyraźnie wyższa od niebieskiego (B). Wykorzystano dodatkową pamięć PSRAM oraz sprzętowe podbicie saturacji matrycy.

  • Problem 2: Ograniczenia wydajnościowe układu ESP32-CAM
    Jednoczesna obsługa kamery, analizy matematycznej, serwera Wi-Fi i sterowania silnikami powodowała zawieszanie procesora, a ramki pobierane w trakcie obrotu robota były rozmyte, co fałszowało odczyty barw.
    Rozwiązanie: Wprowadzono ruch krokowy z systemem mikrosekundowych opóźnień, pozwalających matrycy na stabilizację po każdym impulsie silników. Zoptymalizowano bufor kamery (odrzucanie przestarzałych klatek) oraz poprawiono wydajność bitową obliczeń pod kątem architektury Little-Endian. Dzięki temu ESP32 płynnie przetwarza obraz bez konieczności użycia zewnętrznego serwera.

  • Problem 3: Mechaniczne mocowanie osprzętu
    Gotowe podwozie nie posiadało otworów montażowych dla serwomechanizmu i łyżki, przez co ramię odginało się pod obciążeniem.
    Rozwiązanie: Zastosowano techniki szybkiego prototypowania – użyto mocnej taśmy montażowej oraz opasek zaciskowych. Konstrukcja zyskała odpowiednią sztywność, niezbędną do poprawnego wykonywania zadań w fazie testów.

3. Instrukcja odtworzenia projektu

Projekt można łatwo odtworzyć w warunkach pracowni szkolnej lub domowego warsztatu, wykorzystując zmontowanego robota oraz udostępniony kod źródłowy.

Krok 1: Przygotowanie środowiska
Zainstaluj na komputerze edytor Visual Studio Code oraz rozszerzenie PlatformIO IDE (alternatywnie: Arduino IDE). PlatformIO jest zalecane ze względu na automatyczne pobieranie kompilatorów i bibliotek (w tym wymaganego rdzenia w wersji 2.0.14).

Krok 2: Pobranie kodu
Pobierz repozytorium projektu z GitHuba, rozpakuj archiwum i otwórz folder w wybranym środowisku programistycznym.

Krok 3: Podłączenie mikrokontrolera
Podłącz moduł ESP32-CAM do komputera za pomocą konwertera USB-UART (np. FTDI).

  • Uwaga: Zasilanie pinu 5V na płytce ESP32 wymaga napięcia 5V, ale logika sygnałowa konwertera (RX/TX) musi być ustawiona na 3.3V (inaczej układ może ulec uszkodzeniu).

  • Połącz masę (GND) obu układów.

  • Skrzyżuj linie komunikacyjne: pin TX konwertera połącz z RX modułu, a RX konwertera z TX modułu.

Krok 4: Wgrywanie programu
Aby wprowadzić ESP32 w tryb programowania, zewrzyj pin GPIO 0 z masą (GND) przed podłączeniem zasilania. Kliknij „Upload” w środowisku IDE. Po zakończeniu procesu odłącz zworkę z pinu GPIO 0 i zrestartuj układ.

Krok 5: Uruchomienie
Włącz robota. Na smartfonie wyszukaj i połącz się z siecią Wi-Fi o nazwie SIC_Robot_SHARKY. Otwórz przeglądarkę i wpisz adres 192.168.4.1. Otworzy się panel sterowania robota.

Zdjęcia
kod programu

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600
build_src_filter = -<*> +<examples/Esp32-cam-RC-Car/> +<examples/serwo.cpp>
build_flags = 
    -D BOARD_HAS_PSRAM
lib_deps =
    madhephaestus/ESP32Servo
Pliki_projektu
Youtube
Tagi
#traktor #esp #druk3d #koparka #projekt #kamera