Increase IR strength

Posted on
  • I've successfully recorded some IR commands and played them back via Puck.IR, but I need to hold the Puck very closely to the receiver. Is there a way to increase the reach of the IR LED?

    If not, what is the recommended way yo create a multi IR-LED panel with increased power/reach? I would like to send the same signal via multiple IR leds, if possible in each direction (like a roudn panel and every few degrees a new IR LED). Has someone done this before?

  • I too couldnt get much range from the IR on the puck

    In the end I decided not to use the puck for IR and went with an esp8266 wifi chip and external ir's, i get a few metres range with this­dyC/wifi-ir-blaster-af6bca

    You could perhaps try the same approach as the link and use a transistor and external ir leds with the puck

  • With the case off you can get a little more range, but yes, it's not huge.

    There's a little surface mount resistor next to the IR LED, and you could try shorting that out to increase the transmit power - for small bursts of IR it wouldn't cause a big problem and would increase the range.

    You could also just attach a normal 5mm IR LED from a remote control, which would help a lot - and you'd then just have to use the IR code from here with it:

    As @MattC says, for max power you'd need to rig up something with a transistor (which may be slightly harder because of the way Espruino normally does IR, using one pin for the oscillator and one for signal). However using a 5mm IR LED on the Pico you get pretty good range - I don't think Puck.js should be much worse.

  • I have also the problem of short range. It's about 50cm, not much more.

    @Gordon: Can I somehow redirect the convenience functions of the Puck to another GPIO?
    Do you also use two pins on the Puck for IR?

  • Yes, it was never designed for long range.

    At the moment the Puck.IR function can't have pins specified for it. I have an issue filed to add it, but as I said above it should be as easy as using normal Espruino IR code. Something like this should work:

    function IR(a,b,data) {
      digitalPulse(b, 1, data);
      digitalPulse(b, 1, 0);

    Just stick the IR LED on any 2 data bits and call the above with the 2 pins + data.

  • I tried using an external LED with the code provided above. Still could not get much more than 50cm range out of the puck.

    @Gordon, could you please explain a bit more in detail why using a transistor would be so hard? I am no good with hardware. Would AND-ing the ouputs of b and !a with an IC, and controlling a transistor with that signal work?

  • Shame it didn't give you more range - that's interesting. Did you use a resistor with it or did you attach it direct?

    Would AND-ing the ouputs of b and !a with an IC, and controlling a transistor with that signal work?

    Yes, that'd work fine. If you're ok with using an AND gate then you have nothing to worry about!

    In fact, you might find that you can use an opto-isolator (wired up like the LED) to act as an AND gate, and can then drive the LED directly off that (depending how good your optoisolator is). That's be nice and easy.

    The other option is to try and power Puck.js off of a more powerful battery - you could give it a go with a power supply at 3.6v (the maximum) first and see if that helps. (Using a LiPo directly is a bad idea as that can be over 3.6v)

  • @Gordon Thank you. Ill try to use a gate first, and report back the range I am able to get. Will have to work making it small and neat afterwords.

    Would this be the software-equivalent of NOT-ing a?


    Did you use a resistor with it or did you attach it direct?

    I tried both :)

  • Would this be the software-equivalent of NOT-ing a?

    Yes, that'd work fine. You could try just setting it to 50% too, but sometimes you get better results if you just 'pulse' the LED briefly

  • Hey, @hansamann. One thing that occurred to me was leaving the IR Puck nearest your receivers, then using BLE to talk to that Puck from either

    • a Web Bluetooth app on your phone
    • a second Puck

    But adding a 5mm IR LED is probably a better bet. @Gordon, what's the recommended maximum mA draw for such an LED?

  • 15mA would seem to be fine (especially if sending short pulses of IR).

    See the graph on­sp?topic=%2Fcom.nordic.infocenter.nrf528­ at the bottom

    Having said that, it depends what I've set the 'drive mode' to. And looking at the code it seems I have set the drive move to 'standard', so the max you could use is 5mA.

    I should probably set the drive modes to high for everything, but I wonder whether anyone can think of a reason why this would be bad

  • Check out this post:­301802/#comment13524797

    I just changed the firmware to use high drive and to tweak the duty cycle, and I'm getting around 90cm out of a standard Puck.js now!

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Increase IR strength

Posted by Avatar for hansamann @hansamann