2021-04-03 Master branch will be unstable for a while, use release 0.9.1 until it stabilises if you don't want to test the new BLE code
Complete rewrite added, only buildable with PlatformIO please see https://github.com/Pickelhaupt/EUC-Dash-ESP32/tree/master/src for more info
Stand-alone Bluetooth dashboard for electric unicycles (EUCs) for ESP32. You can build it with both the Arduino IDE and with PlatformIO. For instructions on how to setup PlatformIO and building the project see the README.md file in the src directory.
The latest version will no longer build using the Arduino IDE, I have migrated to PlatformIO and will not update the arduino versions.
This pre-release version of a dashboard for electric unicycles. It currently only supports KingSong wheels and ttgo t-watch 2020. There are probably still some bugs.
I got a lot of help from reading the code from the WheelLogAndroid project, it spared me from having to reverse engineer the protocol. I used My-TTGO-Watch by Dirk Brosswick as a template to implement multiple screen support, settings and a lot of other functions: https://github.com/sharandac/My-TTGO-Watch
Reads BLE notifications from the electric unicycle and display data on the ESP32 display
- Reads KS BLE notifications
- Full and simple dashboard
- Clock display
- Power saving implemented, will go to sleep when wheel is disconnected and display is off. Not optimised when connected yet. Currently the battery lasts for:
- Around 3 days not connected
- Around 6 hours when continuously connected
- Around 1 day of standby and 4-5 hours of continuous riding
- Wake up from accelerometer, button and double tap
- long press on dashboard to toggle lights
- Settings screen:
- clock
- dashboard
- BLE
- system utilities
- battery and power
- display (contrast, wake time, rotation)
- OTA upgrades
- wifi
- Current speed
- Voltage
- Current
- Total Distance traveled
- Distance traveled since power on
- Time since power on
- Power
- Battery percentage remaining
- Speed alarm settings
- Tiltback (Max speed) setting
- Max speed since power on
- Cooling fan status
- Ride mode setting
- EUC temperature
- Current speed
- Max speed
- Wheel battery level
- Wheel max battery
- Wheel min battery
- Current
- Max current
- Max regen breaking current
- Temperature -- full dash only
- Max temperature -- full dash only
- Trip meter -- full dash only
- Current time -- full dash only
- Watch battery level -- full dash only
Dashboard functions:
Dashboard alerts:
- Time and date screen
- Settings screen
- trip info screen
- wheel info screen
Screen layout:
Map of all settings screens (new version, some things still missing):
Only supports Kingsong wheels at the moment. it autodetects the following models:
- KS14M/D/S
- KS16/KS16/S/X/XS
- KS18A/S/L/XL
- KS-S18
Gotway support is being actively worked on.
Some new screenshots, colours are a bit off though
Libraries are downloaded automatically by PlatformIO when compiling for the first time.
- TTGO T-Watch Library; v1.4.1+
- AsyncTCP@>=1.1.1
- ArduinoJson@>=6.15.2
- I have not verified if the http upgrade feature works, also the published firmware is out of date.
- Support for more wheel brands (Gotway/Veteran, Inmotion, Ninebot planned)
- Autodetection of wheel make and model --done, only detects KS at this time
Requires PlatformIO and driver for the USB chip in the t-watch. for more info see: https://github.com/Pickelhaupt/EUC-Dash-ESP32/tree/master/src
If the "connect to wheel" setting on the main setup screen is on it should connect automatically when it finds a compatible wheel when the screen is on, it will not connect when screen is off as the device is in sleep mode. However there is currently no function implemented to make it possible to choose what wheel it will connect to of there are more than one compatible wheel in range, it will simply connect to the first one it finds.