[HELP] RMT single wire bidirectional communication (dshot telemetry)
Posted: Sun May 05, 2019 11:30 pm
Hi Everyone,
First post here and its bit of a long one
I am looking to use RMT to transmit a 16 bit packet and then receive a 16 bit packet sent back on the same wire. If after reading the below if you have a suggestion for a better method please let me know.
For multicopters there is a flight controller (FC) to electronic speed controller (ESC) protocol called dshot (https://blck.mn/2016/11/dshot-the-new-kid-on-the-block/). Dshot sends a 16 bit packet as defined below for communicating speed and now it can request a packet be sent back with telemetry data e.g. temperature, voltage, rpm, etc (https://github.com/betaflight/betaflight/pull/7264 and https://github.com/betaflight/betafligh ... d_Spec.txt)
Previous post I found on the topic (https://www.esp32.com/viewtopic.php?f=1 ... ilit=dshot) but is now old and not dealing with telemetry.
I am able to send dshot packets to the ESC to control the speed (https://github.com/JyeSmith/dshot-esc-t ... tester.ino) but am now looking for suggestion on what would be the best method of receiving telemetry packets sent back???
End goal is to be able to control the speed and read voltage+erpm telemetry. This will allow me to make a KV tester for hand wound motors
Thanks for looking
First post here and its bit of a long one
I am looking to use RMT to transmit a 16 bit packet and then receive a 16 bit packet sent back on the same wire. If after reading the below if you have a suggestion for a better method please let me know.
For multicopters there is a flight controller (FC) to electronic speed controller (ESC) protocol called dshot (https://blck.mn/2016/11/dshot-the-new-kid-on-the-block/). Dshot sends a 16 bit packet as defined below for communicating speed and now it can request a packet be sent back with telemetry data e.g. temperature, voltage, rpm, etc (https://github.com/betaflight/betaflight/pull/7264 and https://github.com/betaflight/betafligh ... d_Spec.txt)
Bit length (total timing period) is 1.67 microseconds (T0H + T0L or T1H + T1L).
For a bit to be 0, the pulse width is 625 nanoseconds (T0H – time the pulse is high for a bit value of ZERO)
For a bit to be 1, the pulse width is 1250 nanoseconds (T1H – time the pulse is high for a bit value of ONE)
Previous post I found on the topic (https://www.esp32.com/viewtopic.php?f=1 ... ilit=dshot) but is now old and not dealing with telemetry.
I am able to send dshot packets to the ESC to control the speed (https://github.com/JyeSmith/dshot-esc-t ... tester.ino) but am now looking for suggestion on what would be the best method of receiving telemetry packets sent back???
End goal is to be able to control the speed and read voltage+erpm telemetry. This will allow me to make a KV tester for hand wound motors
Thanks for looking