■ FIGURE 5. Universal remote control hacked for control
by Arduino. Reed relays simulate button presses.
Collect codes using the instructions for your universal
remote. For the GE 24991, start at the first code by
holding setup until the light stays on, press TV, then enter
“0000.” Point the remote control at your IR receiver and
press the button you wish to capture. The code will print
on the serial monitor. Move to the next device/code by
holding setup until the light stays red, press TV, press
channel up, then press enter. Collect the code and repeat.
There will be more than 200 codes. You can capture
codes using this method for any function you wish:
channel up, channel down, volume up, etc. Codes for
channel up, power off, and volume up are available in the
downloads section in the source code.
Automating Code Collection
Collecting a complete set of codes manually takes
■ FIGURE 6. Schematic for Arduino interface to the
universal remote control. One of five reed switch
modules shown.
32 February 2011
quite a bit of button pressing on a universal remote. A
more satisfying approach is to use the Arduino to run the
remote control. Figure 5 is a photo of the completed
circuit. It allows the Arduino to “press” the buttons on the
remote control by connecting reed relays in parallel with
the remote control buttons. When the Arduino closes a
relay, that button is “pressed.”
To connect the relays, a little studying of the
disassembled remote control board is required. Make a list
of the buttons you need pressed, then locate the copper
traces connected to each side of the button. Find an area
on the trace wide enough to solder to, sand off the
varnish, and solder on a wire. To help keep track of things,
it is best to number the wires and write down the two
wire numbers that correspond to the buttons on your list.
In the case pictured, there are five buttons controlled with
seven wires (the buttons share wires).
Figure 6 is a schematic of the hook-up. A mix of five
and 12 volt reed relays were used for this project because
they were available in the spare parts box. NPN transistors
were used to drive all the relays from the Arduino,
although they are probably not needed for the five volt
reed relays. A 220 ohm resistor is placed between the
Arduino pin and the transistor base to limit current. Two
six-volt lantern batteries power the system. A 330 ohm
resistor is used on the five volt reed relay to limit current
to the appropriate 11 milliamps.
The Arduino program for running the remote control
is named “Controller” and is also provided in the
downloads. It is a short program that sets one of five pins
to high for brief periods. These actions cause the reed
relays to close and simulate button presses on the remote
control. A quarter second button press works well. Too
long of a press, and the remote control signal becomes
longer than necessary. This version sends each code three
times so they can be reviewed for consistency.
Two Arduino boards are used to automatically collect
the codes. One board is used to run the remote control
and is running the program “Controller.” A second board
is connected to the IR receiver, is running
“Code_Collector,” and is sending the collected codes to
the serial monitor. Attempts to perform both functions at
the same time using one Arduino board produced corrupt
codes. This was due to the fact that the button press
routine terminates the press in the middle of a code
collection. The processing overhead interferes with timing
as the signal is being decoded. A solution would be to use
a timing circuit with a 555 chip to press the button for a
quarter second so the Arduino is free to collect the code.
To use both boards together, first set up the
“Code_Collector” so it’s ready to receive IR signals. Hook
this to your PC and turn on the serial monitor. Reset the
universal remote control to the first code; for the GE
24991, this is “0000.” Finally, power up the second
Arduino running “Controller” with the hijacked remote
control pointing at the IR receiver. The collected codes
will start printing to the serial monitor, ready to copy