342 lines
5.6 KiB
Markdown
342 lines
5.6 KiB
Markdown
# Xterra Overland Power & Monitoring Dashboard
|
|
|
|
## Current Goal
|
|
|
|
Build a custom monitoring and control system for a Nissan Xterra using:
|
|
|
|
- Raspberry Pi Pico 2 W dashboard module
|
|
- ESP32 cargo-area controller
|
|
- 3.5 inch 320x480 SPI capacitive touchscreen
|
|
- DS18B20 temperature sensors
|
|
- UART over CAT5 communication
|
|
- WiFi HTTP backup interface
|
|
|
|
--------------------------------------------------
|
|
|
|
## Current Hardware
|
|
|
|
Ordered / Planned
|
|
|
|
- Raspberry Pi Pico 2 W
|
|
- ESP32 2-channel relay board
|
|
- 3.5 inch 320x480 touchscreen
|
|
- ST7796S display controller
|
|
- FT6336U capacitive touch controller
|
|
- 4x DS18B20 waterproof sensors
|
|
- Active 5V buzzer
|
|
- CAT5 cable
|
|
- Bosch automotive relays
|
|
- 12V to 5V buck converter
|
|
|
|
--------------------------------------------------
|
|
|
|
## Architecture
|
|
|
|
Dashboard Module (Pico)
|
|
|
|
Responsibilities:
|
|
|
|
- Touchscreen UI
|
|
- Audible alarms
|
|
- Dashboard display
|
|
- User interaction
|
|
- Sends commands to ESP32
|
|
- Receives status updates
|
|
|
|
Cargo Controller (ESP32)
|
|
|
|
Responsibilities:
|
|
|
|
- Relay control
|
|
- Sensor collection
|
|
- Configuration storage
|
|
- Future battery monitoring
|
|
- HTTP backup API
|
|
- UART communications
|
|
|
|
--------------------------------------------------
|
|
|
|
## Communications
|
|
|
|
Primary:
|
|
|
|
UART over CAT5
|
|
|
|
Backup:
|
|
|
|
WiFi HTTP API
|
|
|
|
Fallback:
|
|
|
|
RS485 over CAT5 if UART proves unreliable
|
|
|
|
Message format:
|
|
|
|
Newline-delimited JSON
|
|
|
|
Example Request:
|
|
|
|
{"type":"status_request"}
|
|
|
|
Example Response:
|
|
|
|
{"type":"status_response"}
|
|
|
|
--------------------------------------------------
|
|
|
|
## CAT5 Pinout
|
|
|
|
Pair 1
|
|
|
|
Blue +5V
|
|
Blue/White +5V
|
|
|
|
Pair 2
|
|
|
|
Orange Ground
|
|
Orange/White Ground
|
|
|
|
Pair 3
|
|
|
|
Green Pico TX -> ESP32 RX
|
|
Green/White Pico RX <- ESP32 TX
|
|
|
|
Pair 4
|
|
|
|
Brown Ignition Sense
|
|
Brown/White Spare
|
|
|
|
--------------------------------------------------
|
|
|
|
## Power Plan
|
|
|
|
House Battery
|
|
|
|
- Powers ESP32 directly through fused 12V
|
|
- Powers 12V to 5V buck converter
|
|
- Buck converter powers Pico through CAT5
|
|
|
|
Important:
|
|
|
|
- ESP32 relay board never carries fridge load current
|
|
- ESP32 relay board never carries Starlink load current
|
|
- ESP32 relay outputs only trigger Bosch relays
|
|
- High current circuits are separately fused
|
|
|
|
--------------------------------------------------
|
|
|
|
## Temperature Sensors
|
|
|
|
Current Sensors
|
|
|
|
- Fridge Zone 1
|
|
- Fridge Zone 2
|
|
- Rear Seat Area
|
|
- Outside Air
|
|
|
|
No battery bay temperature sensor planned.
|
|
|
|
Reason:
|
|
|
|
Battery temperature will eventually come from the JBD/Xiaoxiang BMS.
|
|
|
|
--------------------------------------------------
|
|
|
|
## Battery Monitoring
|
|
|
|
Future Integration
|
|
|
|
JBD / Xiaoxiang BLE Battery
|
|
|
|
Planned Data:
|
|
|
|
- State of Charge
|
|
- Voltage
|
|
- Current
|
|
- Remaining Ah
|
|
- Runtime Estimate
|
|
- Battery Temperature
|
|
- Cell Voltages
|
|
- Cell Imbalance
|
|
|
|
--------------------------------------------------
|
|
|
|
## Relay Outputs
|
|
|
|
Current
|
|
|
|
- Starlink
|
|
- Fridge
|
|
|
|
Future
|
|
|
|
- Inverter
|
|
- Camp Lights
|
|
|
|
Known GPIO Assignments
|
|
|
|
GPIO16 = Relay Output 1
|
|
GPIO17 = Relay Output 2
|
|
|
|
Relay ON = HIGH
|
|
Relay OFF = LOW
|
|
|
|
--------------------------------------------------
|
|
|
|
## Dashboard Screens
|
|
|
|
Implemented in Simulator
|
|
|
|
- Dashboard
|
|
- Battery
|
|
- Temps
|
|
- Power
|
|
- System
|
|
- Config
|
|
|
|
Dashboard Screen
|
|
|
|
- Battery Percentage
|
|
- Runtime Remaining
|
|
- Fridge Zone 1 Temperature
|
|
- Fridge Zone 2 Temperature
|
|
- Rear Seat Temperature
|
|
- Outside Air Temperature
|
|
- Relay Status
|
|
|
|
--------------------------------------------------
|
|
|
|
## Alarm System
|
|
|
|
Implemented in Simulator
|
|
|
|
- Warning alarms
|
|
- Critical alarms
|
|
- Full screen alarm overlay
|
|
- Acknowledge required
|
|
- Sensor fault alarms
|
|
- Configurable thresholds
|
|
|
|
Alarm Targets
|
|
|
|
- Rear Seat Warning
|
|
- Rear Seat Critical
|
|
- Fridge Zone 1 Warm
|
|
- Fridge Zone 2 Warm
|
|
- Battery Low
|
|
|
|
Future
|
|
|
|
- Dashboard buzzer
|
|
|
|
--------------------------------------------------
|
|
|
|
## Simulator Status
|
|
|
|
Location
|
|
|
|
simulator/
|
|
|
|
Implemented
|
|
|
|
- Flask backend
|
|
- Browser dashboard
|
|
- Pico simulator
|
|
- ESP32 simulator
|
|
- Protocol layer
|
|
- Transport layer
|
|
- Config persistence
|
|
- Sensor fault simulation
|
|
- Ignition simulation
|
|
- Communication failure simulation
|
|
- Latency simulation
|
|
- Packet loss simulation
|
|
|
|
Run Command
|
|
|
|
python3 simulator/app.py
|
|
|
|
--------------------------------------------------
|
|
|
|
## Firmware Status
|
|
|
|
ESP32 Firmware
|
|
|
|
Location
|
|
|
|
firmware/esp32/xterra-controller/
|
|
|
|
Implemented
|
|
|
|
- Relay framework
|
|
- Sensor framework
|
|
- DS18B20 support
|
|
- HTTP status endpoint
|
|
- WiFi AP mode
|
|
- GPIO16 relay
|
|
- GPIO17 relay
|
|
|
|
Next ESP32 Tasks
|
|
|
|
- Verify relay hardware
|
|
- Verify DS18B20 hardware
|
|
- Implement UART communications
|
|
|
|
--------------------------------------------------
|
|
|
|
## Pico Status
|
|
|
|
Not started.
|
|
|
|
Next Tasks
|
|
|
|
Create:
|
|
|
|
firmware/pico/display_test/
|
|
firmware/pico/touch_test/
|
|
firmware/pico/dashboard/
|
|
|
|
Goals
|
|
|
|
1. Verify ST7796S display
|
|
2. Verify FT6336U touch controller
|
|
3. Select graphics library
|
|
4. Build dashboard UI
|
|
5. Implement UART communications
|
|
|
|
--------------------------------------------------
|
|
|
|
## Important Decisions
|
|
|
|
- Touchscreen-only interface
|
|
- Active buzzer mounted in dashboard enclosure
|
|
- UART over CAT5 is primary wired communication
|
|
- WiFi is backup communication
|
|
- RS485 is back-burnered as fallback
|
|
- No persistent logging currently planned
|
|
- Focus on live monitoring, alarms, and control
|
|
- Repository is the source of truth
|
|
- Verify current file contents before generating patches
|
|
|
|
--------------------------------------------------
|
|
|
|
## Repository
|
|
|
|
Repository is the source of truth.
|
|
|
|
Do not assume previous patches were applied successfully.
|
|
|
|
Verify file contents before modifying existing files.
|
|
|
|
--------------------------------------------------
|
|
|
|
## New Chat Handoff
|
|
|
|
When continuing this project in a new chat:
|
|
|
|
Continue my Xterra Overland Power & Monitoring Dashboard project from docs/project-state.md.
|
|
|
|
The repository is the source of truth.
|
|
|
|
Ask me for current file contents before generating patches that modify existing files.
|