VOTOL serial communication protocol

Joined
Nov 26, 2019
Messages
95
Hi Guys, I spend some time analyzed the VOTOL serial communication process, and decoded the parameters of rpm, battery voltage, battery current, temperature coefficient, etc so it helps integrate the coulomb-counter in speedo meter, DIY an Arduino based wireless meter or create a Android/ISO APP using Bluetooth connection. I'm working on a Android APP for myself now.

when you created the connect via serial port or BT, the host sends below HEX string asking VOTOL controller to send the data shown on Display page back:

c9 14 02 53 48 4f 57 00 00 00 00 00 aa 00 00 00 1e aa 04 67 00 f3 52 0d

after that the controller will send 24 byte string including the data we want:

c0 14 0d 59 42 02 14 00 0f 01 00 00 00 00 02 b8 5d 4b 22 d6 80 03 01 0d

among these 24 byte:
B0~B1:C0 14 is the head of string means data sent by controller
B5~B6:02 14 converts into fixed-point Dec is the battery voltage, for my case it is 53.2V
B7~B8: 00 0f converts into fixed-point Dec is the battery current, for my case is 1.5A
B14~B15: 02 b8 converts into integer is the rpm, for my case is 696
B16: 5d converts into Dec - 50 is the Controller temp, for my case is 43C
B17: 4b converts into Dec - 50 is the External temp, for my case is 25C
B18~B19: 22 d6 converts into integer is the temperature coefficient, for my case is 8918
the rest is still in decoding but it is enough for simple coulomb-counter purpose, if you do a simply math using the rpm and your tire size, you can get a very accurate speed value, which has fast response than GPS value, and you can get the distance as well.

Hope it helps

flute2k3
 
Glad to see that's not only me that trying to decode VOTOL serial protocol.

By the way, here is some addition:
B10~B13: 32bit fault code
B20: gear, antitheft, regen status
B21: controller status
B22: XOR Sum of first 22 bytes string

Regards,
TJ.
 
tjstyle said:
Glad to see that's not only me that trying to decode VOTOL serial protocol.

By the way, here is some addition:
B10~B13: 32bit fault code
B20: gear, antitheft, regen status
B21: controller status
B22: XOR Sum of first 22 bytes string

Regards,
TJ.

Thank you TJ :thumb: , almost done, I guess B9 could be this guy
Capture.PNG
 
B9 still unknown

that guy (in the red circle) is in B20, here is the detail:

byte B20:{
bit0~1= 0:L, 1:M, 2:H, 3:S
bit2=R
bit3=P
bit4=brake
bit5=antitheft
bit6=side stand
bit7=regen
}

also the detail for status in B21:
0=IDLE
1=INIT
2=START
3=RUN
4=STOP
5=BRAKE
6=WAIT
7=FAULT

Regards,
TJ.
 
tjstyle said:
B9 still unknown

that guy (in the red circle) is in B20, here is the detail:

byte B20:{
bit0~1= 0:L, 1:M, 2:H, 3:S
bit2=R
bit3=P
bit4=brake
bit5=antitheft
bit6=side stand
bit7=regen
}

also the detail for status in B21:
0=IDLE
1=INIT
2=START
3=RUN
4=STOP
5=BRAKE
6=WAIT
7=FAULT

Regards,
TJ.

awesome :bigthumb:
 
Hello,
this is very interesting!
I am connected to the votol and
send the string:

c9 14 02 53 48 4f 57 00 00 00 00 00 aa 00 00 00 1e aa 04 67 00 f3 52 0d

, but I don't get an answer .....

Can you help?
 
guess a AD.

back to you question, have you set your baud rate to be 9600? I tested success every time. I've even written an Android APP to received the data with coulomb counters integrated, it works like a charm.
 
I have fully decoded specification of Serial Communication of VOTOL.
So, i can help you guys, from Russia with Love xD
Tell me exactly questions 1) 2) 3) 4) and i will help
Cheer.
 
wow, that's terrific :bigthumb: :bigthumb: :bigthumb:

