# SAUL-TEE Wiring Reference **Authoritative reference:** [`docs/SAUL-TEE-SYSTEM-REFERENCE.md`](SAUL-TEE-SYSTEM-REFERENCE.md) This document is a quick-access wiring summary. For pin assignments, CAN frame formats, RC channel mapping, and serial commands, see the full reference doc. --- ## System Block Diagram ``` ┌──────────────────────────────────────────────────────────┐ │ JETSON ORIN NANO SUPER │ │ (Top plate, 25W) │ │ │ │ USB-A ──── CANable 2.0 USB↔CAN (can0, 500 kbps) │ │ USB-A ──── RealSense D435i (USB 3.1) │ │ USB-A ──── RPLIDAR A1M8 (CP2102, 115200) │ │ USB-C ──── SIM7600A 4G/LTE modem │ │ CSI-A ─── 2× IMX219 cameras (front + left) │ │ CSI-B ─── 2× IMX219 cameras (rear + right) │ │ 40-pin ── ReSpeaker 2-Mic HAT │ └──────────────────────┬───────────────────────────────────┘ │ USB-A → CANable 2.0 │ can0, 500 kbps ┌────────────────────────────────┴──────────────────────────────────┐ │ CAN BUS (CANH / CANL / GND) │ │ 120 Ω ─┤ ├─ 120 Ω │ └───────────┬──────────────────────────────────────────┬────────────┘ │ │ ┌───────────┴────────────┐ ┌─────────────┴──────────┐ │ ESP32-S3 BALANCE │ │ VESC left (ID 68) │ │ Waveshare Touch LCD │ │ VESC right (ID 56) │ │ 1.28 — CH343 USB │ │ FSESC 6.7 Pro Mini │ │ │ │ Dual │ │ QMI8658 IMU (I2C) │ └──────┬─────────────────┘ │ SN65HVD230 (CAN) │ │ Phase wires │ │ ┌────────┴─────────────┐ │ UART ──────────────┐ │ │ Hub motors (4×) │ └────────────────────────┘ │ FL / FR / RL / RR │ ↕ 460800 baud binary │ └──────────────────────┘ inter-board proto │ ┌───────────────────────┘ │ ESP32-S3 IO (bare board) │ JTAG USB │ │ UART0 ── TBS Crossfire RX (CRSF @ 420000) │ UART2 ── ELRS receiver (CRSF failover @ 420000) │ PWM ──── 4× BTS7960 H-bridge motor drivers │ I2C ──── NFC + Barometer + ToF (shared bus) │ RMT ──── WS2812B LED strip │ GPIO ─── Horn / Headlight / Fan / Buzzer └────────────────────────────────────────────── ``` --- ## Wire-by-Wire Connections ### 1. Orin ↔ CAN Bus (via CANable 2.0) | From | To | Notes | |------|----|-------| | Orin USB-A | CANable 2.0 USB | `/dev/canable0` → `can0` | | CANable CANH | CAN bus CANH | Twisted pair | | CANable CANL | CAN bus CANL | Twisted pair | | CANable GND | CAN GND | Common | Setup: `ip link set can0 up type can bitrate 500000` ### 2. ESP32-S3 BALANCE ↔ CAN Bus | Signal | GPIO | CAN bus | |--------|------|---------| | CAN TX | TBD | → SN65HVD230 D pin | | CAN RX | TBD | ← SN65HVD230 R pin | > TBD pins — confirm in `esp32/balance/src/config.h` ### 3. ESP32-S3 BALANCE ↔ ESP32-S3 IO (Inter-Board UART) | Signal | BALANCE GPIO | IO GPIO | Baud | |--------|-------------|---------|------| | TX | TBD | TBD (RX) | 460800 | | RX | TBD (RX) | TBD (TX) | 460800 | | GND | GND | GND | — | Frame: `[0xAA][LEN][TYPE][PAYLOAD…][CRC8]` — see `esp32/shared/protocol.h` ### 4. ESP32-S3 IO ↔ TBS Crossfire RX (UART0) | IO GPIO | Signal | Crossfire pin | Notes | |---------|--------|---------------|-------| | GPIO43 | TX | RX | CRSF telemetry to TX module | | GPIO44 | RX | TX | CRSF RC frames in | | GND | GND | GND | | | 5V | — | VCC | Power from 5V bus | Baud: 420000 (CRSF). Failsafe: disarm after 300 ms without frame. ### 5. ESP32-S3 IO ↔ ELRS Receiver (UART2, failover) | IO GPIO | Signal | ELRS pin | |---------|--------|----------| | TBD | TX | RX | | TBD | RX | TX | | GND | GND | GND | | 5V | — | VCC | Baud: 420000 (CRSF). Activates automatically if Crossfire link lost >300 ms. ### 6. ESP32-S3 IO ↔ BTS7960 Motor Drivers (4×) TBD GPIO assignments — see `esp32/io/src/config.h`. | Signal | Per-driver | Notes | |--------|-----------|-------| | RPWM | GPIO TBD | Forward PWM | | LPWM | GPIO TBD | Reverse PWM | | R_EN | GPIO TBD | Enable H | | L_EN | GPIO TBD | Enable H | | Motor+ / Motor− | Hub motor | 36V via B+ / B− on BTS7960 | ### 7. ESP32-S3 IO I2C Sensors | Device | I2C Address | Notes | |--------|-------------|-------| | NFC (PN532) | 0x24 | NFC tag read/write | | Barometer (BMP280/388) | 0x76 | Altitude + temp | | ToF range (VL53L0X) | 0x29 | Proximity/obstacle | > SDA / SCL GPIOs TBD — confirm in `esp32/io/src/config.h` ### 8. Power Distribution ``` 36V BATTERY │ ├── VESC left (36V) ─── Front-left + Rear-left hub motors ├── VESC right (36V) ─── Front-right + Rear-right hub motors ├── BTS7960 boards (B+/B−) — 36V motor power │ ├── DC-DC 12V ──── Fan / Headlight / Accessories │ └── DC-DC 5V ─┬── Jetson Orin (USB-C PD) ├── ESP32-S3 BALANCE (USB 5V) ├── ESP32-S3 IO (USB 5V) ├── TBS Crossfire RX (5V) ├── ELRS RX (5V) ├── WS2812B strip (5V) ├── RPLIDAR A1M8 (5V via USB) └── Sensors (3.3V from ESP32-IO LDO) ``` --- ## Orin USB Peripherals | Device | Interface | Node | |--------|-----------|------| | CANable 2.0 | USB-A | `can0` (after `ip link set can0 up type can bitrate 500000`) | | RealSense D435i | USB 3.1 | `/dev/bus/usb/...` | | RPLIDAR A1M8 | USB-UART | `/dev/rplidar` | | SIM7600A 4G | USB | `/dev/ttyUSB0–2` | | ESP32-S3 BALANCE debug | USB-A (CH343) | `/dev/esp32-balance` | | ESP32-S3 IO debug | USB-A (JTAG/CDC) | `/dev/esp32-io` | --- ## ReSpeaker 2-Mic HAT (Orin 40-pin) | Orin Pin | Signal | Function | |----------|--------|----------| | Pin 12 (GPIO 18) | I2S BCLK | Audio bit clock | | Pin 35 (GPIO 19) | I2S LRCLK | Audio left/right clock | | Pin 38 (GPIO 20) | I2S DIN | Audio data in (from mics) | | Pin 40 (GPIO 21) | I2S DOUT | Audio data out (to speaker) | | Pin 3 (GPIO 2) | I2C SDA | WM8960 codec (i2c-7) | | Pin 5 (GPIO 3) | I2C SCL | WM8960 codec (i2c-7) | | Pin 2, 4 | 5V | Power | | Pin 6, 9 | GND | Ground | Codec: Wolfson WM8960 (0x1A). Use: voice commands, wake word, audio feedback. --- ## SIM7600A 4G/LTE HAT (Orin USB) | Connection | Detail | |-----------|--------| | Interface | USB (micro-B on HAT → USB-A on Orin) | | Device nodes | `/dev/ttyUSB0` (AT), `/dev/ttyUSB1` (PPP/data), `/dev/ttyUSB2` (GPS NMEA) | | Power | 5V from USB (peak 2A during TX) | | SIM | Nano-SIM slot |