- docs/: rewrite AGENTS.md, wiring-diagram.md (SAUL-TEE arch); update SALTYLAB.md, FACE_LCD_ANIMATION.md, board-viz.html, SALTYLAB-DETAILED refs - cad/: dimensions.scad FC params → ESP32-S3 BALANCE params - chassis/: ASSEMBLY.md, BOM.md, ip54_BOM.md, *.scad — FC_MOUNT_SPACING/ FC_PITCH → TBD ESP32-S3; Drone FC → MCU mount throughout - CLAUDE.md, TEAM.md: project desc → SAUL-TEE; hardware table → ESP32-S3/VESC - USB_CDC_BUG.md: marked ARCHIVED (legacy STM32 era) - AUTONOMOUS_ARMING.md: USB CDC → inter-board UART (ESP32-S3 BALANCE) - projects/saltybot/SLAM-SETUP-PLAN.md: FC/STM32F722 → BALANCE/CAN - jetson/docs/pinout.md, power-budget.md, README.md: STM32 bridge → CAN bridge - jetson/config/RECOVERY_BEHAVIORS.md: FC+Hoverboard → BALANCE+VESC - jetson/ros2_ws: stm32_protocol.py → esp32_protocol.py, stm32_cmd_node.py → esp32_cmd_node.py, mamba_protocol.py → balance_protocol.py; can_bridge_node imports updated - scripts/flash_firmware.py: DFU/STM32 → pio run -t upload - src/ include/: ARCHIVED headers added (legacy code preserved) - test/: ARCHIVED notices; STM32F722 comments marked LEGACY - ui/diagnostics_panel.html: Board/STM32 → ESP32-S3 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8.5 KiB
8.5 KiB
SAUL-TEE Wiring Reference
Authoritative reference: docs/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 |