2.2 Tier 2: Wi-Fi Control (ESP32 Racer & PCA9685 Hub)
Niniejszy rozdział zawiera pełny, zweryfikowany opis architektury bezprzewodowej Tier 2 w systemie RCSIM.
🎯 1. Cel i Architektura Tier 2
Tier 2 (Wi-Fi Control) to niezależny podsystem pokładowy sterowany przez sieć Wi-Fi. Wykorzystuje mikrokontrolery ESP32 (ESP32-CAM, ESP32-WROVER-DEV lub LilyGO T-SIMCAM S3) połączone z 16-kanałowym sterownikiem PWM PCA9685 (adres I2C 0x40).
ESP32 odbiera komendy sterowania po protokole UDP z GCS, przelicza impulsy PWM dla serwa i ESC oraz równolegle strumieniuje płynny obraz FPV MJPEG (http://<ESP32_IP>:81/stream).
[Stacja GCS na PC] ──(Komendy UDP Wi-Fi 50Hz)──► [ESP32 Pokład]
│ (Magistrala I2C Bez Rezystorów)
▼
[Sterownik PCA9685 (0x40)] ──► [ESC & Serwo]
🛠️ 2. Zestawienie Sprzętowe (BOM Tier 2)
| Element | Rola w systemie | Szacowany Koszt |
|---|---|---|
| ESP32-CAM / ESP32-WROVER / LilyGO T-SIMCAM S3 | Mikrokomputer pokładowy z modułem kamery FPV | |
| Sterownik PCA9685 (16-ch PWM) | Generator sygnałów PWM 50Hz dla serw i ESC (Adres I2C 0x40) | |
| Przetwornica UBEC 5V/3A | Czyste zasilanie logiki ESP32 i serwomechanizmów | |
| SUMA: |
⚡ 3. Połączenia Elektryczne I2C, Zasilanie i Autokalibracja
- Magistrala I2C (ESP32-WROVER-DEV): Płytka PCA9685 posiada fabryczne rezystory podciągające na szynie. Piny GPIO 13 (SDA) oraz GPIO 14 (SCL) mikrokontrolera łączymy bezpośrednio z pinami SDA i SCL sterownika PCA9685 (rozwiązuje to konflikt szyny I2C ze zintegrowaną kamerą OV2640).
- Auto-kalibracja Kwarcu (Jumper): Wewnętrzny generator 25 MHz w układach PCA9685 posiada rozrzut fabryczny do kilku procent. Połącz zworką wyjście PWM 15 sterownika PCA9685 z pinem GPIO 12 ESP32. Przy starcie oprogramowanie mierzy dokładną częstotliwość kwarcu i koryguje dzielnik timera, gwarantując idealny impuls środkowy 1500µs.
- Zasilanie UBEC 5V: Zasilanie serw podłączamy z przetwornicy UBEC 5V/3A do zielonego zacisku śrubowego
V+na PCA9685, a masęGNDłączymy wspólnie z ESP32.
Rysunek 2.9: Kompletny montaż podwozia RC Crawlera z modułem ESP32, sterownikiem PCA9685, regulatorem ESC i pakietem zasilającym LiPo.
Rysunek 2.10: Schemat wyprowadzeń ESP32-WROVER-DEV z dedykowanymi pinami I2C (SDA: GPIO 13, SCL: GPIO 14) i pinem kalibracji (GPIO 12).
Rysunek 2.11: Bezpośrednie połączenie przewodów magistrali I2C (SDA/SCL) oraz zasilania logiki 3.3V ze sterownikiem PCA9685.
Rysunek 2.12: Zworka sprzętowa łącząca wyjście PWM 15 z pinem GPIO 12 do automatycznej kalibracji częstotliwości zegara.
Rysunek 2.13: Obiektyw szerokokątny kamery OV2640 zamontowany na przednim zderzaku podwozia RC.
Rysunek 2.14: Zewnętrzna przetwornica UBEC 5V/3A zasilająca szynę mocy serwomechanizmów (V+).
💻 4. Konfiguracja Oprogramowania, Arduino IDE i Strumienia FPV w GCS
🔹 A. Dodanie Obsługi ESP32 w Arduino IDE
- W Arduino IDE otwórz Plik -> Preferencje (
Ctrl + ,). - W polu Dodatkowe adresy URL do menedżera płytek wklej oficjalny adres:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Przejdź do Menedżera Płytek (Narzędzia -> Płytka -> Menedżer płytek...), wyszukaj
esp32(Espressif Systems) i kliknij Zainstaluj (zalecana wersja 2.0.x / 3.x).
🔹 B. Wymagane Biblioteki (Menedżer Bibliotek - Ctrl + Shift + I)
- Adafruit PWM Servo Driver Library (Adafruit) — sterowanie I2C modułem PCA9685.
- Adafruit BusIO (Adafruit) — wymagana zależność szyny I2C/SPI dla bibliotek Adafruit.
- MPU6050_light (rfetick) — lekka obsługa żyroskopu i akcelerometru IMU.
- TinyGPSPlus (Mikal Hart) — parsowanie NMEA z GPS (dla wersji V3).
- Uwaga: Biblioteki
esp_camera,WiFi,WiFiUdp,Wiresą wbudowane w rdzeń ESP32.
🔹 C. Ustawienia Menu Narzędzia (Tools Menu Settings)
Przed kompilacją ustaw parametry w menu Narzędzia według poniższej tabeli:
| Parametr w menu Narzędzia | Wartość | Opis / Dlaczego tak |
|---|---|---|
| Board (Płytka) | "ESP32 Wrover Module" / "AI Thinker ESP32-CAM" |
Wybierz Wrover Module dla płytek z PSRAM (Freenove/WROVER) |
| Partition Scheme | "Huge APP (3MB No OTA/1MB SPIFFS)" |
KRYTYCZNE! Wymagane ze względu na rozmiar stosu Wi-Fi, MJPEG i kamery |
| PSRAM | "Enabled" |
Włącza buforowanie klatek w pamięci PSRAM dla płynnego FPV |
| Flash Frequency | 40MHz |
Stabilna praca pamięci SPI Flash |
| Flash Mode | DIO |
Bezpieczny tryb odczytu pamięci Flash |
| Core Debug Level | None |
Brak zbędnego narzutu diagnostycznego na UART |
| Erase All Flash Before Sketch Upload | Disabled |
Standardowe wgrywanie |
| Upload Speed | 115200 (lub 921600) |
115200 eliminuje błędy CRC/timeout na tanich programatorach UART |
🔹 D. Procedura Wgrywania (Tryb Bootloadera ESP32-CAM)
- Wejście w tryb programowania: Połącz zworką pin
GPIO 0(IO0) z masąGNDi wciśnij przyciskRSTna płytce. - W Arduino IDE kliknij Wgraj (Upload).
- Uruchomienie programu: Po zakończeniu wgrywania (Done uploading) odłącz pin
GPIO 0odGNDi ponownie wciśnij przyciskRST. - Zasilanie: Cały układ z kamerą i Wi-Fi wymaga stabilnego zasilania 5V z zewnętrznego BEC-a 5V/2A-3A (unikać zasilania z cienkich linii 3.3V programatora USB).
- Po wgraniu kodu odczytaj przydzielony adres IP z Monitora Szeregowego (115200 baud) i wpisz go w zakładce Konfiguracja stacji RCSIM GCS.
Rysunek 2.15: Wybór definicji płytki sprzętowej w środowisku Arduino IDE.
Rysunek 2.16: Konfiguracja opcji PSRAM: Enabled w menu Narzędzia.
Rysunek 2.17: Wpisanie adresu IP mikrokontrolera ESP32 w konfiguracji stacji naziemnej GCS.
Rysunek 2.18: Płynny obraz z kamery FPV MJPEG wyświetlany w stacji GCS z nałożoną telemetrią.