Tier 2: Wi-Fi Control (ESP32 Racer & PCA9685 Hub)
Niezależne sterowanie bezprzewodowe przez Wi-Fi z podglądem FPV MJPEG i sterownikiem PWM serw.
📋 Zarys Techniczny i Opis Działania
Tier 2 wprowadza komputer pokładowy ESP32 (ESP32-CAM, ESP32-WROVER-DEV lub LilyGO T-SIMCAM S3). Układ łączy się z siecią Wi-Fi i generuje sygnały PWM dla skrętu oraz gazu przy użyciu sterownika PCA9685 (adres I2C 0x40), przesyłając jednocześnie płynny wideo-stream FPV MJPEG do stacji GCS bez stosowania zewnętrznych rezystorów na szynie I2C.
⚙️ Kluczowe Elementy Architektury
- Bezpośrednie Połączenie I2C (No Resistor): Płytka PCA9685 posiada wbudowane rezystory podciągające I2C. Linie SDA i SCL łączy się bezpośrednio z pinami ESP32.
- I2C Pin Remapping: W płytkach ESP32-WROVER-DEV zastosowano dedykowaną reamapację I2C na GPIO 13 (SDA) i GPIO 14 (SCL) ze względu na konflikt szyny kamery OV2640.
- Auto-kalibracja Kwarcu: Połączenie wyjścia PWM 15 z pinem GPIO 12 wymusza sprzętowy autotest częstotliwości kwarcu PCA9685 przy uruchomieniu.
- FreeRTOS Core Isolation: Strumieniowanie wideo MJPEG oddelegowano do osobnego zadania FreeRTOS na Rdzeniu 0 z podwójnym buforowaniem PSRAM (fb_count = 2).
🛠️ Tabela Części i Listy Zakupów (BOM)
| Komponent | Rola w Architekturze | Szacowany Koszt |
|---|---|---|
| ESP32-CAM / WROVER / T-SIMCAM S3 | Mikro kontroler pokładowy z modułem kamery | ~35 - 75 PLN |
| Sterownik PWM PCA9685 (16-ch) | Generator sygnałów PWM 50Hz dla serw i ESC (I2C 0x40) | ~20 - 30 PLN |
| Przetwornica UBEC 5V/3A | Stabilne zasilanie logiki i serwomechanizmów | ~20 PLN |
⚡ Niski Koszt & Łatwy Montaż
Pozwala przekształcić dowolny prosty model RC w pojazd sterowany z komputera PC.
⚡ Bezpośrednie Łącza I2C
Szyna I2C SDA/SCL łączy się bezpośrednio z ESP32 — nie wymaga dokładania rezystorów.
📸 Galeria Schematów i Zdjęć Sprzętowych

