Radbuzz is an infotainment and trip computer for electric mopeds and motorcycles, targeting VESC-based controllers. It's built for an ESP32P4 microcontroller, but can also be run on the desktop for testing.
Features:
- OpenStreetMap-based map (currently OpenCycleMap) with different zoom levels, via a GPS module
- Speedometer, both based on VESC data and GPS
- Trip data, with average consumption, distance etc
- Tesla-style power meter bar on the right
- Supports receiving navigation instructions from Google maps via an android app
- Trip log shown on the map, with power indicator in color
- Range estimation shown on the map
- A menu for configuration
- Written in clean and modern C++ (C++23)
Hardware:
- Waveshare 4.3" ESP32P4 Touch
- A rotary encoder
- UART-based GPS (UBLOX Neo-6M / Neo-7M tested)
- A CAN-bus adapter to communicate with the VESC (a Waveshare SN65HVD230 has been used)
- A DC/DC converter to power the ESP32P4 from the 12V outlet on the VESC (a Waveshare DC-DC buck mini module used here)
the pinout for the ESP32P4 can be seen in waveshare_p4_touch_4_3/main.cc
First install the eim tool (the esp-idf installation manager).
eim install -i v6.0.2
source $HOME/.espressif/tools/activate_idf_v6.0.2.sh
npm i lv_font_conv -g
pip3 install jinja2 pyyaml
cmake -GNinja -B radbuzz_esp32p4 -DCMAKE_BUILD_TYPE=Release <path>/radbuzz/esp32/waveshare_p4_touch_4_3
cmake --build radbuzz_esp32p4
Install the same lvgl/Python dependencies as on target:
npm i lv_font_conv -g
pip3 install jinja2 pyyaml
And then:
cmake -GNinja -B radbuzz_qt <path>/radbuzz/qt
cmake --build radbuzz_qt
or
cmake -GNinja -B radbuzz_unittest <path>/radbuzz/test/unittest/
cmake --build radbuzz_unittest
See doc/build_instructions.md for more details on building and flashing the firmware.
Get an API key for thunderforest via https://www.thunderforest.com/docs/apikeys/
Put this key as a string in a /APP_DATA/OSM_KEY.TXT file in the root directory of this project.
A key can also be placed on the SD card, as osm_key.txt, which will be preferred over the build time one if it exists.
Store the SSIDs and passwords in a /APP_DATA/SSID.TXT file on the SD card, with
newlines. E.g.,
MySsid
PasswordForMySsid
OtherSsid
PasswordForOtherSsid








