Spisu treści:

ESP32 Camera Robot - FPV: 6 kroków
ESP32 Camera Robot - FPV: 6 kroków

Wideo: ESP32 Camera Robot - FPV: 6 kroków

Wideo: ESP32 Camera Robot - FPV: 6 kroków
Wideo: Advanced Mecanum Wheels Robot using Arduino & ESP32 CAM || 4WD Omnidirectional Movement 2024, Lipiec
Anonim
Image
Image
ESP32 Kamera Robot - FPV
ESP32 Kamera Robot - FPV
ESP32 Kamera Robot - FPV
ESP32 Kamera Robot - FPV

Moduł kamery ESP32 to niedrogi i wydajny sterownik PLC. Obejmuje nawet rozpoznawanie twarzy!

Zbudujmy robota First Person Viewpoint, którym jeździsz przez pokładowy interfejs sieciowy!

Ten projekt wykorzystuje moduł Geekcreit ESP32 z kamerą OV2640. Opiera się na module AIThinker.

Istnieje wiele różnych klonów kamer ESP32. Niektóre działają, inne nie. Proponuję użyć tego samego modułu co ja, aby mieć dobrą okazję do odniesienia sukcesu.

Robot działa w następujący sposób.

ESP32 wysyła do sieci adres URL, który przedstawia strumień wideo na żywo z kilkoma polami wyboru do obsługi niektórych funkcji kamery. Odbiera również naciśnięcia klawiszy wysyłane do strony internetowej z klawiatury, które są poleceniami kierunkowymi dla robota. Możesz zbudować osłonę joysticka USB, aby móc sterować robotem za pomocą joysticka, zamiast wpisywać polecenia z klawiatury.

Kiedy ESP32 odbiera naciśnięcia klawiszy, przekazuje te bajty do Arduino Nano, który następnie napędza silniki, aby robot się poruszał.

Ten projekt ma średnio-wysoką trudność. Proszę, nie spiesz się.

Zacznijmy!

Kieszonkowe dzieci

  • Moduł kamery ESP-32 z kamerą OV2640 - polecam produkt Geekcreit
  • Zewnętrzna antena zatrzaskowa dla ESP-32, aby zmaksymalizować siłę sygnału
  • Arduino Nano
  • Arduino Leonardo dla modułu Joystick (potrzebujemy emulacji klawiatury USB dostarczonej przez Leonardo)
  • Ogólny moduł joysticka
  • Układ L293D Quad H-bridge
  • DC-DC Buck Coverer z wyjściem 5V do zasilania ESP32
  • Adapter szeregowy FTDI do programowania ESP32
  • Ogólne podwozie robota z dwoma motoreduktorami - każde podwozie będzie działać. Zalecane są silniki od 3 do 6 V
  • 2 x 7,4V 1300mAh LiPo (lub podobne) do zasilania ESP32 i silników
  • 1 x bateria 9V do zasilania Arduino Nano

Krok 1: Zaprogramuj kamerę ESP32

Zaprogramuj kamerę ESP32
Zaprogramuj kamerę ESP32
Zaprogramuj kamerę ESP32
Zaprogramuj kamerę ESP32

Używając płytki stykowej, podłącz kamerę ESP32 do adaptera FTDI w następujący sposób:

FTDI ESP32

3,3 V ------------ 3,3 V

GND ------------ GND

TX ----------- U0R

Rx ----------- U0T

Dodatkowo podłącz pin IO0 ("oko-oh-zero") do GND. Musisz to zrobić, aby przełączyć ESP32 w tryb programowania.

Rozpakuj plik esp32CameraWebRobotforInstructable.zip.

W tym projekcie są 4 pliki:

esp32CameraWebRobotforInstructable.ino to szkic Arduino.

ap_httpd.cpp to kod, który zarządza serwerem sieciowym i zajmuje się ustawianiem funkcji kamery ze strony internetowej i odbieraniem naciśnięć klawiszy ze strony internetowej.

camera_index.h zawiera kod HTML/JavaScript aplikacji internetowej jako tablice bajtów. Modyfikowanie aplikacji internetowej wykracza daleko poza zakres tego projektu. Dołączę link do późniejszej modyfikacji HTML/JavaScript.

camera_pins.h to plik nagłówkowy dotyczący konfiguracji pinów kamery ESP32.

Aby przełączyć ESP32 w tryb programowania, należy podłączyć IO0 („oko-oh-zero”) do masy.

