Decoding (and hacking) the Disneyland Monorail Remote Control

The Disneyland monorail set is the remote control version with FWD, REV, STOP, and SOUND.  FWD and REV are either on or off, full speed or stop.  Not that full speed is much to talk about, the DL monorail took 29 seconds to go around a circle, more than any other monorail I have tested.

The remote is infrared, not radio.  The "beacon" on the roof of the powered cab is an infrared receiver.  The controller has an infrared transmitter behind the piece of blue plastic at one end.  The carrier frequency is 38 KHz and the controls send out a pulsed signal to activate the various functions.

The protocol is simpler than expected, 6 pulses define the various outputs depending on the position of a longer than usual space between the pulses.  This is known as Pulse Position Modulation, PPM.  The pulse train is repeated about 10 times to ensure the receiver gets the message, in case of interference from sunlight, fluorescent lights, etc

The messages are:
FWD      1 pulse, space, 5 pulses
REV      2 pulses, space, 4 pulses
STOP    3 pulses, space, 3 pulses
SOUND  4 pulses, space, 2 pulses

This leaves at least one message for expansion (5 -s -1) that does not appear to be used for now.

Hacking: can more functions be added or can speed control be implemented?  Yep. An auxiliary infrared transmitter can send new signals over the same frequency.  The infrared receiver output can be ported to a secondary decoder to decode and act on the new signals.  The black glob on the circuit board is the microcontroller that decodes the signals, it would ignore any "foreign" signals.  A microcontroller ($2) can be programmed to decode the new signals, in this way we can add more functions to the monorail. 

The motor speed can be controlled by increasing the speed each time the FWD button is pressed, 8 steps may be enough to get realistic operation (the real monorail has 8 steps as I recall).  The lights could be controlled separately and lights could be added to the rear cab.  Btw, the green LEDs can't be easily swapped out for more realistic white ones, white LEDs will not work with the low voltage provided by 2 AA batteries.

Is all this easier than just changing to radio control?  Probably not although it would cost a lot less.  Plus I like to have a flashing roof beacon like the real ones, that is difficult to do with an infrared receiver taking up the spot where the beacon should go.