I think most useful command will be
1) say for example I want to change the page 2 current-limit (A) to 30A, what are the lines? (set value + param write)
2) and for page 2 HDC speed?
3) and for page 3 EBS ratio % say for example 50%

if you don't mind, maybe you can share some additional

with thanks XD
 
1) say for example I want to change the page 2 current-limit (A) to 30A, what are the lines? (set value + param write)

t's will be depend about current VOTOL Controller Version and settings.
I will try to explain how to work SERIAL Communication.
1) From software side you sending getting update settings.
2) When you are clicking param write - software must send back again different packets back for each page.
3) When you are sending packet - you must sign packet.

So i can help you to show how send packet on votol-em-150 with my current settings.
c9 14 02 50 02 00 1e 2d 50 64 0f a0 0f a0 0b b8 39 28 10 14 1e 3c 0e 0d
1E - 30A
c9 14 02 50 02 00 1f 2d 50 64 0f a0 0f a0 0b b8 39 28 10 14 1e 3c 0f 0d
1F - 31A

But you should understand that this packet contains other settings too!
 
I would like to call up the monitor page ... In order to achieve a continuous output of speed, amps, voltage via the serial interface
 
I would also be interested in learning more about the VOTOL can bus communication.
Any pointers, suggestions?
 
im beginner in this thing
i want to implement this using arduino to monitor this

do u have example code to do it..?
if u mind to share, it would be awesome
 
ahoenksiluman said:
im beginner in this thing
i want to implement this using arduino to monitor this

do u have example code to do it..?
if u mind to share, it would be awesome

Hi ahoenksiluman, Did you manage to make any progress?
 
maincraft said:
1) say for example I want to change the page 2 current-limit (A) to 30A, what are the lines? (set value + param write)

t's will be depend about current VOTOL Controller Version and settings.
I will try to explain how to work SERIAL Communication.
1) From software side you sending getting update settings.
2) When you are clicking param write - software must send back again different packets back for each page.
3) When you are sending packet - you must sign packet.

So i can help you to show how send packet on votol-em-150 with my current settings.
c9 14 02 50 02 00 1e 2d 50 64 0f a0 0f a0 0b b8 39 28 10 14 1e 3c 0e 0d
1E - 30A
c9 14 02 50 02 00 1f 2d 50 64 0f a0 0f a0 0b b8 39 28 10 14 1e 3c 0f 0d
1F - 31A

But you should understand that this packet contains other settings too!

Can you explain every byte of this thing? Where is current, where is speed limit, etc. Thanks in advance
 
reference this

https://endless-sphere.com/forums/viewtopic.php?f=7&t=95969&p=1707592#p1707592



K3ysound16 said:
maincraft said:
1) say for example I want to change the page 2 current-limit (A) to 30A, what are the lines? (set value + param write)

t's will be depend about current VOTOL Controller Version and settings.
I will try to explain how to work SERIAL Communication.
1) From software side you sending getting update settings.
2) When you are clicking param write - software must send back again different packets back for each page.
3) When you are sending packet - you must sign packet.

So i can help you to show how send packet on votol-em-150 with my current settings.
c9 14 02 50 02 00 1e 2d 50 64 0f a0 0f a0 0b b8 39 28 10 14 1e 3c 0e 0d
1E - 30A
c9 14 02 50 02 00 1f 2d 50 64 0f a0 0f a0 0b b8 39 28 10 14 1e 3c 0f 0d
1F - 31A

But you should understand that this packet contains other settings too!

Can you explain every byte of this thing? Where is current, where is speed limit, etc. Thanks in advance
 
I just realized that the PM I replied did not send out at all, sorry if anyone want to PM me, please shoot an e-mail to flute2k3@hotmail.com, with subject including "votol".

just a clarification, I'm using Android not Arduino for developing a votol client on cellphone. I did not work on Arduino, but shall be easier.

BTW, any one knows how to reply PM? or if I do not have access to reply PM?
Capture.JPG
 
Back
Top