R.OS VESC display

r.smith

100 µW
Joined
Jun 18, 2022
Messages
8
Location
Nitra
Hi guys, this is my first post on this forum, happy to be part of the community!

So I wanted to share my bachelor project and ask for feedback. I have been working on a graphical display for VESC, something like SVD - Simple Vesc Display. So my first idea was to create a graphical display for my e-bike, before I used a simple segmented LCD display and after some time I wanted something more, so I started looking for easy to use graphical libraries for embedded systems and stumbled upon lvgl. So I started experimenting, my first prototypes were based on ESP32 and ili9488, it was quite a simple and cheap setup, but due to the SPI speed limitation the refresh rate was slow for me. So I switched to the ESP32-4827S043 TFT display module which is amazing for the price, ESP32-S3, good refresh rate, good enough documentation and much more I can only recommend!

So the project is currently being developed on the ESP32-4827S043 TFT module and the planned functions are similar to a Bafang display, so you what you can see on the main screen:
-Speed
-Telemetry
-Vesc temperature
-Motor temperature
-Battery level (percentage or voltage optional)
-Trip (relative distance, elapsed time) - so besides showing the distance travelled and the elapsed time, the main idea here was to have a system that allows logging at a certain point, so we activate this system and the timer starts counting and a mcu starts writing telemetry data intermittently to an sd card. This helps to analyse different Vesc settings on different terrains.
-Odometer

In the settings you can set
-Imperial/metric
-Wheel size
-Display brightness


I've also modified the VescUart lib so that I can edit App conf and Motor conf.
The project is still in development and there's still a lot to be done, I'm just curious what you guys think about it.


PS: The name of the project is an acronym of my name Roli + OS, I thought it would sound good :D

427986842_338513881832828_186302759403403670_n.jpg
428004856_411240111272899_3587240962356619573_n.jpg

Update!
So for the last few weeks I've been working on getting a stable version ready for testing, the current state is that the system can currently communicate with VESC, but what's missing at the moment is converting the data from VESC into visible output on the screen.
It's not a very hard task, but I had to change my system architecture because it wasn't working as it should, now that the new architecture is done, development will be faster. The project currently looks like this:
Link to a video:

432266963_1680012389199495_2718796343734148885_n.jpg

Finally, the 3D-printed case is done and ready for testing :D .

437763063_823330346480352_4822038490903964262_n.jpg439282609_799392951653893_1803970266106509805_n.jpg437158860_1119348005769151_8231217372888258873_n.jpg439357185_975553420253796_4977079359768932506_n.jpg
Alternative simplified screen
 
