This page will be used to document the progress that I am making
on my home brew wireless DCC system. After looking at what is available
on the market as far as wireless systems, I decided to design my own. Some
may think that I am crazy but I like doing this sort of thing. My profession
is embedded system programming so this is right up my alley. The goal
is to produce a wireless throttle that can be built for about $100. For
the project I will use off the shelf assemblies that will make the
job a little easier. For instance the wireless portion will be an
off the shelf module that is already FCC certified. The display and micro
will be a low cost commercially available board. I will have to develop
the PC board to mount all of the components.
The command station will also have to be designed but I am going to
take a short cut here. I have an old low cost MRC command station that
I am going to modify for my purpose. Basically I will be removing the micro
from this and substituting my own micro. Really all that I will be using
from the command station will be the analog circuitry that provides the
voltage levels needed at the track. My micro will be generating the digital
wave form that will feed this circuitry. The micro will also have to interface
to a wireless module to receive the transmissions from all of the wireless
throttles. This circuitry has already been built and the code developed
to control locomotive speed/direction and also commands for activating the
auxiliary function such as sounds and headlights.
The image below is the prototype circuit board for the wireless throttles.
The upper third of the board will provide all of the connections to the
off the shelf micro and LCD display board. The wireless module will sit
down in the lower left portion of the board. It is a surface mount device
so it will mount on all of those horizontal pads. In the lower right is a
14 pin device that will provide the interface to the keypad. Just above that
are the mounting pads for the keypad connector. In the center we have a couple
more connectors that can be used to update the code in the micro. At the
bottom of the board are the connectors for the batteries, an LED and the
on/off switch. The throttle will be powered by 2 AA standard or rechargeable
This next image is the microcontroller board that I am using. This
board is an off the shelf assembly that includes a micro, LCD and the joystick
control. This board will be slightly modified by removing 4 resistors on the
back side and adding two jumper wires. This is necessary to bypass the RS232
driver on the micro board. The RF module that I will be using expects CMOS
levels rather than RS232. I could have added an RS232 driver to the RF module
but that adds more cost and would eat up more power. The other thing that
must be done to the micro board is to solder header pins into all of those
holes so that it can be mounted on the PCB shown above. I have also removed
the coin cell battery from the micro board battery holder. The micro will
be powered from 2 AA batteries that feed power to the PCB assembly above.
The cost of this micro board is about $20.
Here is the back side of the Butterfly board. As you can see it is setup
to be self contained with it's own battery. It also has a clip on it so that
you can wear it as a name badge! The clip is easily removed since it is stuck
on with double stick tape. The micro is the black object in the center of
the board. Above it is a flash chip that can be used to store extra information.
The white object on the right is a piezo speaker that could be used for audio.
The demo software for the board plays tunes. On the left is the coin cell
holder with the battery removed.
This next shot is the built up throttle all packaged in a hand
held case. The LCD provides the current status. In this case the throttle
is set for forwards at speed step 6. The LCD can also be used to select
the locomotive number to control and also add new locomotives to the system.
Locomotives can be addressed using 4 digit numbers using the keypad. To
the right of the LCD is a mini joystick control. This is also part of the
off the shelf micro board. The joystick can be used to select various features
such as locomotive selection and etc. The keypad is used to control speed
and to activate auxiliary functions when in the run mode. Speed up and down
are handled by the A and B keys respectively. The C key is used to change
directions and the D key is used to stop. The number keys activate headlights
and sounds based upon function number of the decoder. By the way I will not
be designing my own decoders! Some of the unfinished items on the throttle
is to find a better knob for the joystick control. I also need to come up
with some key labels to make the throttle easy for anyone to use. So far
I have built up two throttles with a third one in progress.
This next shot is what I have come up with for the keypad labels. The
column of keys on the right side provide for locomotive control. The first
two keys are speed up and down. The next toggles the direction and the lower
key can be used to stop the locomotive. I have added some icons to the number
keys to try and illustrate the sound options. These are based upon the decoder
used in the Blackstone K27. I haven't decided whether I should add a rotary
speed control at this point.
I finally solved my problem with a knob for the mini joystick. I found
a pack of 4 push button switches at Rad Shack. These are the type that you
might see on the door jamb of an older car. The plastic knob is perfect for
a little joystick knob. The switch is easily disassembled by cutting the back
end which is plastic. The only other mod is cutting the knob so that it is
not quite so tall and enlarging the hole to fit over the mini joystick.
I have the system up and running in a limited fashion. My test
subjects have been a Blackstone K27 with a full sound system and two Sunset
Ks with Lenz decoders. At the moment I have the throttles hard coded to
the locomotive address to be controlled. What I plan to do is to allow
selection of the locomotives from the throttles. The command station will
store a list of all locomotives in the system which can be sent via wireless
to each of the throttles. The user can then pick the desired locomotive
from this list assuming that it is not in use by another throttle. This
should be easily done by using the joystick control to scroll up/down through
the list. The throttle will also be able to add new locomotives to the system.
The locomotive number will be entered into the throttle and then sent via
wireless to the command station. The locomotive number will then be retained
by the command station for later use. I also need to work on consist control
at some point so that I can double head the Ks.
At this time I don't plan on providing any decoder programming through
this system. I use one of the windows based decoder programmers which makes
it much easier than trying to do it through a command station.
So far this has been a fun project for me. I have learned quite a
bit about the details of DCC and have been able to generate the necessary
signals on the rails. I am able to fully control all of the features on
my sound equipped K27. I just need to work on the software a little more
to allow locomotive selection and the ability to do consisting.