Flycolor Dragon
Any way to connect the Flycolor Dragon to the RP 2040?
Flycolor Dragon ESC? Do they have telemetry?
If it has blheli firmware select ESC Protocol -> Kiss.
Kind of. Check this out:
.
Unfortunately, I lost the app, and it is not available anymore, therefore I cannot tell you which parameters you can get as what they call "real-time data"
Do you have the flycolor wifi module?
We need the Flycolor wifi module and the app to decode the telemetry.
You can find the apk (for android) here
If you don't have a wifi module you can try with a serial monitor at the wifi signal wire and grounded. Msrc has a built in serial monitor at gpio 5. Select Receiver Protocol-> Serial Monitor. Try with different baudrates.
Great lead for the app. I do have the module, but I had trouble connecting when I had the app; that is why I uninstalled it. Anyway, I will try again with the link you gave me and also and more importantly, with the RP2040, as you suggested, which I like much better. Thanks a lot for your help.
Daniel, I think I have the wrong MSRC SW again. In the ESC pull down I have PWM, which I guess would be Serial Monitor. Not a big deal, but the only place where I can set the Baud rate is in the GPS sensor, and unless GPIO 5 has auto baud, I cannot set the rate for the PWM, or it is assumed to be the standard 20ms period. Can you comment, please?
Not sure if I understand.
You ESC has two connectors:
- The throttle wire, which contains the PWM signal from the receiver with a 20ms period. This signal is useless to decode and read the ESC telemetry.
- The wifi (telemetry) wire, which contains the telemetry values. Probably in serial protocol.
If you want a serial monitor, select Receiver Protocol -> Serial Monitor. It will show serial monitor parameters where you can change the baudrate:
You have to connect the wifi signal to gpio 5 (and gnd). Note that even is selected in Receiver protocol, the serial monitor is at gpio 5.
The ESC Protocol -> PWM is used to read rpms on some ESC that is transmitted through PWM in a separate wire.
Edit. I think I understand the confusion. I said ESC Protocol -> Serial Monitor before which is wrong. Should be Receiver Protocol -> Serial Monitor.
We are on a different page. I assumed the serial data available in the wifi signal pin, could be converted to FrSky telemetry, but it looks to me now that I can read that data into the debug screen of the MSRC SW. Is that correct?
We need to read the telemetry packets from your esc to decode and implement the telemetry. I need a dump of the wifi signal to do this. What you will read in the debug screen of msrc is the raw serial data. Then I need to decode it and implement for all receiver protocols.
Daniel, if you want to implement this support, I will be happy to help. It seems to be a hell of a project. Please. comment.
Implementing esc telemetry is not a big issue. Receivers protocols are.
If you can read with serial monitor the telemetry packets, it wont be a big effort.
Ok, I am in. I'll receive the connectors for the ESC bat side this evening. By tomorrow, you should have news from me.
Could this be of any use for you?
I tried from 4800 through 115200, different parities and 1 and 2 stop bits, without any luck.
Unfortunately not. It seems that telemetry needs to be requested by the wifi module/app. This makes thinks harder. You can try with the module attached and the app requesting telemetry. Up to you if you want to go any further.
Yes. Tomorrow I will run a full list of combined baud rates, parity and stop bits. Then I will hook up a Y cable in the wifi module to look at the data exchange, and if needed, again will run the full list check out If this doesn't work, we will have to drop the ball. I wonder if there is a discrepancy in the number of data bits between the Serial monitor and the Flycolor protocol, and that is the reason I get garbled data in the debugger.
You get garbage because you enable the debug too soon. It isn't from the serial monitor.
Don't bother too much with parity an stop bits for now. Even if they are incorrect you should be getting some serial data. You can adjust them once you get something.
You sholud see something like:
Serial monitor : 0x34 0xA2 ...
Well, I was lucky. Without knowing, I ran the debug at 19200 default parity and stop bit and got something: This log, whose values are read in the app, are
voltage V 22.8 Current A 0 mos temp Celsius 28.7 rpm 0 throttle usec 988 PWM 0
USB. Debug enabled. MSRC firmware version 1.2.2 USB (84) Serial monitor (301). Length: 1 (8576 ms): 0xAA Serial monitor (202). Length: 1 (8603 ms): 0x53 Serial monitor (200). Length: 1 (8605 ms): 0xA Serial monitor (200). Length: 1 (8608 ms): 0xE Serial monitor (200). Length: 1 (8610 ms): 0x0 Serial monitor (200). Length: 1 (8613 ms): 0x0 Serial monitor (200). Length: 1 (8615 ms): 0x21 Serial monitor (200). Length: 1 (8618 ms): 0xE8 Serial monitor (200). Length: 1 (8621 ms): 0x0 Serial monitor (200). Length: 1 (8623 ms): 0x0 Serial monitor (200). Length: 1 (8626 ms): 0x3 Serial monitor (200). Length: 1 (8628 ms): 0xDB Serial monitor (200). Length: 1 (8631 ms): 0x0 Serial monitor (200). Length: 1 (8634 ms): 0x52 Serial monitor (200). Length: 1 (8636 ms): 0x54 Serial monitor (200). Length: 1 (8777 ms): 0xAA Serial monitor (200). Length: 1 (8805 ms): 0x53 Serial monitor (200). Length: 1 (8808 ms): 0xA Serial monitor (200). Length: 1 (8810 ms): 0xD Serial monitor (200). Length: 1 (8813 ms): 0x0 Serial monitor (200). Length: 1 (8816 ms): 0x0 Serial monitor (200). Length: 1 (8818 ms): 0x21 Serial monitor (200). Length: 1 (8821 ms): 0xF6 Serial monitor (200). Length: 1 (8823 ms): 0x0 Serial monitor (200). Length: 1 (8826 ms): 0x0 Serial monitor (200). Length: 1 (8828 ms): 0x3 Serial monitor (200). Length: 1 (8831 ms): 0xDC Serial monitor (200). Length: 1 (8834 ms): 0x0 Serial monitor (200). Length: 1 (8836 ms): 0x52 Serial monitor (200). Length: 1 (8839 ms): 0x54 Serial monitor (200). Length: 1 (8979 ms): 0xAA Serial monitor (200). Length: 1 (9008 ms): 0x53 Serial monitor (200). Length: 1 (9010 ms): 0xA Serial monitor (200). Length: 1 (9013 ms): 0xE Serial monitor (200). Length: 1 (9016 ms): 0x0 Serial monitor (200). Length: 1 (9018 ms): 0x0 Serial monitor (200). Length: 1 (9021 ms): 0x22 Serial monitor (200). Length: 1 (9023 ms): 0xE8 Serial monitor (200). Length: 1 (9026 ms): 0x0 Serial monitor (200). Length: 1 (9029 ms): 0x0 Serial monitor (200). Length: 1 (9031 ms): 0x3 Serial monitor (200). Length: 1 (9034 ms): 0xDD Serial monitor (200). Length: 1 (9036 ms): 0x0 Serial monitor (200). Length: 1 (9039 ms): 0x52 Serial monitor (200). Length: 1 (9041 ms): 0x54 Serial monitor (200). Length: 1 (9184 ms): 0xAA Serial monitor (200). Length: 1 (9211 ms): 0x53 Serial monitor (200). Length: 1 (9213 ms): 0xA Serial monitor (200). Length: 1 (9216 ms): 0xE Serial monitor (200). Length: 1 (9218 ms): 0x0 Serial monitor (200). Length: 1 (9221 ms): 0x3 Serial monitor (200). Length: 1 (9223 ms): 0x21 Serial monitor (200). Length: 1 (9226 ms): 0xF6 Serial monitor (200). Length: 1 (9229 ms): 0x0 Serial monitor (200). Length: 1 (9231 ms): 0x0 Serial monitor (200). Length: 1 (9234 ms): 0x3 Serial monitor (200). Length: 1 (9236 ms): 0xDC Serial monitor (200). Length: 1 (9239 ms): 0x0 Serial monitor (200). Length: 1 (9241 ms): 0x52 Serial monitor (200). Length: 1 (9244 ms): 0x54 Serial monitor (200). Length: 1 (9426 ms): 0xAA Serial monitor (200). Length: 1 (9454 ms): 0x53 Serial monitor (200). Length: 1 (9457 ms): 0xA Serial monitor (200). Length: 1 (9459 ms): 0xE Serial monitor (200). Length: 1 (9462 ms): 0x0 Serial monitor (200). Length: 1 (9464 ms): 0x0 Serial monitor (200). Length: 1 (9467 ms): 0x21 Serial monitor (200). Length: 1 (9470 ms): 0xF6 Serial monitor (200). Length: 1 (9472 ms): 0x0 Serial monitor (200). Length: 1 (9475 ms): 0x0 Serial monitor (200). Length: 1 (9477 ms): 0x3 Serial monitor (200). Length: 1 (9480 ms): 0xDD Serial monitor (200). Length: 1 (9482 ms): 0x0 Serial monitor (200). Length: 1 (9485 ms): 0x52 Serial monitor (200). Length: 1 (9488 ms): 0x54 USB (84) Serial monitor (200). Length: 1 (9582 ms): 0xAA Serial monitor (200). Length: 1 (9611 ms): 0x53 Serial monitor (200). Length: 1 (9613 ms): 0xA Serial monitor (200). Length: 1 (9616 ms): 0xE Serial monitor (200). Length: 1 (9618 ms): 0x0 Serial monitor (200). Length: 1 (9621 ms): 0x0 Serial monitor (200). Length: 1 (9624 ms): 0x22 Serial monitor (200). Length: 1 (9626 ms): 0xF6 Serial monitor (200). Length: 1 (9629 ms): 0x0 Serial monitor (200). Length: 1 (9631 ms): 0x0 Serial monitor (200). Length: 1 (9634 ms): 0x3 Serial monitor (200). Length: 1 (9636 ms): 0xDC Serial monitor (200). Length: 1 (9639 ms): 0x0 Serial monitor (200). Length: 1 (9642 ms): 0x52 Serial monitor (200). Length: 1 (9644 ms): 0x54 USB (84) USB (84) USB (84) USB (84)
This one had read values: voltage V 22.9 Current A 0.2 mos temp Celsius 29.4 rpm 2000 throttle usec 1040 PWM 5%
USB. Debug enabled. MSRC firmware version 1.2.2 USB (84) Serial monitor (200). Length: 1 (372407 ms): 0x0 Serial monitor (200). Length: 1 (372411 ms): 0x3 Serial monitor (200). Length: 1 (372413 ms): 0x1F Serial monitor (200). Length: 1 (372416 ms): 0x36 Serial monitor (200). Length: 1 (372418 ms): 0x0 Serial monitor (200). Length: 1 (372421 ms): 0xC4 Serial monitor (200). Length: 1 (372424 ms): 0x4 Serial monitor (200). Length: 1 (372427 ms): 0x11 Serial monitor (200). Length: 1 (372431 ms): 0xD Serial monitor (200). Length: 1 (372434 ms): 0x52 Serial monitor (200). Length: 1 (372437 ms): 0x54 Serial monitor (200). Length: 1 (372572 ms): 0xAA Serial monitor (200). Length: 1 (372600 ms): 0x53 Serial monitor (200). Length: 1 (372603 ms): 0xA Serial monitor (200). Length: 1 (372606 ms): 0x12 Serial monitor (200). Length: 1 (372610 ms): 0x0 Serial monitor (200). Length: 1 (372612 ms): 0x2 Serial monitor (200). Length: 1 (372615 ms): 0x1F Serial monitor (200). Length: 1 (372617 ms): 0x36 Serial monitor (200). Length: 1 (372620 ms): 0x0 Serial monitor (200). Length: 1 (372623 ms): 0xC8 Serial monitor (200). Length: 1 (372626 ms): 0x4 Serial monitor (200). Length: 1 (372629 ms): 0x10 Serial monitor (200). Length: 1 (372631 ms): 0xD Serial monitor (200). Length: 1 (372635 ms): 0x52 Serial monitor (200). Length: 1 (372637 ms): 0x54 Serial monitor (200). Length: 1 (372784 ms): 0xAA Serial monitor (200). Length: 1 (372813 ms): 0x53 Serial monitor (200). Length: 1 (372815 ms): 0xA Serial monitor (200). Length: 1 (372818 ms): 0x12 Serial monitor (200). Length: 1 (372820 ms): 0x0 Serial monitor (200). Length: 1 (372824 ms): 0x2 Serial monitor (200). Length: 1 (372826 ms): 0x1F Serial monitor (200). Length: 1 (372829 ms): 0x29 Serial monitor (200). Length: 1 (372832 ms): 0x0 Serial monitor (200). Length: 1 (372835 ms): 0xC8 Serial monitor (200). Length: 1 (372839 ms): 0x4 Serial monitor (200). Length: 1 (372842 ms): 0x10 Serial monitor (200). Length: 1 (372845 ms): 0xD Serial monitor (200). Length: 1 (372847 ms): 0x52 Serial monitor (200). Length: 1 (372851 ms): 0x54 Serial monitor (200). Length: 1 (372973 ms): 0xAA Serial monitor (200). Length: 1 (373000 ms): 0x53 Serial monitor (200). Length: 1 (373002 ms): 0xA Serial monitor (200). Length: 1 (373005 ms): 0x12 Serial monitor (200). Length: 1 (373007 ms): 0x0 Serial monitor (200). Length: 1 (373010 ms): 0x2 Serial monitor (200). Length: 1 (373012 ms): 0x1F Serial monitor (200). Length: 1 (373016 ms): 0x29 Serial monitor (200). Length: 1 (373019 ms): 0x0 Serial monitor (200). Length: 1 (373022 ms): 0xC8 Serial monitor (200). Length: 1 (373024 ms): 0x4 Serial monitor (200). Length: 1 (373028 ms): 0xF Serial monitor (200). Length: 1 (373030 ms): 0xD Serial monitor (200). Length: 1 (373033 ms): 0x52 Serial monitor (200). Length: 1 (373036 ms): 0x54 Serial monitor (200). Length: 1 (373173 ms): 0xAA Serial monitor (200). Length: 1 (373200 ms): 0x53 Serial monitor (200). Length: 1 (373203 ms): 0xA Serial monitor (200). Length: 1 (373205 ms): 0x12 Serial monitor (200). Length: 1 (373208 ms): 0x0 Serial monitor (200). Length: 1 (373211 ms): 0x3 Serial monitor (200). Length: 1 (373215 ms): 0x1F Serial monitor (200). Length: 1 (373218 ms): 0x36 Serial monitor (200). Length: 1 (373220 ms): 0x0 Serial monitor (200). Length: 1 (373223 ms): 0xC4 Serial monitor (200). Length: 1 (373226 ms): 0x4 Serial monitor (200). Length: 1 (373229 ms): 0x11 Serial monitor (200). Length: 1 (373232 ms): 0xD Serial monitor (200). Length: 1 (373235 ms): 0x52 Serial monitor (200). Length: 1 (373237 ms): 0x54
This sequence happens when I hit Connect in the app
USB. Debug enabled. MSRC firmware version 1.2.2 USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) USB (84) Serial monitor (200). Length: 20 (1492640 ms): 0xA5 0x80 0x2F 0x15 0x8 0x4 0x2 0x1 0x0 0x80 0x40 0xC8 0xC5 0x65 0x43 0x8A 0xF5 0x49 0x22 0x8B USB (84) Serial monitor (198). Length: 9 (1492799 ms): 0x30 0x30 0x30 0x31 0xF0 0x51 0x0 0x1 0xC4 USB (84)
I will forward more data transfer generated at the time the app is connected to the wifi ESC. I am getting some issues with the app right now.
Please increase timeout to 10
Request telemetry 0xAA. Packet 14 bytes, big endian:
- Byte 1, header 0x53
- Bytes 2&3, (temp + 3?) x100
- Bytes 4&5, current x10
- Bytes 6&7, 8950 to 7990? Bec volt x 1000?
- Bytes 8&9, rpm /10
- Bytes 10&11, throttle
- Byte 12, pwm
- Bytes 13&14, volt x1000
Decoded!
Maybe it is needed a start command. Can you get that debug without the wifi module?
If not, enable the debug before powering the esc.
What is your bec voltage?
I will increase the TO in the next debug. If the module is not connected, I will not get anything. Yesterday, I detected two data sequences that may be important, but I was not able to confirm them because of an issue with the app. One is when the app connects to the module, and the other is when I request the app to start receiving data. Regardless, as you suggested, I will enable debug before powering on the ESC. BEC voltage is 5.4.
Corrected communication setting: Baud rate: 19200 Stop bit: 1 Parity: ODD
BEC voltage is 5.4.
Then bytes 7 & 8 is not bec voltage. However, this is not populated in the app. I'll ignore those bytes for now.
Enabling debug before power-on shows no communication. When the app connects to the module, this is the exchange:
USB. Debug enabled. MSRC firmware version 1.2.2 USB (84) USB (84) Serial monitor (301). Length: 1 (537530 ms): 0xA5 Serial monitor (202). Length: 3 (537829 ms): 0x0 0x2F 0xF5 Serial monitor (202). Length: 9 (537939 ms): 0x0 0x80 0x40 0x20 0x10 0x8 0x4 0x6A 0xFF Serial monitor (200). Length: 9 (537956 ms): 0x46 0xA6 0x56 0xA8 0x8A 0xF5 0x49 0x22 0x8B Serial monitor (200). Length: 9 (538115 ms): 0x30 0x30 0x30 0x31 0xF0 0x51 0x0 0x1 0xC4 USB (84) USB (84) USB (84) Serial monitor (200). Length: 4 (541416 ms): 0xFF 0x80 0x5E 0xE0 Serial monitor (200). Length: 2 (541431 ms): 0x12 0x8A USB (84) Serial monitor (200). Length: 1 (541586 ms): 0xC4 Serial monitor (200). Length: 2 (541773 ms): 0x3 0xB8 Serial monitor (200). Length: 2 (541792 ms): 0x1 0x8A Serial monitor (200). Length: 115 (542019 ms): 0x1 0x0 0x1 0xF 0xB4 0x7 0xBC 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x55 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0x0 0x1 0x4 0x0 0x0 0x1 0x0 0x0 0x0 0x1 0x0 0x0 0x0 0x0 0xD 0x23 0x50 0x4C 0x41 0x4E 0x45 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x23 0x57 0x69 0x6E 0x44 0x72 0x61 0x67 0x6F 0x6E 0x5F 0x73 0x65 0x72 0x69 0x65 0x73 0x56 0x35 0x30 0x31 0x30 0x5F 0x31 0x30 0x32 0x30 0x5F 0x30 0x34 0x20 0x20 0x20 0xF0 0xB3 0xC4 USB (84) USB (84)
This information shows in the app screen:
Since
I request data till I stop, I get this:
USB. Debug enabled. MSRC firmware version 1.2.2 USB (84) USB (84) Serial monitor (166). Length: 1 (1000463 ms): 0xAA Serial monitor (166). Length: 14 (1000524 ms): 0x53 0xA 0xC 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDD 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1000661 ms): 0xAA Serial monitor (166). Length: 14 (1000721 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xD7 0x0 0x0 0x3 0xDC 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1000861 ms): 0xAA Serial monitor (166). Length: 14 (1000922 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDC 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1001061 ms): 0xAA Serial monitor (166). Length: 14 (1001122 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDD 0x0 0x52 0x54 USB (84) Serial monitor (166). Length: 1 (1001264 ms): 0xAA Serial monitor (166). Length: 14 (1001324 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDD 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1001468 ms): 0xAA Serial monitor (166). Length: 14 (1001529 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDC 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1001686 ms): 0xAA Serial monitor (166). Length: 14 (1001747 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDC 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1001866 ms): 0xAA Serial monitor (166). Length: 14 (1001927 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDC 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1002074 ms): 0xAA Serial monitor (166). Length: 14 (1002135 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDD 0x0 0x52 0x54 Serial monitor (166). Length: 1 (1002267 ms): 0xAA USB (84) Serial monitor (166). Length: 14 (1002327 ms): 0x53 0xA 0xB 0x0 0x0 0x23 0xC8 0x0 0x0 0x3 0xDC 0x0 0x52 0x54 USB (84) USB (84) USB (84)
Ok. It seems that telemetry is requested with 0xAA from the wifi module.
Yes, it looks like each time 0xAA is issued, a complete set of parameters is sent. And that happens to be always the first line of data. It seems that you have this one pretty much figured out. Just to confirm, do you think you just can generate the 0xAA once to see if we get an answer from the ESC without the module?
Just to confirm, do you think you just can generate the 0xAA once to see if we get an answer from the ESC without the module?
Yes.
Which receiver are you using, frsky with smartport?
Yes
I guess that to be able to have a good conversion it will be useful to run a debug with a more aggressive throttle setting. I will have to figure out some HW issues, though.
Something that you requested: adjust the timeout to 10ms. This is the reading:
Serial monitor (192). Length: 1 (388500 ms): 0xAA Serial monitor (192). Length: 14 (388561 ms): 0x53 0xA 0x8 0x0 0x0 0x24 0x91 0x0 0x0 0x3 0xDC 0x0 0x52 0x54
This reading is for the following values:
Voltage: 22.8 Current: 1.3 temp 26.1 RPM: 8000 Throttle: 1174 PWM 19%