Adding a keypad to the Spektrum DX radios!

So what is the goal of the mods/programming?

To add a key pad or two to the radio system for turning things on and off and changing the bots behavior. The current PS2 controller has 2 joysticks and 16 button. This system will have a huge range, 2 joysticks, and a 16 key keypad with up to as many as 16 “function” keys.

So the receiver output for the two channels will be fed into a decoder for final control output?

Yes an Atom or other microcontroller will monitor the two channels to decode what key presses were made and what action to take.

I am now able to send Atom Pro generated pulses to the transmitter and am able to control servos through this method. I’m confused by the Atom Pro. The manual says pulsin is measured in uS and pulsout uses 0.5uS. Is that correct?

Any info on what happens in the transmitter section? Are the pulses sent in an ask/fsk fashion unmodified? Just thinking about something similar with my $10 walmart 2.4ghz cordless phone (with bi-directional capability!).

No idea really.

Well 4 hours later… I can read in and send out the pulses in the proper format for the radio to transmitter data exchange. Now we just need to write the keyboard scanning code.

[code]cha1 var word
cha2 var word
cha3 var word
cha4 var word
cha5 var word
cha6 var word
intest var byte
xx var byte

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

low 3

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," "]

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

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
;pause 4
goto start2[/code]

Kroony,

Unlike the BR6000, the AR6200 will only fail-safe on one channel and is not legal for robot competition.

It does have better range, but most robots do not need the range that an R/C plane needs.

I am presently using the DX6i with a PCTx which allows any PC to control up to nine analog channels if you have a receiver that can decode that many channels.

Just a thought.

Regards,
TCIII

Jim,

I noticed in your picture that you are experimenting with a DX6.

The DX6 and DX6i are two different beasts and might not be the same electrically.

I believe that Spektrum is no longer manufacturing the DX6 as it has been superceded by the DX6i.

Just a thought.

Regards,
TCIII

I’m pretty sure they all use the same transmitter. The one in this DX6 has DX7 silk screened on it.

This brings up two points.

  1. You should be able to inject the 7th channel for free. 8)

  2. The DX5e should be just as good.

Jim,

I think you will find that the DX6 runs on 9.6 vdc and the DX6i runs on 4.8 vdc so they may not be quite the same.

Regards,
TCIII

I searched the great google and was unable to find any images of the DX6i opened up. :frowning: We will have to wait till I get them in to see inside. :stuck_out_tongue:

Great work Jim! Let’s hope it works for the DX6i too. Did you test that the receiver got the correct pwm values too?

… hmm maybe I should have bought a Spectrum DX6i at the first, instead of the expensive Futaba :unamused:

Hi Jim,

I don’t know exactly what you are looking for but there is a pic on page 12 of the manual
And there are some other modifications on the web that are showing some pictures of the insides.
Thumb wheel mod
Mode change <- best :wink:
Xan

Yes the servos on the receiver were working as they should. :wink:

If my suspicions are correct it might work with any of the 2.4ghz radio systems. We will see soon.

The last one had the best images, but I wasn’t able to determine how the transmitter (much smaller unit than the DX6) is wired.

Ok, so assuming we will be able to get this to work on the DX6i…

This could easily be made into a 32 button keyboard using two servo channels. The microcontroller monitoring the two channels would be programmed to; turn on or off I/O pins, move servos, start SSC-32 stored sequences, change the gait or speed, or other program parameter, etc. Other programming would allow some buttons to act as shift keys, but the one way communication makes it a little more challenging. This is because the pulses are sent as long as you are pressing the buttons. This may be difficult for the robot side program to know if the button was pressed more than once or pressed for a long time.

Here is a proposal for the pulsout separation values. (0.050uS) The addition of a NOP or Null value allows 16 unique values and a nice 1.1mS to 1.9mS range. It may be possible to use 25uS separation for many more keys…

NOP 1100uS 0 1150uS 1 1200uS 2 1250uS 3 1300uS 4 1350uS 5 1400uS 6 1450uS 7 1500uS 8 1550uS 9 1600uS 10 1650uS 11 1700uS 12 1750uS 13 1800uS 14 1850uS 15 1900uS

Everything’s better with images.

DX6

DX6i

Hrm, we may need to cut a trace! :frowning:

I have ordered several of the radios. When they get here later this week I will know exactly what’s possible. My next step is to do some simple inline code for watching the A,B,C buttons and pass some values to the transmitter. Then I will connect an atom to the receiver to capture the pulses and turn on some LED’s. If that goes well I will try to get Kurte to make an interrupt driven 4 x 4 or 4 x 8 keyboard scanning program. Kurte, are you interested?