DOCS/Kompendium Wiedzy
|

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 35 - 75 PLN ($9 - $18 USD)
Sterownik PCA9685 (16-ch PWM) Generator sygnałów PWM 50Hz dla serw i ESC (Adres I2C 0x40) 20 - 30 PLN ($5 - $8 USD)
Przetwornica UBEC 5V/3A Czyste zasilanie logiki ESP32 i serwomechanizmów 20 PLN ($5 USD)
SUMA: 75 - 125 PLN ($19 - $31 USD)

⚡ 3. Połączenia Elektryczne I2C, Zasilanie i Autokalibracja

  1. 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).
  2. 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.
  3. 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.

Widok kompletnego podwozia RC z montażem ESP32 Rysunek 2.9: Kompletny montaż podwozia RC Crawlera z modułem ESP32, sterownikiem PCA9685, regulatorem ESC i pakietem zasilającym LiPo.

Schemat wyprowadzeń ESP32-WROVER-DEV Rysunek 2.10: Schemat wyprowadzeń ESP32-WROVER-DEV z dedykowanymi pinami I2C (SDA: GPIO 13, SCL: GPIO 14) i pinem kalibracji (GPIO 12).

Szczegół połączenia I2C ze sterownikiem PCA9685 Rysunek 2.11: Bezpośrednie połączenie przewodów magistrali I2C (SDA/SCL) oraz zasilania logiki 3.3V ze sterownikiem PCA9685.

Zworka autokalibracji kwarcu PCA9685 Rysunek 2.12: Zworka sprzętowa łącząca wyjście PWM 15 z pinem GPIO 12 do automatycznej kalibracji częstotliwości zegara.

Montaż kamery FPV OV2640 na przodzie modelu Rysunek 2.13: Obiektyw szerokokątny kamery OV2640 zamontowany na przednim zderzaku podwozia RC.

Podłączenie przetwornicy UBEC 5V/3A 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

  1. W Arduino IDE otwórz Plik -> Preferencje (Ctrl + ,).
  2. 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
    
  3. 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, Wire są 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)

  1. Wejście w tryb programowania: Połącz zworką pin GPIO 0 (IO0) z masą GND i wciśnij przycisk RST na płytce.
  2. W Arduino IDE kliknij Wgraj (Upload).
  3. Uruchomienie programu: Po zakończeniu wgrywania (Done uploading) odłącz pin GPIO 0 od GND i ponownie wciśnij przycisk RST.
  4. 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).
  5. Po wgraniu kodu odczytaj przydzielony adres IP z Monitora Szeregowego (115200 baud) i wpisz go w zakładce Konfiguracja stacji RCSIM GCS.

Wybór definicji płytki w kodzie Rysunek 2.15: Wybór definicji płytki sprzętowej w środowisku Arduino IDE.

Włączenie pamięci bufora PSRAM Rysunek 2.16: Konfiguracja opcji PSRAM: Enabled w menu Narzędzia.

Konfiguracja adresu IP w RCSIM GCS Rysunek 2.17: Wpisanie adresu IP mikrokontrolera ESP32 w konfiguracji stacji naziemnej GCS.

Aktywny podgląd strumienia FPV MJPEG w GCS Rysunek 2.18: Płynny obraz z kamery FPV MJPEG wyświetlany w stacji GCS z nałożoną telemetrią.