Rozdział 2: Hardware, Okablowanie i Schematy Połączeń
Rozdział ten zawiera kompletny, zweryfikowany z kodem źródłowym podręcznik montażu elektroniki pokładowej, magistrali I2C oraz zasilania.
🔌 1. Zrozumieć Magistralę I2C (Proste Wyjaśnienie dla Każdego)
Magistrala I2C (Inter-Integrated Circuit) to cyfrowa sieć łącząca Raspberry Pi lub ESP32 z czujnikami (IMU) i sterownikiem serw (PCA9685) za pomocą tylko dwóch kabli sygnałowych:
- SDA (Serial Data – Dane): Linia, po której przesyłane są cyfrowe rozkazy (np. "skręć koła o 15 stopni", "odczytaj kąt pochylenia").
- SCL (Serial Clock – Zegar): Linia taktująca, która ustala tempo przesyłania bitów (zwykle 100 kHz lub 400 kHz).
Jak to działa w praktyce?
Wszystkie urządzenia I2C łączy się równolegle do tej samej szyny (jedno za drugim). Każde urządzenie ma wbudowany unikalny adres sprzętowy:
0x40– 16-kanałowy sterownik PWM PCA9685 (serwa i gaz)0x68– Czujnik inercyjny IMU MPU6050 / ICM-42688-P (żyroskop i przeciążenia)0x42lub0x43– Monitor zasilania INA219 (napięcie i prąd baterii)0x29– Opcjonalny laserowy czujnik odległości VL53L1X ToF
[ Raspberry Pi 5 ] ─── Pin 3 (SDA: GPIO 2) ──────┬─────────────────┬──────────────┐
─── Pin 5 (SCL: GPIO 3) ──────┼──────────┐ │ │
─── Pin 1 (3.3V Logika) ──────┼────┐ │ │ │
─── Pin 6 (Masa - GND) ───┐ │ │ │ │ │
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
[ PCA9685 PWM ] [ Czujnik IMU 6050 ] [ INA219 Power ]
(GND,VCC,SDA,SCL) (GND,VCC,SDA,SCL) (GND,VCC,SDA,SCL)
[!CAUTION] KRYTYCZNA ZASADA NAPIĘCIA I2C: Linie I2C na Raspberry Pi 5 oraz ESP32 pracują w standardzie 3.3V. Zasilanie układów scalonych czujników (pin VCC) należy ZAWSZE podłączać do szyny 3.3V, a NIE do 5V! Podanie napięcia 5V na linie SDA/SCL trwale uszkodzi procesor główny.
⚡ 2. Architektura Zasilania: Złota Zasada Wspólnej Masy i Unikanie Brownoutów
Najczęstszą przyczyną problemów w modelach RC (restarty komputera, drżenie kół, zawieszanie systemu) są błędy zasilania i brak wspólnej masy.
┌────────────────────────┐
│ Pakiet Główny LiPo │ (np. 2S 7.4V lub 3S 11.1V)
└───────────┬────────────┘
│
┌─────────┴──────────────────────────────┐
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ Przetwornica UBEC 5V │ (5A) │ Regulator ESC Silnika│ (lub osobny BEC 5-6V)
└──────────┬───────────┘ └──────────┬───────────┘
│ │
(Czyste Zasilanie 5V) (Mocowe Zasilanie Serw)
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ Raspberry Pi 5 │ │ PCA9685 (Zacisk V+)│
└──────────┬───────────┘ └──────────┬───────────┘
│ │
└──────────► WSPÓLNA MASA (GND) ◄─────┘ (Kluczowe!)
Dlaczego serwa NIE MOGĄ być zasilane z pinu 5V Raspberry Pi? (Problem Brownout)
- Typowe serwo modelarskie przy szybkim ruchu pobiera w impulsie od 1.0A do nawet 3.0A prądu.
- Szyna 5V w Raspberry Pi / ESP32 nie posiada wydajności do zasilania silników serwomechanizmów.
- Pobór prądu przez serwo powoduje natychmiastowy spadek napięcia poniżej 4.6V (tzw. Brownout), co skutkuje nagłym restartem systemu Linux w trakcie jazdy.
- Prawidłowe rozwiązanie: Sterownik PCA9685 ma dwa osobne wejścia zasilania:
- VCC (Logika): Podłącz do pinu 3.3V w Raspberry Pi (pobór kilku miliamperów).
- V+ (Zacisk śrubowy dla serw): Podłącz do zewnętrznego BEC 5V-6V (minimum 3A-5A) lub szyny BEC z regulatora ESC.
Złota Zasada Wspólnej Masy (Common GND)
Wszystkie komponenty pojazdu (bateria, UBEC, regulator ESC, serwa, Raspberry Pi, ESP32, PCA9685 i sensory) MUSZĄ mieć połączone linie masy (GND).
- Masa to punkt odniesienia (0 Voltów) dla wszystkich sygnałów cyfrowych.
- Jeśli masa serwa nie jest połączona z masą procesora, sygnał sterujący PWM nie ma punktu odniesienia i serwo będzie szarpać lub nie zareaguje wcale.
📋 3. Tabela Połączeń "Kabel do Kabla" (Pinout Matrix)
Poniższa tabela stanowi ostateczną ściągawkę montażową dla każdego wariantu sprzętowego:
| Płytka / Moduł | Pin Źródłowy | Pin Docelowy | Typ Sygnału / Napięcie | Uwagi i Bezpieczeństwo |
|---|---|---|---|---|
| Tier 1 (RP2350) | Pin D8 (GPIO 2) | Jack 3.5mm Tip (Grot) | Sygnał PPM (3.3V) | Połączenie bezpośrednie (bez rezystorów) |
| Tier 1 (RP2350) | Pin GND | Jack 3.5mm Sleeve (Masa) | Masa 0V | Wspólna masa z aparaturą |
| Tier 1 (Arduino) | Pin D10 | Jack 3.5mm Tip (Grot) | Sygnał PPM (5V/3.3V) | Połączenie bezpośrednie z portem DSC |
| Tier 2 (ESP32-WROVER) | GPIO 13 | PCA9685 SDA | I2C Data (3.3V) | Przesunięcie pinów (unika konfliktu z kamerą) |
| Tier 2 (ESP32-WROVER) | GPIO 14 | PCA9685 SCL | I2C Clock (3.3V) | Przesunięcie pinów (unika konfliktu z kamerą) |
| Tier 2 (ESP32) | GPIO 12 | PCA9685 PWM 15 | Autokalibracja | Zworka kalibracji częstotliwości kwarcu |
| Tier 4 (RPi 5) | Pin 3 (GPIO 2) | PCA9685 & IMU SDA | I2C Data (3.3V) | Szyna I2C-1 wspólna dla wszystkich czujników |
| Tier 4 (RPi 5) | Pin 5 (GPIO 3) | PCA9685 & IMU SCL | I2C Clock (3.3V) | Szyna I2C-1 wspólna dla wszystkich czujników |
| Tier 4 (RPi 5) | Pin 1 (3.3V) | PCA9685 VCC & IMU VCC | Zasilanie Logiki 3.3V | Tylko zasilanie układów scalonych! |
| Tier 4 (RPi 5) | Pin 11 (GPIO 17) | PCA9685 PWM 15 | Autokalibracja | Pomiar oscylatora zegara PCA9685 |
| Tier 4 (RPi 5) | Pin 13 (GPIO 27) | PCA9685 OE | Output Enable (Failsafe) | Stan LOW = aktywne wyjścia, HIGH = odcięcie |
| Zasilanie Serw | Zewnętrzny BEC 5V-6V | PCA9685 Zacisk V+ | Zasilanie Mocowe 5V-6V | Zasila wyłącznie silniki serw i ESC |
| Wspólna Masa | RPi GND / BEC GND | PCA9685 GND & IMU GND | Wspólna Masa (0V) | Wszystkie masy połączone razem |
2.0 Tier 0: Zero Hardware (Audio PPM – Bezpośrednia Karta Dźwiękowa do Portu DSC)
Profil Tier 0 to najbardziej przystępny, bezsprzętowy punkt wejścia w ekosystem RCSIM. Nie wymaga zakupu ani programowania żadnego mikrokontrolera (Arduino, RP2350).
🎯 1. Cel i Zasada Działania Tier 0
Stacja naziemna RCSIM GCS syntetyzuje ciągłą falę modulacji impulsowo-pozycyjnej (PPM) bezpośrednio w czasie rzeczywistym jako próbki PCM audio (float32) z karty dźwiękowej komputera (48 kHz / 96 kHz / 192 kHz).
Sygnał o napięciu ~1.0–2.5V Pk-Pk wyprowadzony z gniazda słuchawkowego komputera PC (Jack 3.5mm) podawany jest bezpośrednio do portu trenera (DSC) aparatury modelarskiej RC (np. FlySky FS-i6, RadioMaster MT12 / Boxer / Pocket, FrSky, Futaba). Przerzutnik Schmitta w aparaturze wykrywa zbocza impulsu i przesyła sterowanie bezprzewodowo do seryjnego odbiornika w modelu:
[Kierownica USB na PC] ──► [RCSIM GCS Generator PCM (192 kHz)] ──► [Karta Dźwiękowa / USB DAC]
│ (Kabel Jack 3.5mm)
▼
[Aparatura RC (Port Trenera DSC)] ──(RF 2.4GHz / ELRS / FlySky)──► [Odbiornik RC] ──► [Serwo & ESC]
⚡ 2. Rozwiązania Architektoniczne Tier 0 (Gotcha 14)
- Podwójne Buforowanie na Granicach Ramek (Frame-Boundary Double Buffering): Pętla sterowania stacji naziemnej (100 Hz) nigdy nie nadpisuje bufora audio w trakcie trwania ramki PPM. Aktualizacje są zatrzaskiwane wyłącznie na początku nowej ramki (
pos == 0), eliminując rwanie fazy i zawieszanie dekodera w systemie EdgeTX. - Ciągła Fala Nośna przed Uzbrojeniem (No Carrier Loss): Przed uzbrojeniem (ARM) generator audio stale nadaje ramkę neutralną (
[1500 µs]*8). Zapobiega to przechodzeniu aparatury w stan alarmowyTrainer signal losti wyzwalaniu niepożądanych wibracji. - Szerokość Impulsu Synchronizacji (500–600 µs): Standardowe szpilki 300 µs bywają tłumione przez filtry dolnoprzepustowe RC na wejściu DSC aparatury. Szerokość 500–600 µs zapewnia pewne ładowanie pojemności wejściowej i niezawodne dekodowanie zboczy.
- Duplikacja Kanałów Stereo Tip + Ring: Sygnał PPM jest generowany symetrycznie na lewym i prawym kanale wyjścia audio, zapewniając 100% zgodności elektrycznej z kablami mono i stereo.
- Rekomendacja Kart USB DAC: Zewnętrzne karty USB DAC (np. adaptery Corsair, Creative) gwarantują stabilne napięcie wyjściowe 2.0–2.5V Pk-Pk oraz brak zakłóceń szumowych z płyty głównej PC.