Fiido Q1S 2.5kW: VESC + modular DIY OpenSource electronics and software

I was getting false buttons clicks on the display buttons - I added low pass filters and now they work well as expected. This is the final schematic:

1692960375316.png
 
I think it’s just personal preference. Some people might prefer coasting.
The original motor do coast every time I decelerates, and then I feel out of control - to have control again, I need to keep increasing the speed or to brake. The original brakes are not progressive, it is like more an on/off brakes, the the riding experience is not good.

I really like to have no coasting. And If I want to relax my throttle hand, like when I am riding and long flat roads, I can enable the cruise control.
Also this way, almost do not use the brakes, as they are bicycle brakes, not motorcycle brakes, and my Food Q1S velocity and weight is more near a motorcycle. This way I save the brake, otherwise they would be gone fast and I would need to spend more money.

I only see advantages.
 
The original motor do coast every time I decelerates, and then I feel out of control - to have control again, I need to keep increasing the speed or to brake. The original brakes are not progressive, it is like more an on/off brakes, the the riding experience is not good.

I really like to have no coasting. And If I want to relax my throttle hand, like when I am riding and long flat roads, I can enable the cruise control.
Also this way, almost do not use the brakes, as they are bicycle brakes, not motorcycle brakes, and my Food Q1S velocity and weight is more near a motorcycle. This way I save the brake, otherwise they would be gone fast and I would need to spend more money.

I only see advantages.
I’m talking in general. You have a small bike that’s not stable at high speeds. Some people with bigger and heavier bikes might prefer coasting. Personally, I prefer the way you did it although I never tried it.
 
I’m talking in general. You have a small bike that’s not stable at high speeds. Some people with bigger and heavier bikes might prefer coasting. Personally, I prefer the way you did it although I never tried it.
I don't know about bigger bikes. Although I have a friend working on electric motorcycle since many years ago. We were discussing the usual buttons they have, and seems this Chinese buttons I bought, are kind of standard.

He told me that some old motorcycles had a left throttle only to brake regen.
Or others that have a kind o half throttle, where to one direction they accelerate and to other they brake. But he also prefers this simple throttle + a button to choose a more or less powerful mode.

And buttons should be on left side, as the hand of throttle should not be moving to click on buttons, otherwise can be dangerous to make an erroneous movement of the throttle.
 
I don't know about bigger bikes. Although I have a friend working on electric motorcycle since many years ago. We were discussing the usual buttons they have, and seems this Chinese buttons I bought, are kind of standard.

He told me that some old motorcycles had a left throttle only to brake regen.
Or others that have a kind o half throttle, where to one direction they accelerate and to other they brake. But he also prefers this simple throttle + a button to choose a more or less powerful mode.

And buttons should be on left side, as the hand of throttle should not be moving to click on buttons, otherwise can be dangerous to make an erroneous movement of the throttle.
I guess that is the biggest disadvantage. You have to precisely control the throttle all the time. I guess that could be fatiguing on long rides, you tell me. Also, if you want to use the pas only, it would be annoying because you would have to continue pedaling all the time. Although I’m not sure your setup works with pas or throttle only.
 
I guess that is the biggest disadvantage. You have to precisely control the throttle all the time. I guess that could be fatiguing on long rides, you tell me.
There is no need to have precisely control the throttle, like let's say when you hit a bump and your hand on throttle will change a bit. The VESC PID speed controller parameters, need to be changed in a way there is a more fast or less fast response to throttle changes. In my case, I found some values that are ok to me.

About fatigue on long rides, yes, I get them and the issue is spring force of my throttle. Maybe I could find a better throttle, for sure. Still, my 90% rides are of 15 minutes only, short and dynamic.
Still, I am looking to implement the cruise control - I will click on the button at left side of the handle bar (horn button as seen on the picture of my Fiido Q1S) and the system will keep the current throttle value, until I accelerate or brake:

1693072044566.png

Also, if you want to use the pas only, it would be annoying because you would have to continue pedaling all the time. Although I’m not sure your setup works with pas or throttle only.

My FiidoQ1S has no pedals, it like a micro motorcycle, so there is no PAS.

