Read/Emulate Remote Controls

Remotes are everywhere. They are the interface to your TVs, music systems and what-not. You probably have a few spare ones lying around, devastated at the demise of their better halves. Cheer them up and put them back into use! (Skynet approves) Here are some reasons for implementing or emulating remotes in projects:

  • • to hide project someplace and operate it covertly like spy devices.
  • • if project will be installed in some inaccessible or high reaching place like DIY overhead projector, bird house water supply, etc...
  • • to remove all those ugly buttons on project enclosure.
  • • to control remote-controlled devices like TV with an Arduino or Raspberry Pi.
  • • because remotes are cool

Since this instructable is quite technical, I'll just provide a brief summary of what it covers.

For Raspberry Pi, I use LIRC(Linux Infrared Remote Control) which handles most of the heavy lifting for us. LIRC can also be used with Python scripts, which I use to control the raspbian-bundled Slide and Simulate games with remote. We can also recreate IR signal using LIRC to control a TV or make a universal remote control.

Using Arduino, I explain how to read raw remote signals using interrupts, so Arduino can do other stuff while waiting for someone to press that button. Also interrupts will get the most accurate timing data.

Then decode the recorded remote codes to identify individual buttons without overflowing memory. Usually saving a few button's IR codes will fill up Arduino's memory. I used this in my RGB LED Strip Controller.

Also, I show how to recreate IR signals for any remote's button to control TV with an Arduino!