Last edited:
Do you have a repository link anywhere for those interested in testing it out? (I don't have a VESC, so can't really help with that, but there's plenty of those here that do. )
 
I don't have a repository link yet but I'm sure I'll make one, I just need to patch somethings out and I'll post it around a week. I just wanted to know if there was any interest in a VESC graphical display for possible collaboration and development. :D
 
Look forward to seeing the repository for this as gotta be the smartest looking display I've seen for a vesc. Looks perfect with perhaps only one exception, Bluetooth uart forwarding. As I have my bbshd's pas sensor on one of my uarts and a nRF51 module on the other.
Not sure if your familiar with the rescue app developed on an esp32 for a vesc but sure the repository would contain the needed code as that forwards the uart to Bluetooth.
 
Thanks for all the answers!
I just checked out the rESCue app, what a fantastic project, just what I needed. I can get it to work with the display not a problem, what is currently making me the biggest problem is time due to the fact it's my last year at uni so I've got a ton of things to do and also I'm working as an intern so probably the repository posting will be a bit delayed but I'm working on it to get it to you guys, I'm glad there is interest in my project.
 
Thanks for all the answers!
I just checked out the rESCue app, what a fantastic project, just what I needed. I can get it to work with the display not a problem, what is currently making me the biggest problem is time due to the fact it's my last year at uni so I've got a ton of things to do and also I'm working as an intern so probably the repository posting will be a bit delayed but I'm working on it to get it to you guys, I'm glad there is interest in my project.

Glad it came it handy. 👍

I look forward to seeing more when you get the chance, I'm fairly new to using a vesc with my bbshd but been really impressed and while the vesc tool is handy my old bbshd display is the only thing I miss from the old controller and yours is easily the best combination of informative and visually appealing of the vesc display projects I've seen.
 
Wow this is exactly what I have been looking for. If you need a first customer, let me know!

The display looks great, and it will be perfect for my electric dirt bike. The DeVega display is way too small for a motorcycle, but has its place for E-skate. Vesc controllers are becoming much more popular with mid size evs. Lots of people modify surrons and other similar models and many are already using vesc. I think you will sell a good number of these.
 
Wow this is exactly what I have been looking for. If you need a first customer, let me know!

The display looks great, and it will be perfect for my electric dirt bike. The DeVega display is way too small for a motorcycle, but has its place for E-skate. Vesc controllers are becoming much more popular with mid size evs. Lots of people modify surrons and other similar models and many are already using vesc. I think you will sell a good number of these.
First of all thank you for your reply! It would be wonderful :D the project is still in development, but not much is missing for a stable version the current issues which I'm still dealing with is how to design the casing for display if you have any ideas or what type of mount you need I'm willing to implement it.
 
Any updates on the repo? I'm currently in the UI dev stage for a similar VESC display based on the Esp32-s3
Currently the project is still in development and it's also my bachelor project, so it's kinda useless to share it now, but if you want to collaborate I'd happy to help.
 
First of all thank you for your reply! It would be wonderful :D the project is still in development, but not much is missing for a stable version the current issues which I'm still dealing with is how to design the casing for display if you have any ideas or what type of mount you need I'm willing to implement it.

i think most people that want to use a display like yours on an Ebike would be mounting it onto 22mm Dia handlebars.

im not fantastic at 3D design, might know enough to help you on that front.
 
Currently the project is still in development and it's also my bachelor project, so it's kinda useless to share it now, but if you want to collaborate I'd happy to help.
thats completely understandable, Your Uni Studies/Life comes first :)

im still in the early days of learning LVGL, ive been using Squareline Studio to do most of the UI design Legwork.

the Hardware im using is an ESP32-S3 DevKitC-1 and a 7 inch SSD1963 800x480 LCD, using the TFT_eSPI library and the arduino Framework. im also using the VescUart Library but editing it to i can do App and Motor Conf like you have is beyond my current Knowledge.

so far the scope of my project that i have working is a Simple Vesc Display with a fancier ui for speed, impVoltage, Motor current, DutyCycle and motor Temperature, The Ready light only shows when there is active communication with the VESC.

the numbers shown, High/Low beam and cruise lights are just placeholders for now

433906709_767887515032681_6656939282337298751_n.jpg
 
thats completely understandable, Your Uni Studies/Life comes first :)

im still in the early days of learning LVGL, ive been using Squareline Studio to do most of the UI design Legwork.

the Hardware im using is an ESP32-S3 DevKitC-1 and a 7 inch SSD1963 800x480 LCD, using the TFT_eSPI library and the arduino Framework. im also using the VescUart Library but editing it to i can do App and Motor Conf like you have is beyond my current Knowledge.

so far the scope of my project that i have working is a Simple Vesc Display with a fancier ui for speed, impVoltage, Motor current, DutyCycle and motor Temperature, The Ready light only shows when there is active communication with the VESC.

the numbers shown, High/Low beam and cruise lights are just placeholders for now

View attachment 350471
Looks really nice :)! If you are interested I can share the VescUart lib with my implementation so you can try it out, it's not public yet because it hasn't been properly tested out and also
I don't know if I should do a pull request to the original lib or leave it as a different lib because with the increased buffer size I don't think it would be a good idea to use it on the smaller Arduinos.
 
