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 |