0
\$\begingroup\$

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?

\$\endgroup\$
6
  • \$\begingroup\$ 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. \$\endgroup\$
    – glen_geek
    Commented Oct 14, 2022 at 23:06
  • \$\begingroup\$ 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. \$\endgroup\$
    – Simon B
    Commented Oct 14, 2022 at 23:08
  • \$\begingroup\$ 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. \$\endgroup\$ Commented Oct 15, 2022 at 0:30
  • \$\begingroup\$ 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. \$\endgroup\$
    – Jens
    Commented Oct 15, 2022 at 2:49
  • \$\begingroup\$ @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. \$\endgroup\$
    – Justme
    Commented Oct 15, 2022 at 7:41

1 Answer 1

1
\$\begingroup\$

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

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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