203 lines
4.4 KiB
Markdown
203 lines
4.4 KiB
Markdown
# Hardware
|
|
|
|
## Cargo ESP32
|
|
|
|
The cargo ESP32 is the controller and source of truth.
|
|
|
|
Responsibilities:
|
|
|
|
- BMS BLE
|
|
- Relays
|
|
- DS18B20 temps
|
|
- WebUI
|
|
- HTTP API
|
|
- AP mode
|
|
- Alarms
|
|
|
|
Relay board outputs are trigger/control outputs only.
|
|
|
|
High-current loads must use properly fused automotive relays or contactors.
|
|
|
|
Do not directly route fridge, Starlink, inverter, lights, or other major loads through the ESP32 relay board.
|
|
|
|
## Dashboard
|
|
|
|
Target:
|
|
|
|
Waveshare ESP32-S3-Touch-LCD-5
|
|
|
|
Reasons:
|
|
|
|
- ESP32-S3 is mature enough for LVGL dashboard
|
|
- 5 inch 800x480 display gives enough UI space
|
|
- WiFi connects to Cargo ESP32 AP
|
|
- CAN interface with onboard TJA1051 supports future OBD-II vehicle data
|
|
- microSD allows future logging
|
|
- 7-36V VIN supports vehicle power
|
|
|
|
## Dashboard Power
|
|
|
|
Preferred:
|
|
|
|
ACC switched 12V
|
|
-> fuse
|
|
-> Waveshare VIN
|
|
|
|
Do not use OBD-II pin 16 for permanent dashboard power.
|
|
|
|
## CAN / OBD-II
|
|
|
|
OBD-II pins:
|
|
|
|
Pin 6 = CAN-H
|
|
Pin 14 = CAN-L
|
|
Pin 5 = Signal Ground, optional if needed
|
|
Pin 16 = Battery 12V, do not use for permanent display power
|
|
|
|
Waveshare CAN termination must remain disabled on vehicle CAN.
|
|
|
|
Preferred CAN wiring:
|
|
|
|
OBD pin 6 -> Waveshare CAN-H
|
|
OBD pin 14 -> Waveshare CAN-L
|
|
|
|
Optional:
|
|
|
|
OBD pin 5 -> board/system ground
|
|
|
|
Use twisted pair. Cat5e/Cat6 twisted pair is acceptable for short vehicle runs.
|
|
|
|
Avoid Scotchlok/vampire taps on vehicle CAN. Prefer OBD splitter or proper automotive splice.
|
|
|
|
## Vehicle Data
|
|
|
|
Coolant temp:
|
|
|
|
Standard OBD-II PID 0105
|
|
|
|
RPM:
|
|
|
|
Standard OBD-II PID 010C
|
|
|
|
Vehicle speed:
|
|
|
|
Standard OBD-II PID 010D
|
|
|
|
## Transmission Temperature Sender
|
|
|
|
Preferred over Nissan-specific trans-temp CAN reverse engineering.
|
|
|
|
Candidate:
|
|
|
|
Autometer 2258 / 2259 style sender
|
|
|
|
Resistance table:
|
|
|
|
100F = 1123 ohms
|
|
120F = 708 ohms
|
|
140F = 460 ohms
|
|
150F = 374 ohms
|
|
170F = 253 ohms
|
|
190F = 175 ohms
|
|
210F = 123 ohms
|
|
230F = 89 ohms
|
|
250F = 65 ohms
|
|
280F = 42 ohms
|
|
300F = 32 ohms
|
|
320F = 25 ohms
|
|
340F = 20 ohms
|
|
|
|
Implementation:
|
|
|
|
- Sender to ADC voltage divider, or
|
|
- Sender to ADS1115 over I2C if no suitable exposed ADC exists
|
|
|
|
Use lookup-table interpolation.
|
|
|
|
|
|
## Cargo OLED service display
|
|
|
|
Planned optional hardware:
|
|
|
|
- 0.96 inch SSD1306 OLED
|
|
- 128x64 resolution
|
|
- I2C interface
|
|
- Typical address: 0x3C
|
|
- Suggested initial pins:
|
|
- SDA: GPIO 21
|
|
- SCL: GPIO 22
|
|
- VCC: 3.3V
|
|
- GND: common ground
|
|
|
|
Purpose:
|
|
|
|
- Show first-boot AP setup credentials without requiring Serial Monitor.
|
|
- Show AP SSID, password, and IP address during setup/recovery.
|
|
- Show quick service status:
|
|
- battery SOC
|
|
- voltage/current
|
|
- relay states
|
|
- WiFi/IP
|
|
- active alarms
|
|
|
|
Firmware support is optional and disabled by default with OLED_ENABLED set to 0. Enable only after the OLED libraries are installed and the display is wired.
|
|
|
|
|
|
## Current communications and GPIO decision
|
|
|
|
Active dashboard communication is WiFi/HTTP using `/api/v1`.
|
|
|
|
The old Pico/dashboard UART path is retired from active hardware use. USB Serial remains available for development, debug, and manual configuration from a computer.
|
|
|
|
Current Cargo ESP32 GPIO plan:
|
|
|
|
- GPIO 16: Relay 1 trigger output
|
|
- GPIO 17: Relay 2 trigger output
|
|
- GPIO 4: DS18B20 OneWire temperature bus
|
|
- GPIO 34: Ignition sense input
|
|
- GPIO 21: SSD1306 OLED I2C SDA
|
|
- GPIO 22: SSD1306 OLED I2C SCL
|
|
- GPIO 25: OLED setup/status button
|
|
|
|
## Automotive Load-Switching Layer
|
|
|
|
Current v1 load-control assumption:
|
|
|
|
Cargo ESP32
|
|
-> control outputs
|
|
-> automotive load-switching layer
|
|
-> fused loads
|
|
|
|
Expected fused loads:
|
|
|
|
- Fridge
|
|
- Starlink
|
|
- Lights
|
|
- Spare output
|
|
|
|
The ESP32 relay board is treated as a trigger/control layer only. Major load current must be handled by properly fused automotive wiring, relays, contactors, smart high-side switches, or another suitable fused distribution module.
|
|
|
|
The exact load-switching hardware is not finalized yet.
|
|
|
|
Candidate options:
|
|
|
|
- Bosch-style automotive relays
|
|
- WUPP-style fused relay/distribution module
|
|
- Smart high-side switching
|
|
- Future custom PCB
|
|
|
|
## Selected Dashboard Hardware
|
|
|
|
The selected dashboard hardware target is the Waveshare ESP32-S3 Touch LCD 5B.
|
|
|
|
Key hardware notes:
|
|
|
|
- 5-inch touchscreen display
|
|
- 1024x600 resolution
|
|
- ESP32-S3 based
|
|
- Capacitive touch
|
|
- Native WiFi
|
|
- Integrated CAN transceiver available for future vehicle integration
|
|
|
|
This is the active dashboard platform for the project. The previous Pico dashboard implementation has been archived and is reference-only.
|