Uruchom swoje Arduino IDE i przejdź do Tools/Boards/Boards Manager. Wyszukaj esp32 i zainstaluj bibliotekę esp32.

Otwórz projekt w swoim Arduino IDE.

Wpisz ID sieci routera i TWOJE hasło w linie zaznaczone na powyższym obrazku. Zapisz projekt.

Przejdź do menu Narzędzia i dokonaj wyborów, jak pokazano na powyższym obrazku.

Płyta: ESP32 Wrover

Prędkość wysyłania: 115200

Schemat partycji: „Ogromna aplikacja (3 MB bez OTA)”

i wybierz port, do którego podłączony jest adapter FTDI.

Kliknij przycisk „Prześlij”.

Teraz czasami ESP32 nie rozpocznie przesyłania. Przygotuj się więc na naciśnięcie przycisku RESET z tyłu ESP32, gdy zaczniesz widzieć znaki …---… pojawiające się w konsoli podczas przesyłania. Następnie rozpocznie przesyłanie.

Gdy na konsoli zobaczysz komunikat „naciśnij RST”, oznacza to, że przesyłanie jest zakończone.

ODŁĄCZ IO0 od uziemienia. Odłącz linię 3,3V między adapterem FTDI a ESP32.

Kamera ESP32 do poprawnej pracy wymaga dużo prądu. Podłącz zasilacz 5V 2A do pinów 5V i GND na ESP32.

Otwórz monitor szeregowy, ustaw szybkość transmisji na 115200, a następnie obserwuj, jak ESP32 ponownie się uruchamia. W końcu zobaczysz adres URL serwera.

Przejdź do przeglądarki i wprowadź adres URL. Po załadowaniu strony internetowej kliknij przycisk „Rozpocznij transmisję”, a strumień wideo na żywo powinien się rozpocząć. Jeśli klikniesz pole wyboru „Floodlight”, powinna zapalić się dioda wbudowanej lampy błyskowej. Uważaj! JEST JASNE!

Krok 2: Zbuduj robota

Zbuduj robota
Zbuduj robota

Potrzebujesz dwukołowego podwozia robota. Każdy to zrobi. Zmontuj podwozie zgodnie z instrukcjami producenta.

Następnie podłącz robota zgodnie ze schematem. Na razie zostaw połączenia baterii.

L293D służy do sterowania silnikami. Zauważ, że pół-nacięcie na chipie jest W KIERUNKU ESP32.

Zazwyczaj do sterowania dwoma silnikami w Arduino potrzeba 6 pinów.

Ten robot wymaga tylko 4 pinów i nadal działa w pełni.

Piny 1 i 9 są podłączone do źródła 5V Arduino, więc są na stałe WYSOKIE. Okablowanie robota w ten sposób oznacza, że potrzebujemy dwóch mniej pinów na Arduino do sterowania silnikami.

W kierunku do przodu kołki INPUT są ustawione na LOW, a kołki modulacji fali impulsowej silnika są ustawione na wartości od 0 do 255, gdzie 0 oznacza WYŁĄCZENIE, a 255 oznacza maksymalną prędkość.

W odwrotnych kierunkach piny INPUT są ustawione na HIGH, a wartości PWM są odwrócone. 0 oznacza prędkość maksymalną, a 255 oznacza wyłączenie.

Rozpakuj i prześlij szkic ArduinoMotorControl do Arduino Nano.

Krok 3: HEJ! Poczekaj sekundę! Dlaczego potrzebuję Arduino Nano?

Prawdopodobnie myślisz: "Hej! W kamerze ESP32 dostępne są co najmniej 4 piny IO. Dlaczego nie mogę ich użyć do sterowania silnikami?"

No to prawda, na ESP32 są piny w następujący sposób:

IO0 - potrzebne do wprowadzenia ESP32 w tryb programowania

IO2 - dostępne

IO4 - lampa błyskowa LED

IO12, IO13, IO14, IO15, IO16 - dodatkowe piny GPIO.

Jeśli po prostu załadujesz podstawowy szkic do ESP32, aby sterować pinami za pomocą poleceń PWM, działają.

JEDNAK, gdy aktywujesz biblioteki CAMERA w swoich szkicach, te szpilki nie będą już dostępne.

