Arduino Infrared (IR) Control… The Universal Remote Control

September 09, 2016 by Ryan Jones

The Arduino Universal Remote Control is the TV remote your dad wishes he had!

The Arduino Universal Remote Control is the TV remote your dad wishes he had!

The Universal Remote Control takes advantage of infrared transmitters and receivers that are commonly found around the house. Program your Arduino to read the incoming IR signal from your TV remote and the world universe is yours!





Arduino Diagram created with Fritzing


Once I flop on the couch I never want to get up, and I probably wouldn't if it wasn't for life's demanding attention— "I mean, the door isn't going to just answer itself, is it?" That's the moment that sparked my ultimate laziness!

Finally, a remote control that really is Universal! 

While I don't believe you will be able to control the whole Universe, I do believe that for most people their whole Universe is right inside their living room!


Thanks to the original article about using infrared to communicate with an Arduino (further technical details), I was able to control my living room in no time!

The program revolves around the IR receiver and the code that it receives from your TV remote (IR transmitter). IR transmitters utilize a specific carrier frequency, most commonly 38kHz. Each individual button on your remote has a unique digital code that turns the carrier signal on and off in its own way.

With the help of the IR receiver, the Arduino reads and demodulates each modulated signal as individual button presses—thus, essentially giving you the ability to control as many components as there are buttons on the remote! Then again, there are probably more buttons than there are Arduino pins but you get the idea!


Pulse signal turned on and off at a rate of 38kHz. Image courtesy of Sparkfun's IR Communication Lesson


Before opening and compiling the main program, use the "IRrecv" Demo and its Serial Monitor to read and decode each button that you plan on using. Take note of which code is associated with each button, then use those codes in the #define section of the main program to assign the buttons different tasks!

The first program will use one button for dual LED power-up and another for dual LED power-down. The second program will assign the LEDs their own separate power-up buttons and the main power button will turn both LEDs off.


Your Arduino will essentially do the following:

  • Look for an incoming IR signal
  • Demodulate incoming signals into specifc codes
  • Tell those specific codes to do certain commands (turn LEDs on and off)

The Arduino Universal Remote Control can do just about anything with the proper ingenuity. As always, relay switches are an easy component to exchange for the LEDs, gaining the ability to control higher, isolated voltage!

If you enjoy my terrible robots, check your nearest second-hand store for old toys and parts and get to hacking! One man's trash is another man's treasure!

Other MIT-i innovations:

Give this project a try for yourself! Get the BOM.

1 Comment