Files
xterra-overland-dashboard/docs/project-state.md
T
2026-06-03 01:51:06 -06:00

5.6 KiB

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.