Widok podwozia RC Crawlera z kompletem elektroniki (ESP32, PCA9685, ESC, UBEC 5V i LiPo)
🔍 Powiększ
Schemat wyprowadzeń ESP32-WROVER-DEV z dedykowanymi pinami I2C (GPIO 13 SDA, GPIO 14 SCL)
🔍 Powiększ
Zbliżenie na bezpośrednie podłączenie przewodów magistrali I2C (SDA/SCL) ze sterownikiem PCA9685
🔍 Powiększ
Zworka autokalibracji kwarcu PCA9685 (wyjście PWM 15 połączone z pinem GPIO 12)
🔍 Powiększ
Montaż obiektywu kamery OV2640 na przodzie podwozia dla podglądu FPV
🔍 Powiększ
Podłączenie przetwornicy UBEC 5V/3A zasilającej zacisk V+ serwomechanizmów
🔍 Powiększ
Wybór definicji płytki (#define BOARD_WROVER_DEV) w kodzie źródłowym
🔍 Powiększ
Włączenie obsługi pamięci bufora PSRAM (PSRAM: Enabled) w narzędziach Arduino IDE
🔍 Powiększ
Konfiguracja adresu IP i portu połączenia bezprzewodowego w stacji RCSIM GCS
🔍 Powiększ
Płynny strumień wideo FPV MJPEG z telemetrią odebrany w stacji GCS
🔍 Powiększ📺 Poradnik Wideo i Demonstacja

Instrukcja Budowy: Tier 2: Wi-Fi Control (ESP32 Racer & PCA9685 Hub)
🛠️ Konfiguracja Arduino IDE, Biblioteki & Wgrywanie
1. Adres Menedżera Płytek (Boards Manager URL)
Wklej poniższy oficjalny adres w: Plik -> Preferencje (Ctrl + ,) -> Dodatkowe adresy URL do menedżera płytek:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json📦 Pakiet do zainstalowania: esp32 by Espressif Systems (wersja 2.0.x / 3.x) — Menedżer Płytek (Boards Manager)
2. Wymagane Biblioteki (Menedżer Bibliotek - Ctrl + Shift + I)
| Nazwa Biblioteki | Autor | Rola / Zastosowanie |
|---|---|---|
| Adafruit PWM Servo Driver Library | Adafruit | Sterowanie PCA9685 po I2C dla 16 kanałów serw i ESC |
| Adafruit BusIO | Adafruit | Wymagana zależność magistrali I2C/SPI dla bibliotek Adafruit |
| MPU6050_light | rfetick | Lekki i szybki odczyt żyroskopu i akcelerometru IMU |
| TinyGPSPlus (dla V3 GPS) | Mikal Hart | Parsowanie ramek NMEA z modułu GPS (dla wersji V3) |
| esp_camera, WiFi, Wire | Espressif (Built-in) | Wbudowane w rdzeń ESP32 — nie wymagają osobnej instalacji |
3. Ustawienia Menu Narzędzia (Tools Menu Settings)
| Opcja w Narzędzia | Wartość | Uwagi / Dlaczego tak |
|---|---|---|
| Board (Płytka) | "ESP32 Wrover Module" / "AI Thinker ESP32-CAM" | Dla modułów z PSRAM wybierz Wrover Module, dla klasycznych CAM wybierz AI Thinker |
| Partition Scheme | "Huge APP (3MB No OTA/1MB SPIFFS)" | KRYTYCZNE: Domyślna partycja nie pomieści kodu ze stosem Wi-Fi, kamerą i serwerem MJPEG |
| Flash Frequency | 40MHz | Zapewnia stabilną i bezbłędną pracę pamięci SPI Flash |
| Flash Mode | DIO | Standardowy, bezpieczny tryb odczytu pamięci Flash |
| Upload Speed | 115200 (lub 921600) | 115200 eliminuje błędy CRC/timeout na tanich programatorach UART |
| Core Debug Level | None | Wyłącza zbędny narzut diagnostyczny na porcie szeregowym |
| Erase All Flash Before Sketch Upload | Disabled | Standardowe wgrywanie szkicu |
⚠️ Ważne Wskazówki Wgrywania & Zabezpieczenia Sprzętowe
- Tryb Bootloadera (ESP32-CAM bez konwertera): Przed wgraniem połącz zworką pin GPIO 0 (IO0) do masy GND i wciśnij przycisk RST na płytce.
- Uruchomienie programu: Po pomyślnym wgraniu szkicu (Done uploading) ZAWSZE odłącz pin GPIO 0 od GND i ponownie wciśnij przycisk RST.
- Zasilanie Zewnętrzne BEC 5V: ESP32 z włączoną kamerą i Wi-Fi generuje impulsy do 500mA. Podłącz zasilanie z zewnętrznego BEC-a 5V/2A do pinu 5V, unikając słabych linii 3.3V konwertera USB.
- Wspólna Masa (GND): Wszystkie masy (ESP32 GND, PCA9685 GND, BEC GND, ESC GND) MUSZĄ być fizycznie spięte razem.
🚀 Instrukcja Montażu Krok po Kroku
Skonfiguruj Środowisko Arduino IDE
Dodaj adres URL Espressif w Preferencjach, zainstaluj pakiet płytki `esp32` w Menedżerze Płytek oraz wymagane biblioteki (Adafruit PWM Servo Driver, BusIO, MPU6050_light).
Ustaw Narzędzia (Huge APP)
Wybierz płytkę ESP32 Wrover Module lub AI Thinker, ustaw schemat partycji Huge APP (3MB No OTA), Flash Frequency 40MHz, Flash Mode DIO oraz Upload Speed 115200.
Ustaw Dane Wi-Fi i Wgraj Firmware
W pliku `.ino` podaj SSID i hasło sieci Wi-Fi. Zewrzyj GPIO 0 do GND, wciśnij RST, wgraj szkic, a po zakończeniu odłącz GPIO 0 i ponownie zresetuj płytkę.
Podłącz Magistralę I2C i Kalibrację
Połącz ESP32 bezpośrednio z PCA9685 (SDA -> GPIO 13, SCL -> GPIO 14 na WROVER) oraz zworkę autokalibracji (PWM 15 -> GPIO 12). Podłącz wspólne GND i zasilanie UBEC 5V.
Uruchom Strumień w GCS
Odczytaj adres IP z Monitora Szeregowego (115200) i wpisz go w zakładce Konfiguracja GCS, aby odebrać wideo FPV MJPEG i sterować pojazdem.