■ FIGURE 9. The assembled transmitter.
■ FIGURE 10. Transmitter disguised as a pack of cigarettes
and a pen in pocket.
■ FIGURE 11. Arduino program flowchart.
34 February 2011
Building the Hardware
The circuit was assembled on a 1.75 inch square
piece of perf board. A photo of the finished circuit is
shown in Figure 8.
Discretion is a priority for channel changers. Along
those lines, a slim packaging for the product was a
priority. This is complicated a little by the size of the Mega
board which has plenty of pin-out space. To keep things
small, the perf board circuit was packaged in between two
5 x 2 inch pieces of Plexiglas using small screws and nuts
to hold things at the proper spacing. The Arduino Mega
board fit snugly in the enclosure so the whole device
thickness was 7/8 inch; thin enough to fit comfortably in a
shirt pocket or a jean’s back pocket.
To minimize suspicion, the lid from a cigarette pack
was placed on top of the enclosure. The IR LED emitters
were glued into a pen which was mounted to the
enclosure. The final product is shown in Figure 9. Figure
10 shows the device disguised as a pack of cigarettes and
a pen in a shirt pocket demonstrating its non-noteworthy
The Transmitter Program
There are three sample IR transmitter programs
provided in the downloads section.
“GE_Ch_Up_Codes.pde” contains 211 codes for changing
the channel. There is also a version that sends power off
codes, and a version that sends volume up codes.
The majority of the program is the code data. This
block of code can be copied directly from the serial
monitor after code collection is complete. As written, each
code is sent in triplicate and needs to be trimmed. An
easy way to do this is to scan the number of bursts in the
second element of the array. It should be the same for
each code, and has to be an odd number. Keep one of
each group of three, discarding outliers if any exist.
The rest of the program is a loop of about 30 lines of
code. For each code, the program loops through each burst
duration. The number of flashes for a burst is calculated
based on the frequency; a constant of 38 kHz for the
collection method here. Then, the program enters a loop
and transmits the pulses by cycling the output pin high then
low. To keep timing simple, bursts and off periods are
treated the same except the pin is kept low for off periods.
Figure 11 is a flowchart of how the program works.
Testing the Scrambler
Testing the device is as easy as browsing the TV
selection at a local store with the project in a shirt pocket.
As configured, the device will change the channel on
about 60% of TVs. Range is a good aisle away. Most
stores keep all the TVs on the same channel, so it doesn’t
take long for a clerk to ask “What’s going on with the