• Hello ES! We could use some help to get us past the finish line on building the new knowledgebase for the forum.
    Can you donate? Please see our fundraising page. Thank you!

Open-source VESC dashboard on ESP32-P4 (4.3" touch) — bonus wireless Android Auto on the same screen

payalne

New here
Joined
Jan 20, 2025
Messages
9
Location
Krakow
Hey everyone,

Wanted to share what I've been hacking on for the last few months — figured the ebike-technical crowd is exactly the right audience.
It's an open-source 4.3" touch dashboard for any VESC-powered build — e-bike, e-skate, scooter, DIY EV, doesn't matter. Plugs into the VESC CAN bus and shows the usual stuff in real time: battery %, speed, voltage, current, motor / FET temperatures, odometer, trip, range, cruise indicator.

hero.jpg

Hardware is a Waveshare ESP32-P4-WIFI6-Touch-LCD-4.3 (≈$45 from Waveshare) + a TJA1051 CAN transceiver + a small 12V→5V DC-DC. That's it for the dashboard. ESP32-P4 has plenty of muscle to do this without breaking a sweat — 800×480 native resolution, fluid LVGL UI, runs cool.

The dashboard also acts as a BLE bridge to VESC Tool (NUS protocol), so you can plug into the controller for tuning right from your phone / laptop without an extra Bluetooth module. Bridge stays alive even while the dashboard is running, so no swapping modes back and forth.

Cruise control + speed profiles via LISP
There's also a small VESC LISP script (`lisp/main.lisp`) that adds:
- Cruise control — press the PPM RX-pin button once to lock current speed, throttle/brake releases it. The dashboard reads cruise state over the LISP-poll channel and lights an indicator.
- Three speed profiles — 25 / 40 / 60 km/h presets (configurable), switched with the PPM TX-pin button. Different beep tones confirm each profile.
Both run on the VESC's built-in LISP runtime — no extra hardware, just load via VESC Tool → Lisp Scripting → Upload.

The bonus — wireless Android Auto on the same screen
This is where it gets a bit unusual. The same device also speaks the native Android Auto Wireless protocol. Pair your phone over Classic BT once and Google Maps / Spotify / Cycleway / whatever you use projects onto the same 4.3" screen.

- No phone app required (no Wireless Helper, no developer-mode tricks)
- Three-finger tap on the screen toggles between VESC dashboard and AA
- Phone auto-reconnects on every power-on after first pairing

aa-bonus.jpgphoto_2026-05-22 00.01.34.jpeg

ESP32-P4 / on-board C6 don't have Classic BT radio, so the AA path needs a separate ESP32-WROOM-32 module wired to the P4 over UART. Either solder a bare module to the board — the P4 flashes it itself over UART — or hook up a D1 Mini ESP32 dev board if you'd rather not solder. If you don't care about AA, leave the WROOM off; the dashboard runs standalone.
H.264 decode is software (esp_h264 on the P4) so the projection runs at roughly 10–15 fps native 800×480. Smooth enough for navigation; obviously not a Carplay-grade experience. Touch is forwarded to the phone, UI beeps work, navigation and music both play through the phone speakers (no audio sink on the head unit).

Works today:
- VESC RT data + LISP poll over CAN
- BLE NUS bridge for VESC Tool
- Settings UI with persisted prefs, in-PSRAM log viewer
- HTTP OTA + on-screen progress
- AA wireless projection + auto-reconnect to last phone
- Three-finger tap to switch between modes
- Embedded co-firmwares for ESP32-C6 (WiFi) and the BT agent — bundled into the main binary, auto-flashed over SDIO / UART

Not done:
- 3D-printed enclosure design (STL,STEP files coming)
- Media / Speech audio channels (no sink, dropped intentionally)
- Native nav rendering without AA

Source / license
GitHub: GitHub - payalneg/esp32p4-android-auto
Licensed under GPL-3.0. Repo has build/flash instructions, the LISP script with comments, and a roadmap.
Happy to answer questions, take pull requests, and especially keen to hear if anyone else is running it on something other than a bike — would love to see how it behaves on an EUC or a heavier scooter. CAN bitrate / controller ID are both configurable, so any VESC firmware should drop in.
Cheers!
 
it's really a good project, glad you share with us. Looking at github the wiring image isn't load. I'm looking at Ali if can find the display to make mine. This is the one i find if you can say it look line your's ESP32. BTW thank you.Screenshot_1.png
 
Some videos for community:

Four new features are on the way:

- Android notification bridge — phone notifications (calls, messages, navigation) now show up directly on the head unit screen.
- On-device VESC configurator — tune your controller right from the display, no VESC Tool connection needed.
- Trip statistics — automatic tracking of your ride data (distance, time, speed and more), right on the dashboard.
- Now Playing — see the currently playing track right on the screen.

All four features are in the final stages — release is just around the corner.
 
Also worth mentioning — I'm planning to add tire pressure sensor (TPMS) support and a rear radar to warn about traffic approaching from behind.
 
Back
Top