Adding a keypad to the Spektrum DX radios!

I have successfully sent varying pulses depending on which of the 3 buttons on the Bot Board II are pressed. 8)

[code]cha1 var word
cha2 var word
cha3 var word
cha4 var word
cha5 var word
cha6 var word
intest var bit
xx var byte
a_key var bit
b_key var bit
c_key var bit

sound 9, [100\880, 100\988, 100\1046, 100\1175]

low 3
input 12
input 13
input 14

start: ; find the beginning.
intest = in0
if intest = 1 then start
for xx=1 to 10
intest = in0
if intest = 1 then start
pauseus 500
next

start2:
intest = in0
if intest = 0 then start2
pauseus 500
pulsin 0,1,cha1
pauseus 500
pulsin 0,1,cha2
pauseus 500
pulsin 0,1,cha3
pauseus 500
pulsin 0,1,cha4
pauseus 500
pulsin 0,1,cha5
pauseus 500
pulsin 0,1,cha6
pauseus 500

;serout S_OUT,i57600,[dec5 cha1\5," "]

a_key = in12
b_key = in13
c_key = in14

cha5 = 1400
if a_key = 1 then next1
cha5 = 1500
next1:
if b_key = 1 then next2
cha5 = 1600
next2:
if c_key = 1 then next3
cha5 = 1700
next3:

cha1=cha12
cha2=cha2
2
cha3=cha32
cha4=cha4
2
;cha5=cha52
cha6=cha6
2

;serout S_OUT,i57600,[dec5 cha5\5," "]

makepulses:
high 3
pauseus 740
pulsout 3,cha1
pauseus 740
pulsout 3,cha2
pauseus 740
pulsout 3,cha3
pauseus 740
pulsout 3,cha4
pauseus 740
pulsout 3,cha5
pauseus 740
pulsout 3,cha6
pauseus 740
low 3
goto start2[/code]

I was seeing some unexpected results from my program, so I went through some reality checks. Pulsin has a 1uS resolution and pulsout has a 0.5uS resolution. However there is still a difference in measured pulses going from the main board to the transmitter compared to the pulses coming from the receivers output. :open_mouth: In fact if I read the pulses coming from the main board and sent them to the transmitter all was fine. However when I tried to inject pulses with the real outputs 1000uS to 2000us. The transmitter would not even work.

First off the radio itself generates the following pulse values measured at the receivers outputs. (where you plug servos in). My testing was done with default values for throw.

[code] default exp. (150%)
min 1130uS 940uS
center 1500uS 1500uS
max 1884uS 2060uS[/code]

I read the pulses coming from the main board using the IDE. I also verified it with my scope just to be sure. I got the following.

[code] main board receiver out
min 722uS 1130uS
center 1095uS 1500uS
max 1486uS 1884uS[/code]

So what’s going on here?

Looks like in order to save some time they subtracted 400uS from the desired pulse length from the main board and the transmitter module added it back in. It may be the receiver module itself where the 400us is added back in.

So for a 1100uS pulse you would need to send (1100 - 400) x 2 = 1400. For 1150uS it’s (1150 - 400) x 2 = 1500.

So it worked before, but now I know why. Wow my head hurt on that one. :smiling_imp:

Huge sigh. Got the DX5e and DX6i in and the good news is they apparently use the same scheme as the transmitter module goes direct to the main board on both of them. The bad news is they are no longer doing pulse length signals to the transmitter module like the older DX6! :frowning: It’s now 100% digital communication. You can see the binary counting in the signal as you move the stick. Here is an image.

At this point it might be easier to make a board to replace the main board completely.

A custom board with that unique shape is going to be a challenge.

We don’t need that large silly shaped board. A small 1" x 1" board would fit all we would need. 4 x analog inputs and a 4 x 8 keyboard matrix.

AH HA!

Then it’s an easy job 8) got a schematic? :question:

Well I’m at my limit for figuring this out. I don’t have a logic analyzer to try and reverse engineer it. The original DX6 was a hackers dream come true. Finally a cheap reliable glitch free radio system that could easily be expanded to add many keys. The beauty of that radio is the transmitter module was on a daughter board with it’s own processor. It handled binding to the receiver all on it’s own. Now the transmitter module is connected directly to the main processor Mega128 on the DX6i. So not only would we need to reverse engineer the data protocol the binding protocol would need to be implemented as well. I’m quite certain that Spektrum will not want to share this information. It may not be that big a deal to figure it out, but it’s beyond my capabilities. As far as I’m concerned I’m sticking a fork into this project. It’s dead ended.

Another way to accomplish the same thing would be to buy an inexpensive FM radio system and rip the board out of it. Replace it with a processor and some other 2.4ghz bidi communication system. I’m not sure which one would be appropriate, Zigbee, Bluetooth, or something else entirely. At least with this method it would be possible to send data back from the robot, opening many other possibilities.

How are CH5 and CH6 switches implemented? If you measure the pins when you switch them are they just implemented as on/off or are they returning different voltage levels? The thought being if the inputs to the PCB are analog or digital… analog you could possibly put your 16 levels thing from the keypad on and just read the corresponding servo pulse width on the other end.