The way I am structuring the firmware, is that there are common parts of code, like the communication with VESC. The specific parts, like for my EBike the read of torque sensor, is specific code. Here is how it is structured.
The VESC configurations, is specific for each device, like the VESC configuration for my EBike is not using the VESC speed controller - the torque sensor value is simple mapped to the VESC motor current.

1693072857755.png
 
I decided to do a rear lights board + front lights board. My front turn lights are totally different from the rear turns lights, different electronics to switch on/off and even the front ones blink by themself.

The rear lights board is finished. I did a usual ride on the city. I am not used to use the turn lights, I will take time to get used to them. What I miss is a audible signal when I have any turn light on, just like on the cars, otherwise I may forget to get them turn on. I will add a small buzzer to the display, and that will be very quick as I already used a buzzer on this boards.

Here a video of me doing a demonstration:


Read all the project information here: https://opensourceebike.github.io/
The OpenSource firmware and DIY board schematic, get them here on Github: GitHub - OpenSourceEBike/EBike_EScooter_modular_DIY: EBike / EScooter app developed in CircuitPython, to control a motor by sending commands to VESC motor controller

Pictures:
rear_lights_board-1.jpg

rear_lights_board-2.jpg

The electronic schematic:
schematic-rear_lights.png
 
I’m talking in general. You have a small bike that’s not stable at high speeds. Some people with bigger and heavier bikes might prefer coasting. Personally, I prefer the way you did it although I never tried it.
On the other day, by mistake I disabled charging on the BMS. Then, the scooter would not brake/regen at all and I didn't know why :(
I could feel the coast, and yes, it is interesting but only up to when I need to reduce the speed or brake - I really feel without control if coasting, and I really prefer not coasting and having brake regen.

So, if I want to have coast enable, is just a matter to connect to VESC with my phone and configure the regen current to be zero.

It is on my TODO list the features that I want to implement, using the buttons and the display:
  • Increase/decrease max speed limit: so if my wife or my 13 years old son want to ride, it can be safer like having max speed of 25kms/h or any other value.
  • Increase/decrease assist levels (5 levels): each mode having different motor current for the acceleration, regen current for braking, as also different motor power. Currently I am using 135A motor phase current, 2000W max motor power, 75A regen current and 1500W max regen current. My wife is smaller and almost half of my weight, so, don't need such high motor currents and power.
  • Start cruise control: to relax on long straight rides.
Maybe I can add a feature to enable/disable coast, that will just set regen current to zero.
 
On the other day, by mistake I disabled charging on the BMS. Then, the scooter would not brake/regen at all and I didn't know why :(
I could feel the coast, and yes, it is interesting but only up to when I need to reduce the speed or brake - I really feel without control if coasting, and I really prefer not coasting and having brake regen.

So, if I want to have coast enable, is just a matter to connect to VESC with my phone and configure the regen current to be zero.

It is on my TODO list the features that I want to implement, using the buttons and the display:
  • Increase/decrease max speed limit: so if my wife or my 13 years old son want to ride, it can be safer like having max speed of 25kms/h or any other value.
  • Increase/decrease assist levels (5 levels): each mode having different motor current for the acceleration, regen current for braking, as also different motor power. Currently I am using 135A motor phase current, 2000W max motor power, 75A regen current and 1500W max regen current. My wife is smaller and almost half of my weight, so, don't need such high motor currents and power.
  • Start cruise control: to relax on long straight rides.
Maybe I can add a feature to enable/disable coast, that will just set regen current to zero.
When I was using slide regen, which is what you're describing, I had a pushbutton with a simple resistor/pot circuit that applied around 50W of throttle when pressed, which let the bike "coast" indefinitely, and was also great when navigating in between foot traffic or if my throttle hand got tired. I also used cruise for longer stretches.
 
When I was using slide regen, which is what you're describing, I had a pushbutton with a simple resistor/pot circuit that applied around 50W of throttle when pressed, which let the bike "coast" indefinitely, and was also great when navigating in between foot traffic or if my throttle hand got tired. I also used cruise for longer stretches.
That is a very good idea. However, I will only focus on developing what I use and my TODO list is the same as previous. I am also building the front lights board, then finally I will try to install most of possible the electronics on the seat tube. And then build the final battery as small as possible, as I want to have much space as needed to carry small things like when I go shopping. Finally, 3D print the final display.
Then, this project on FiidoQ1S will be finished. I will probably then jump to update my Ebike with this more updated firmware, mainly on the wireless communication to the display, as currently there are some issues with the wired UART communications to the display.