Najłatwiej jest więc użyć Nano do sterowania silnikami przez PWM i wysyłać polecenia z ESP32 za pomocą komunikacji szeregowej przez jeden przewód (ESP32 U0T do Arduino Rx0) i GND. Bardzo prosta.

Krok 4: Podłącz joystick USB (opcjonalnie)

Możesz sterować robotem, wysyłając naciśnięcia klawiszy do strony internetowej w następujący sposób:

8 - Naprzód

9 - Naprzód w prawo

7 - Do przodu w lewo

4 - Obróć w lewo

5 - Zatrzymaj

1 - Odwróć w lewo

2 - Rewers

3 - Odwróć w prawo.

Szkic joysticka USB tłumaczy wejścia joysticka na naciśnięcia klawiszy i wysyła je do interfejsu internetowego, który przekazuje je do Arduino w celu sterowania robotem.

Podłącz joystick do Arduino LEONARDO w następujący sposób:

Joystick Leonarda

5 V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

Otwórz szkic usbJoyStick, wybierz Arduino Leonardo jako płytkę i prześlij go do Leonardo.

Jeśli chcesz to przetestować, po prostu otwórz edytor tekstu na swoim komputerze, kliknij myszą w oknie i zacznij poruszać joystickiem. W oknie powinny pojawić się wartości od 1 do 9

Krok 5: RUSZAJMY

Poświęć trochę czasu i przejrzyj okablowanie, aby upewnić się, że wszystko jest w porządku.

Następnie podłącz baterie w następujący sposób.

1. Włącz kamerę ESP32. Uruchomienie serwera WWW zajmuje kilka sekund.

2. Włącz Arduino Nano.

3. Włącz silniki.

Uruchom przeglądarkę i przejdź do adresu URL dla ESP32.

Kliknij przycisk Rozpocznij transmisję.

Kliknij myszką gdzieś na ekranie przeglądarki, aby ekran stał się teraz fokusem.

Zacznij prowadzić robota za pomocą joysticka (lub klawiatury).

Odkryłem, że domyślny rozmiar klatki działa dobrze w przypadku transmisji wideo na żywo dość szybko przez Wi-Fi. Jednak w miarę zwiększania rozmiaru klatki strumień stanie się bardziej niestabilny, ponieważ próbujesz nadawać większe obrazy.

To wymagający projekt, który daje możliwość rozpoczęcia pracy z transmisją wideo na żywo i kierowaniem robotem przez Wi-Fi. Mam nadzieję, że się podobało!

TERAZ Idź I ZRÓB COŚ WSPANIAŁEGO!

Aktualizacja ze stycznia 2020 r. - Ostatnie zdjęcia pokazują ostateczną wersję robota, wlutowaną na twardo i bezpiecznie zamontowaną do podwozia.

Trzy przełączniki zamontowane z przodu są następujące:

Po lewej - akumulator zasilający silnika

Środek - bateria Arduino

Po prawej - bateria aparatu ESP32

Mógłbym użyć jednej dużej baterii z kilkoma transformatorami buck-boost (używam jednego do ESP32 - jest w prawym dolnym rogu zdjęcia z przodu), ale dla uproszczenia trzymam tylko 3 baterie.

Robot teraz w Access Point

Demonstrowanie tego robota poza domem jest dla mnie kłopotliwe, ponieważ moja szkolna sieć korporacyjna nie pozwala mi na podłączenie do niego serwera WWW robota. Jako rozwiązanie przeprowadziłem badania dotyczące korzystania z funkcji Access Point serwera WWW ESP32. Wymaga to trochę pracy, ale wymaga dość minimalnych zmian w głównym szkicu robota, aby ESP32 nadawał swój własny adres IP. Nie jest tak potężny jak dedykowany koncentrator Wi-Fi o dużej prędkości (czasami zawiesza się, jeśli poruszasz się zbyt szybko), ale działa całkiem dobrze i teraz mogę zademonstrować robota w dowolnym miejscu, bez konieczności podłączania go do sieci! Gdy już uruchomisz robota, spróbuj samodzielnie przekonwertować go na Access Point!

Krok 6: Szczegóły dotyczące modyfikacji kodu HTML/Javascript dla serwera WWW

Nie jest to konieczne, ale miałem kilka próśb.

Dostarczyłem ten dokument Google ze szczegółami, jak używać CyberChef do konwersji tam iz powrotem między HTML/Javascriptem a reprezentacjami tablicy bajtów w pliku camera_index.h.

Zalecana: