I have a tv remote that I want to connect to an Arduino so that I can send a series of commands to the TV using the remote. I would like to open the remote and solder transistors or a Transistor Array in place of the buttons. I have never done this before, so what do I need to be aware of? I think that I will need to power the remote using the Arduino's power supply, but I am a bit foggy on the details.


If you're just running lines to the buttons, you won't need to power the remote from the arduino. You could just let it keep the internal batteries. But it would be possible to wire it up for power as well.

As a learning project, you could just take it apart and see if you can access the button contacts. See if the contacts are split. If so, shorting one side to the other should count as a button press. But the details have nothing to do with an arduino. They would depend on your specific remote and how it's constructed.

If your purpose is really to control the TV (rather than learning about the remote and fiddling with it), it will be much easier (and probably cheaper) to blast the IR without involving the remote at all. A single IR transmitter and a library would work in most cases. As an example: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html

P.S. By coincidence, Adafruit just posted an updated guide to IR library use on Arduino. https://learn.adafruit.com/using-an-infrared-library/overview

  • That library is probably the best option. Still, if I were to use the 'short' rout, I still need to automate the pressing of buttons in a specific order / timing. I opened the remote and it does use two sided contacts. How can I short them in a controlled, automatic way using an Arduino? – Hoytman Feb 27 '15 at 4:09
  • If you get an IR photodiode, you can read the output from the remote, store it either as flash or in program data. I've seen it done, Practical Electronics years ago on a PIC, so I know it works. You could add a 'learn' mode to your program.. you know, 'Press "1" now' sort of thing. – Mark Williams Feb 27 '15 at 8:29
  • @Hoytman, An electrically easy way is to use a solid-state relay. Treat it like an LED from the arduino and when it's on it completes the circut. Use it to bridge the button. More complex would be to tie the two devices together to ground and feed power to the correct side of the button. That's more difficult in terms of investigation (which side is low and which is high) and making sure the voltage is good. But it would probably be cheaper (no SSRs to deal with). – BowlOfRed Feb 27 '15 at 16:32
  • +1 for IR blasting. There's no need to complicate it by involving the remote except to program the Arduino with the command sequences. – Ignacio Vazquez-Abrams Feb 28 '15 at 18:27

Using an IR library as mentioned in a previous answer is likely to be about the best approach. However, if you decide to use electronic switches to jumper across the remote's switch contacts, consider using CMOS analog switch chips for the purpose. If each button on the remote connects one contact to a common net, inexpensive chips like 74HC4051 and CD74HCT4067 would serve for 8 or 16 buttons each, respectively.

I don't have a reference for an affordable many-SPST-contacts CMOS switch. Inexpensive chips with a few such contacts are available. The 74HC4053, for example, contains three SPDT CMOS switches. Handling a dozen buttons would use four 4053 chips. A CD4007 probably could provide three SPST switches also.

PS4051/52/53 pinouts Edit: The figure above shows pinouts of CD4051/52/53 devices. To use a CD4053 as three separate switches, connect V- and GND to Arduino ground, V+ to +5V or +3.3V, and each of COMA,B,C to one circuit contact to be switched. With NCA, NCB, NCC connected to the other contacts of circuits A, B, C, raise ADDA, B, or C and drop INH to close circuit A, B, or C.

If your remote has dozens of buttons, it's likely that they are arranged in rows and columns for multiplexed scanning. In this case, follow the printed circuit tracks to identify which buttons attach to which rows and which columns. Suppose there are eight or fewer of one or the other; eg, suppose there are 5 columns and 8 rows. In this case, you would hook up 5 CD4051 chips: connect V- and GND to Arduino ground, V+ to +5V or +3.3V, and the COM of each 4051 to a different column line. Connect NO0–7 to row lines 0 to 7.

To close circuit j in column k, put j in binary on ADDA,B,C of all 4051s and drop INH on 4051 #k. (Either use one DIO line per INH, or use a DM74LS138 or MM74HC138 (etc.) and put k in binary on the A,B,C select lines of the '138.)

  • That sounds good, could you give me draw me a quick schematic of how to connect the chip? – Hoytman Feb 28 '15 at 6:01
  • 1
    Hoytman, see edit. Please remember to upvote useful answers. – James Waldby - jwpat7 Feb 28 '15 at 18:11
  • Great answer, but I really should do as the other answer recommends. – Hoytman Mar 25 '15 at 11:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.