My TODO list on firmware side, for my FiidoQ1S:
  • Increase/decrease max speed limit: so if my wife or my 13 years old son want to ride, it can be safer like having max speed of 25kms/h or any other value.
  • Increase/decrease assist levels (5 levels): each mode having different motor current for the acceleration, regen current for braking, as also different motor power. Currently I am using 135A motor phase current, 2000W max motor power, 75A regen current and 1500W max regen current. My wife is smaller and almost half of my weight, so, don't need such high motor currents and power.
  • Start cruise control: to relax on long straight rides.
 
I know nothing about this stuff but have a look here.
That is great!! thanks.

I bought the most cheap VESC of 200A on Aliexpress, so I understand why I have motor noise at startup as also a bit low torque, both are things that I would be happy to improve - and that message have 2 important changes I can do to improve a lot this issues.
 
Good news!!

1. I flashed the firmware that improves the motor current on this cheap bad quality VESC (thanks @IsaacLarsen to point this forum message here) and now the motor is much more silent, like a 100x improvement!!! The VESC motor auto-detection is almost perfect, but still seems the motor inductance value need to be corrected a bit - next I should do the hardware mod that should improve even more.
Finally I have a perfect silent motor, that I didn't thought would be possible!!

2. I built and got the front lights board working. Finally I do not need to carry extra bicycle lights. Yesterday I did the usual 14 kms ride at the night to go to the gym - lights work perfectly.
My wife told me the turn lights at rear are not strong enough, on day light, so the cars will not understand that I am signaling a turn. So I decided that I will install the same turn lights I will be installing in the handle bar, that are strong and seems just a regular motorcycle turns lights.
And yes, the original Fiido Q1S head light is weak for the speeds I am riding - they are ok for a low speed like 20 or 25 kms/h, as it is supposed but since I am using Fiido Q1S more like a motorcycle, I will need to upgrade the head light or simple ride more slowly at night.


1694676663809.png
 
Last edited:
"Open Brain Surgery For EBikes And EScooters" is how HackADay news site see this OpenSource solution of DIY electronics and firmware for EBikes and EScooters. The project was also featured in this week's CircuitPython newsletter.

"Personal Electric Vehicles (PEVs) all contain the same basic set of parts: a motor, a battery, a motor controller, some sensors, and a display to parse the information. This simplicity allowed [casainho] to develop a custom controller setup for their own PEVs.

Built around the venerable VESC motor controller, [casainho]’s addition is the EBike/EScooter board that interfaces the existing motor of a device to the controller. Their ESP32-powered CircuitPython solution takes the sensor output of a given bike or scooter (throttle, cadence, or torque) and translates it into the inputs the controller uses to set the motor power.

They’ve also designed an ESP32-based display to interface the rest of the system to the user while riding. Since it also runs CircuitPython, it’s easy to reconfigure the functions of the three button device to display whatever you’d like as well as change various drive modes of your system."

1699901628319.png 1699901643776.png
 
My rear tire did wear out quickly, maybe because my motor brakes a lot (I almost do not use the mechanical brakes) and/or because the tire is thin:
1702648345779.png

So I was looking for a thicker tire, as it is difficult to change this rear tire - change the tire it self is not easy, but also because of the 6 phase motor that are thick and hard to unsolder and solder.

So I found a very thick tire, but it also bigger!!

The previous tire inflated:
  • 3.0-8
  • 326 mm diameter (12,8 inches)
The new tire inflated:
  • 3.5-8
  • 386 mm diameter (15,2 inches)
So the new tire is 16% larger and 18% taller, and probably 3 times thicker!! See visually (both that tires are new, the tire at right is the old model):

1702648393789.png 1702648476889.png
1702648545931.png

