0

I have a LED string lights that can be controlled with an IR remote (e.g. ON/OFF, blinking mode, brightness, etc.) and the circuit looks like this:

enter image description here

FYI the lights work like this: The U1 IC controls the signal that is fed to the LED, with the BUTTON you can cycle through the different lighting modes, the SW switches between timer on/off and manual on/off mode, and there is the IR remote control part as well.

My goal is to connect a microcontroller (e.g. ESP8266) to the control IC of the LED lights so I would be able to send the (decoded IR) commands from the microcontroller to the control IC to control the lights, while keeping the function to use the IR remote as well.

So far I think I was able to identify the IR commands that the remote sends by connecting an Arduino Uno to the OUT pin of the IR receiver and using the Arduino-IRemote library to decode the signals. It seems like that it uses a simple NEC protocol.

I was hoping that I'd be able to simply connect one of the GPIO pin of the microcontroller to the pin 1 of the IC and just send the command signal (that you'd normally send to the IR transmitter) on the GPIO so the control IC would recognize it as a normal command.

I tried to do that with the Arduino by using the same library and sending the command signal to pin 1 as I would send it to an IR transmitter, but the IC didn't recognize the command. (Note: I switched the GPIO to input to let pin float when I wasn't sending the signal from the microcontroller so the IR remote can be used too)

Is it possible to achieve this somehow? Am I correct to assume that the digital signal on the IR transmit side is the same as the digital signal on the receive side, or is there a modification that the IR receiver does?

Razero
  • 187
  • 3
  • I'll bet pin 1 sits near +5V (logic high) when IR remote is not transmitting. That IR_receiver likely actively pulls down to logic low for a short time when it sees IR pulses. When you connect the microcontroller GPIO output pin to pin 1 (in parallel) it should be **pull-down** only, and **not pull-up**. Much like I2C bus. You're close to working, and on the right track. – glen_geek Oct 14 '22 at 23:06
  • You may have a better idea of what the receiver module is doing if you can find a part number on the device, then looking for a data sheet for it. – Simon B Oct 14 '22 at 23:08
  • How about just driving an IR emitter from the Arduino GPIO, and placing it so it illuminates the IR receiver? That way you don't interfere with the IR receiver circuitry at all. – Mark Leavitt Oct 15 '22 at 00:30
  • Most IR receiver chips are actie low, so you should invert your signal. Put >= 1 k ohm between OUT and pin 1 to decouple OUT from your GPIO. – Jens Oct 15 '22 at 02:49
  • @Jens Most IR receivers have open-drain output so they can be just wired in parallel, if MCU can output active low open drain signals. – Justme Oct 15 '22 at 07:41
  • @Justme This "wired or" would allow the IR receiver to compromise the MCU output. I had problems of this kind with some gas-discharge lamps. – Jens Oct 15 '22 at 17:07

1 Answers1

1

The IR receiver is driving the OUT line all the time even when there is no IR signal being received. The Arduino may be able to overdrive it to a low but it is not guaranteed. Also there may be sporadic signals coming from the IR receiver even when the remote is not active, normally they would be rejected by software but they could destroy the integrity of the signal you are attempting to send.

A better way is to disconnect the IR receiver from U1 when you want to send a command. This could be an active device but I would expect a resistor of about 4.7k would work fine. This would allow the Arduino to control the signal into U1 when you enable its GPIO or for the IR receiver to send its signal at other times when the Arduino output is changed to an input.

When sending the signal to U1 make sure that the preamble is sent correctly or U1 will not recognize it as a valid signal.

Another way of doing the same thing without modifying the circuit is to put an IR diode on the output of the Arduino and send it an optical signal that mimics the remote control.

Note the component you have marked as an IR LED is in fact a complete IR receiver that is probably similar to one of these:

enter image description here

IR Receiver Module Datasheet

Kevin White
  • 32,097
  • 1
  • 47
  • 74