Alas I believe they are on or off only. In fact there are 16 digital inputs utilized in the circuitry. I was able to find some information on an earlier version of the DX7. It’s a cross between my DX6 transmitter, but it has the additional signals that I believe they are using now. The guy describes it as 128 bit synchronous communication. He went on to further clarify this:

1st 16bit word= Model ID (i.e. equates to the model memory number selected)
2nd word= Throttle position information
3rd word= Aileron
4th word= Elevator
5th word= Rudder
6th word= Gear
7th word= Flap
8th word= Aux2

Here is the link.
rcgroups.com/forums/showthread.php?t=671129

I googled X1TXN and got a lot of hits.

Hi Jim,

Hmm… This doesn’t sound to good. And it started so well. I’ll hope you or somebody else will figure out a way to get it to work anyway. The precision of the remote in combination with 16 buttons sounded really good! :unamused:

Xan

So, um, are you still planning to stock the DX6i w/BR6000 receiver ?

Yeah sure. I’m just no longer very excited about it. They are more stable than the Laser FM radios at least.

In case anyone is interested in the legal ramification concerning modification to Spektrum radios, I found the following at the rcgroups forum.

Actually, looking at the spektrum and horizon websites I’m not certain the BR6000 (DSM) is compatible with the DX6i… unless the DX6i can do DSM as well as DSM2… which would not make any sense because they specifically say the DX6i is not compatible with the AR6000 which is also DSM. Maybe need to make sure not trying to mix apples and oranges.

Anyway… moving forward, I don’t see why one of the DSM2 AIRMODs could not be used to do this. Obviously you would need to generate the PPM stream and supply power just like any other RF module based radio would. I don’t see why this would be any more expensive than buying a DX6i, hacking it up, and installing a BAP or whatever to drive the radio with the keypad. Just wire the BAP to the AIRMOD and bypass the hacking… provided the BAP can generate the required PPM signals of course. Spektrum has made the AIRMODs to address people hacking the DX6/DX7 for the RF modules and putting them into EVOs and other modular radios with better programming features. What you are trying to do here doesn’t seem all that different in concept except you were trying to keep the rest of the DX6 in while adding the extra features. Could you make a piece of plastic that supports a PS2 controller, a 16-key keypad, a BAP on a PCB of some sort to hook it all together, an AIRMOD, a battery, and an antenna?

I haven’t tried it yet, but I believe robot marketplace is selling the DX6i with the BR6000.

You read my mind on the airmods thing. The cheapest I found was this. Spektrum DSM2 AIRMOD MZ-COMPATIBLE w/AR7000 Our Price: $109.99

I’m not sure, but shouldn’t they have a module that supports PPM too.

I have been reading a 1700 plus post on rcgroups.com and agree completely that the reason they moved away from PPM to sync serial on their radios was to stop the transmitter swapping that was rampant in 06.

I have already done this with an Atom Pro. :smiley:

What we have really been trying to accomplish is get the keypad added to a stick style radio due to the better joysticks. It might be a worthwhile project to add the airmod module, keypad, micro (not necessarily an Atom) to any old stick radio case.

I believe all the futaba RF modules at least require a PPM input. They repeat many times in the AIRMOD user manual to make certain the radio is in PPM mode rather than PCM mode.

No doubt on that here, plus they saved money with fewer assemblies in the DX6i.

Ho! 8)

Yes you are correct. I have confirmed that the AIRMODS do support PPM. So it should be easy to make an OPEN RC Radio. Specific to robotics. I may be able to get some Hitec radios w/out electronics too. It’s still probably going to cost more than modifying a DX6, but there is nothing else out there that’s not prohibitively expensive for this level of control.

I did some reverse engineering of some mechanical radio stuff. This is the fun and easy sort of reverse engineering stuff where you tear things apart! :open_mouth: My intention was to find a suitable RC set with which to retrofit my own electronics and of course the keypads. I took apart an old Tower Hobbies (Futaba) and an old Laser 4 transmitter. There was no easy way to add any sort of keypad. Nothing else looked suitable at any price. So I decided to make it a custom tray system. This simply means that all of the parts go atop a main panel. In fact I decided this was the way to go when I saw the high end Graupner, Multiplex, and Futaba systems use this method. I have seen high end Futaba RC sets with additional channels to turn things on and off, but they wanted over $2000.00 for it. My approach will cost only a couple hundred.

So my prototype will be made up with two or three Gimbals from Laser radios, a Bot BOard II with an Atom Pro, and an AIRMOD 2.4ghz transmitter module. Maybe a serial LCD as well. The keypad choice is still in the air, but at least I will have a nice clean flat place to mount one. :wink: Still need to find an easy way to make the rest of the enclosure too. :stuck_out_tongue: I think I will restart this topic as do it yourself RC, or Open RC as the scope has changed dramatically…

I NEED TO NO THIS ASAP

Can u set up the DX6i so that u can control the robot with JUST the RIGHT stick (the spring loaded one) I have the ar6000 reciver and the bot has 2 motors and controlers

IF U CAN HOW???

Thanks