The tire is the Michelin S83 3.5-8 tire, and it is for real scooter and was sold by an European shop, meaning that it follows the European standart for tire, hence it his very thick to support high speeds and high loads!!

But the main question is: will it fit on the Fiido Q1S frame that is supposed to be for 12 inches wheels only??

As I just bought one tire for testing, I decided to install it at front - I already bought the 2nd tire to install on back but it didn't arrived yet. See the difference when installed:

1702648614126.png

At first I just saw one or two pictures from users, while other saying it was not possible to install on the rim... but here are the pictures of others:

1702648642428.png

So, how dificult was to install the tire? Well, I could not by myself then I went to a speciallized local shop and they were almost to quit...
1702651819006.png

But then they did it (but I was not there at the time) and I didn't see what magic they did. But they told me this rim walls are very small and they though it would not work:
1702651897023.png

Back to home, I found it was ruberring on the fork, so I decided to use a file on the fork:
1702652040348.png

Still, the end result was this:
1702652077739.png
1702652106435.png
1702652129570.png
1702652157634.png

I did small test rides and for now I am happy with it - for sure this tire will last longer due to it's thickness. It also increases the safety and confort, like when bumping on road holes, because it is larger and taller.

But I am yet to install on the rear, but the users who did it, say it works but very narrow and needs to be well centered.

Also, if the tire is 18% taller, so it will need 18% higher motor torque. Also, since it is wider, it probably needs a bit more torque because more tire area is rolling on the road. So maybe, I need more 25% more torque on the motor, and that means increasing the motor phase current... which is not good, since it was already high because of this motor that has high speed and a bit low torque - it runs at about 110 kms/h (with this taller tire, should now run at 130kms/h) no load with the 72V battery charged, while and I am riding at max of 55 kms/h.
 
Last edited:
I would like to give an update on how the Michelin S83 3.5-8 48J tires are looking on my Fiido Q1S and why I decided to remove them and go back to the 3.0-8 tires.

My Fiido Q1S with Michelin S83 3.5-8 48J tires:
1705234748965.png

Detail showing how tight the tire fits on the rear:
1705234462479.png

1705235400922.png

And as I already explained, the guys at the mechanic workshop, had difficult to install the tires on the rims... and they did a good damage to the rear rim, as seen in the picture:
1705234335040.png

So, after riding with this tires, I changed my mind and I will discard them and install again a 3.0-8 tires.

Disadvantages:

- this tires are fat and their thickness compared to the frame round tubes thickness, are not anymore in a visual balance. The very small size of this micro motorcycle is what makes it unique. With this fat tires, it can't carry it anymore on my cars, unlike before as seen on this picture:

1705243776569.png

- this tires are very hard to install or remove, I need to go to the mechanic workshop, so I it is a dependency that I don't like even because they do damage the rims because is very hard to install this tires on the Fiido Q1S original rims.

- this tires are hard, and I feel more the road pits.

- this tires are 46J, meaning they support a load of max 170kgs while others from Aliexpress are 38J, which means supports max load of 132kgs. The lower the load the tire supports, the thinner it will be and softer!! That is why this Michelin S83 3.5-8 48J are hard to install on the Fiido Q1S rims and also are hard on the road pits. My next tires will be instead the 3.00-8 38J from Aliexpress, ChaoYang brand - this ones:

1705242719730.png

And finally, and important note, I measured this 3.5 tires to have 18% higher diameter as compared to the 3.8 tires. I really felt that less torque, it is well noticeable and also and can't achieve the max of 55 kms/h as before, but only around 45 kms/h... and also seems to me that for riding at the same speed, like at 40kms/h, the motor power used had to be higher, so less efficient.
 

Attachments

  • 1705234504577.png
    1705234504577.png
    3.1 MB · Views: 5
  • 1705243778517.png
    1705243778517.png
    14.8 MB · Views: 6
Last edited:
I bought this front light from Aliexpress and it were a bigger improvement over the original Fiido Q1S front light. This light uses 20W of electric power while the orignal Fiido Q1S only used 1W!!

1705244686322.png

But I was not happy yet, for the speeds I ride at night and sometimes in places with total darkness. So I went and bought this different front light:

1705244959451.png