I'd deffinately be interested in taking a look as one of the features I want to implement is being able to do configurations from the display directly.

I'd say that having it as a separate lib would probably be a good idea because of the buffer size, the more powerful arduino's that have mcu's with more flash/ram would be fine with your library but the smaller ATMega based ones would need to use the standard VecUart lib
 
Last edited:
thats completely understandable, Your Uni Studies/Life comes first :)

im still in the early days of learning LVGL, ive been using Squareline Studio to do most of the UI design Legwork.

the Hardware im using is an ESP32-S3 DevKitC-1 and a 7 inch SSD1963 800x480 LCD, using the TFT_eSPI library and the arduino Framework. im also using the VescUart Library but editing it to i can do App and Motor Conf like you have is beyond my current Knowledge.

so far the scope of my project that i have working is a Simple Vesc Display with a fancier ui for speed, impVoltage, Motor current, DutyCycle and motor Temperature, The Ready light only shows when there is active communication with the VESC.

the numbers shown, High/Low beam and cruise lights are just placeholders for now

View attachment 350471

Is Squareline Studio fairly straight forward for lgvl design? As I'm wanting to design a custom page to load with vesc tool on an old Android I'm gonna temporarily use as a display. I'm wanting to design one that includes a gauge for battery amps top as how it's displayed currently on vesc tool it's too small to see well on the move.
 
Is Squareline Studio fairly straight forward for lgvl design? As I'm wanting to design a custom page to load with vesc tool on an old Android I'm gonna temporarily use as a display. I'm wanting to design one that includes a gauge for battery amps top as how it's displayed currently on vesc tool it's too small to see well on the move.
I personally do not recommend it, the main problem with it is quite restrictive and can be expensive, I would recommend using the LVGL simulator, it can be more time consuming because you have to code everything, but in the end I think it is more understandable what you are doing, It's just my opinion.
and one more thing, lvgl and Squareline have parted ways see:LVGL ends its collaboration with SquareLine Studio so it would be better to look for alternative solutions.
 
Last edited:
Is Squareline Studio fairly straight forward for lgvl design? As I'm wanting to design a custom page to load with vesc tool on an old Android I'm gonna temporarily use as a display. I'm wanting to design one that includes a gauge for battery amps top as how it's displayed currently on vesc tool it's too small to see well on the move.

definately not, as R.Smith said, its extremely restrictive on what you can do with it, especially when using the free version, and doesnt support all of the LVGL commands, youll end up having to learn how to code it manually anyway because of that.
 
If it is of any use...

A few years back I muddled with installing a heads up display on my truck (I have one on my bmw and rather like it) at the time the gear that was out was kinda meh, but there is aandroid auto based unit now that is running on something open source and if you can get something to work as a translator between your kit and an obs head, it should be easy past that to set it up.

I normally here would provide helpful links, but only stupidity and the lasst 3 cups of coffee have me here.
 
Nice, I just saw this thread :) I am never in the bicycle section.
Do you plan to have inputs? I mean like a 3 speed switch, or a way to change profiles with a button and things like that.
A switch to turn off the motor without having to turn off the controller would also be interesting.
Will it communicate on can bus?
 
Nice, I just saw this thread :) I am never in the bicycle section.
Do you plan to have inputs? I mean like a 3 speed switch, or a way to change profiles with a button and things like that.
A switch to turn off the motor without having to turn off the controller would also be interesting.
Will it communicate on can bus?
Thanks :), yes definitely, but I have to think about how I want to implement it. I want to minimize the buttons as much as possible, so the setup should be clean. The CAN bus will definitely be a part of it. I recently teamed up with 3shullmotors so we are working together to make it happen. I could not believe that there would be such a demand for my project.
 
I think the user can add the switches and buttons they want for extra functions, as long as there are avalible inputs that are easy to setup. There are some avalible displays but not many that I know of, and from what I have seen they dont really have any inputs (or outputs). Something that the vescs are lacking also, so it would be very welcome on the display.
 
Back
Top