How gxyloj/jbd_bms_esp32_dashboard works
This is an ESP32 JBD BMS vehicle dashboard. Its main workflow reads battery telemetry over BLE and speed/course from a GNSS module, then updates a TFT dashboard; an optional WiFi access point serves a browser dashboard and logs. The README documents satellite-signal details, cell voltages and a desktop UI simulator. Source excerpts are partial, so the graph shows documented capabilities but omits uncertain internal wiring beyond the visible main-loop and web-server behavior.
Main entry points: main.cpp Firmware loop · web_server.cpp AP HTTP service · gps_driver.cpp GNSS driver · bms_ble.cpp JBD BLE driver
Components 14
Runtime orchestration
- Firmware loop
src/main.cpp
Telemetry acquisition
- JBD BLE driver
src/bms_ble.cpp - BMS snapshot
src/bms_ble.cpp - GNSS driver
src/gps_driver.cpp - Ring log buffer
src/log_buffer.cpp
Dashboard presentation
- LVGL dashboard
src/ui.cpp - Speed images
src/img/speed_10.c - Dashboard icons
src/icon/c/bms_icons_20.c
Remote monitoring
- AP HTTP service
src/web_server.cpp
Other components
- Rider
- JBD BMS
- GNSS module
- TFT display
- Browser dashboard
Connections 22
- Firmware loop → GNSS driver: initializes
- Firmware loop → GNSS driver: checks watchdog
- Firmware loop → JBD BLE driver: starts BLE
- Firmware loop → LVGL dashboard: builds dashboard
- Firmware loop → LVGL dashboard: updates speed/course
- JBD BLE driver → JBD BMS: queries over BLE
- JBD BMS → JBD BLE driver: notifies frames
- JBD BLE driver → BMS snapshot: updates snapshot
- JBD BLE driver → Ring log buffer: writes events
- GNSS module → GNSS driver: sends NMEA
- GNSS driver → Ring log buffer: records GPS data
- GNSS driver → Firmware loop: provides speed/course
- LVGL dashboard → Speed images: selects speed image
- LVGL dashboard → Dashboard icons: uses icons
- LVGL dashboard → TFT display: renders dashboard
- Firmware loop → AP HTTP service: starts AP service
- AP HTTP service → BMS snapshot: reads telemetry
- AP HTTP service → GNSS driver: reads GPS data
- AP HTTP service → Ring log buffer: reads log snapshots
- Browser dashboard → AP HTTP service: requests dashboard/API
- AP HTTP service → Browser dashboard: serves HTML and JSON
- Rider → TFT display: views dashboard