Now I am happy. This light is strong as I need. It uses 30W of electric power!! Here is it installed and at night:

1705245064147.png

1705245104366.png

1705245260498.png
 
A lot of things going on recently!!

So I bought a new Lunyee motor, but this time with lower RPM and more torque!! and the trade went perfectly did time!! Amy Ding sold me the motor and we did agree on the RPM - then he sent me a video showing it running and the battery voltage and RPM in real time - that was very good, I recommend to buy from her, you can contact here: Amy Ding

Then, I made a mistake during development and burned my VESC Makerbase 75100 V1. Then I bought a new one, but this time it is the new version V2. But then, I burned this new again on his first 5 minutes!!
As I did understand the parts burned were different on this 2 units, I just swapped the top logic board to the power mosfets board that was ok.... and it worked!!!! HAPPY

I also used for the first time an ESP32-C3 for the wireless connection to PC with VESC tool. VESC has now a specific firmware for this ESP32-C3 + CAN module TJA1050, which is way more cheap than the NRF52840 that I used before. All the information here: USB-C to VESC CAN-forward adapter - cheap and DIY!

Some pictures of the process:

1706712836468.png

1706713261568.png

1706713311409.png

1706713390643.png
 

Attachments

  • 1706713349086.png
    1706713349086.png
    3.1 MB · Views: 2
Last edited:
But this VESC Makerbase 75100 V2 had the same issue as V1, the motor makes noise at startup, lack of some torque and the motor detection on VESC tool was bad. Then I went and changed the latest VESC firmware with the previous changes for average the currents, that did me a perfect result before.

And just 3 weeks ago, for the first time, Makerbase added to VESC firmware their hardware configurations to theirs VESCs. So I pickup also that changes and built a firmware that as previously, is great and solved the issue on the high power motors and this cheap VESCs!!! -- more info here: How to update firmware on the Flipsky 75100 & 75200 FOC ESC

I also submitted my changes as a pull request to VESC repository, but more to make everyone there aware of this issue and improvement!!

1706714209288.png
 
Last edited:
  • Like
Reactions: pwd
Recently the Fiido Q1S stopped to work while I was riding in the city. After checking the battery cells voltage with the BMS app, I could understand that cells parallel nr 11 were almost empty while others didn't -- this is because I used old re-used and different cells:

1707738492194.png

Now I am building a 1000W battery pack, with new cells I bought from NKON (Europe).
I bought 100 x Aspilsan INR18650-A28 2900mAh - 25A, to make a 20S5P battery pack.

I estimate I will be able up to ride 60 kms distance at average 40 kms/h speed, on the mostly flat roads where I live.

I plan to discharge the battery at max 25A / 2500W e charge when braking regen at 14A / 1000W.

I am using the following material:
- JBD BMS SmartBMS bluetooth 20S 72V 100A: to protect the cells and see on the phone each cell state!!
- 18650 cells brackets: to keep all the cells in a block, just like Legos.
- 18650 gasket insulation: a must otherwise a short circuit can happen in the gasket zone of the cell!!
- Nickel strip: the nickel strip that will be soldered and connect each cell to the next other
- Fiber tape to hold the cells and kapton tape: I use then to hold that BMS, wires, etc.
- XT60 battery power connector: for the max 25A battery current discharge, this connector is well enough and I have very good experience using them.

Current pictures:
1707738682855.png

1707737541273.png
 

Attachments

  • 1707738421992.png
    1707738421992.png
    4.7 MB · Views: 3
Last edited:
Hi, great project! How do you like the comfort on light offroad, in the forest or on gravel paths with these new tyres? Did you upgrade the suspension?
 
Hi, great project! How do you like the comfort on light offroad, in the forest or on gravel paths with these new tyres? Did you upgrade the suspension?
Front suspension is the original. The rear shock I changed to this one:

1710171658299.png

I don't have experience on the gravel paths but I would can say clearly that both that front and rear suspensions are important for the comfort on the road potholes!!

In the rear I have now installed a 3.00x8 tire. On front I still have the 3.50x8 tire but on next opportunity I will change back to the 3.00x8 tire, just because I don't like the extra space and look of the bigger tires, other wise they are good.
 
Back
Top