Posted by Jordi Muñoz on March 15, 2009 at 12:00pm
Since i got my new 2.4ghz spektrum radio (I FALL IN LOVE) i always wonder how the daughter receiver send data to the mother, maybe PPM? mmhh not! With a little help of an oscilloscope i started to reverse engineer the protocol used, well i saw only steady digital signal with lows of 8.6 useconds, that responded to the movements of my radio, so i quickly realize that is some kind of serial communication, and i did the calculations (1000000us/8.6us=116279bps) and i thought that maybe the serial speed was 115200bps. So i attached my FTDI cable and start analyzing the data, and i got this:Spektrum daughter board is sending 16 bytes of information using a serial com. running at 115200bps. As you see in the picture above, the two first bytes are the preamble or sync bytes (0x03, 0x01). The data comes in integers that response precisely in the order is labeled in the picture...So Paparazzi users this is a way to switch 2.4ghz (only in American), the back of my Specktrum radio says: "NOT FOR USE IN EU", uuh!I hope somebody can do something usefully with it, enjoy!
As mentioned in my plog post you can use the differents in value inteerval to identifying witch channel the bytepair belongs to rather than using syncbytes.
On DX6 the cahannels had each their one interval og 1022 bit. (ch1: 0 - 1022, ch2: 1024 - 2046 ...)
I was finally able to find a way to connect my arduino duemilanove to the spectrum receiver. I was also able to make sens out of the transfer protocol, an wrote a library for pulling the different channels from the signal.
My Spektrum DX8 digital receiver has a 3.3v (orange), ground (black) and data (gray) line. The data seems to be at 115200 baud and is producing a different stream of data. I have not been able to work out witch bytes are witch controls.
Is it possible the sync or preamble is in fact the transmitterID, and that "binding" means ignoring serial lines that start with other sync values?
It would seem weak to waste serial bandwidth reporting on excluded signals, but it seems possible? Are 4 bytes of data is probably enough to ensure uniqueness? 4096 unique codes. Probably not enough.
Comments
As mentioned in my plog post you can use the differents in value inteerval to identifying witch channel the bytepair belongs to rather than using syncbytes.
On DX6 the cahannels had each their one interval og 1022 bit. (ch1: 0 - 1022, ch2: 1024 - 2046 ...)
Maby this is a easyer way on the DX8
I'll duplicate your findings this weekend (if my off systems say quite.)
I have a Arduino Mega to work with.
The library and a step by step guide on this topic may be found in this blog post:
http://www.dogfight.no/2011/01/spectrum-receiver-satellite-to-ardui...
My Spektrum DX8 digital receiver has a 3.3v (orange), ground (black) and data (gray) line. The data seems to be at 115200 baud and is producing a different stream of data. I have not been able to work out witch bytes are witch controls.
This is just the coolest info ever. I've been looking for this for a time. Thanks. I'll try it on my 8 and see what I see.
http://www.rcgroups.com/forums/showthread.php?t=922566
Is just a preamble. The bind is another process that tune the devices to hear only our radio.
It would seem weak to waste serial bandwidth reporting on excluded signals, but it seems possible? Are 4 bytes of data is probably enough to ensure uniqueness? 4096 unique codes. Probably not enough.