Files
overland-controller/firmware/esp32-s3-dashboard

ESP32-S3 Dashboard Firmware

Target Hardware:

  • Waveshare ESP32-S3 Touch LCD 5B
  • 1024x600 display
  • Capacitive touch
  • ESP32-S3
  • 16MB Flash
  • 8MB PSRAM

Current Status:

  • Basic dashboard bring-up sketch created

Upcoming milestones:

  1. Serial bring-up
  2. Display bring-up
  3. Touch validation
  4. WiFi connection
  5. Cargo ESP API integration
  6. LVGL dashboard
  7. CAN integration
  8. Vehicle telemetry

Cargo ESP API Base:

/api/v1

Arduino IDE Note

Arduino IDE expects the primary .ino filename to match the folder name.

Current sketch path:

firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino

Current Bring-Up Screen

The dashboard sketch now replaces the stock Waveshare LVGL demo with a simple Overland Controller boot/status screen.

Current screen shows:

  • Overland Controller title
  • Waveshare ESP32-S3 Touch LCD 5B hardware target
  • 1024x600 display note
  • /api/v1 Cargo API base
  • WiFi placeholder
  • Touch test button

This is intentionally not connected to WiFi or the Cargo ESP yet.

Firmware Structure

Current dashboard firmware files:

  • esp32-s3-dashboard.ino - Main Arduino entry point, LVGL screen, WiFi/API loop
  • dashboard_config.h - Dashboard version, Cargo ESP WiFi credentials, /api/v1 endpoint URLs
  • dashboard_status_model.h - Parsed Cargo ESP status data model
  • lvgl_v8_port.cpp/.h - Waveshare LVGL port support
  • esp_panel_board_custom_conf.h - Waveshare board/display configuration

This refactor keeps behavior unchanged while preparing for later api and ui file splits.

Status Field Filtering

The dashboard uses field-filtered /api/v1/status calls:

  • Fast poll: /api/v1/status?fields=battery,temps,relays
  • Slow poll: /api/v1/status?fields=network,system,config

This keeps the endpoint model simple while reducing payload size, JSON parsing, and UI churn.