DIY RGB-LED Glow Poi With Remote Control




Introduction: DIY RGB-LED Glow Poi With Remote Control

About: German CS Student


Hello Everyone!
This is my first guide and (hopefully) the first one in a series of guides on my quest to create an open-source RGB-LED visual poi. To keep it simple first, this is going to result in a simple led-poi featuring remote control via IR and all kinds of colour-change-animations.

Keep in mind: This kind of poi (without IR-remote) can be bought for around 20$ on Amazon, so this is not worth the effort financially - DIY for the experience, not the result.

I hope people will contribute animations to the GitHub of this project resulting in a great variety of animations for you to choose from and therefore giving this version some more value compared to the over-the-counter ones.


First of all a few safety warnings. Only attempt this build if you know what you are doing. I am not an electrical engineer, I am not to be held liable if something goes wrong. A few dangerous steps/materials are involved and you should be aware of them:

Lipos might be dangerous. Especially soldering, shorting and storing LiPos comes with a variety of dangers. Even if the build goes well, wires might come loose, the cells might get damaged or one of the no-name Chinese components might fail and cause a short. Don’t let them charge unattended, best use an external charger to charge them up, remove the lipo for storage & transport (best is to store them in one of those „lipo bags“ I believe).

The pois are subject to some significant forces when performing with them. If you hit someone or something with them or a print fails & parts fly around people might get hurt.

Use common sense, be aware of the dangers, read up on your own if you are unsure. You get the idea.

If I haven’t spooked you, enjoy the build & have fun with them.

Step 1: Material & Tools

Bill of Materials

First lets take a look at what we need for this build. I recommend to buy most of the stuff at AliExpress if you have the time to wait. I only found the lipos at HobbyKing though.


Qty Name Source Comment
2 TP4056 Lithium Battery Charger Module, AliExpress
2 Turnigy nano-tech 1000mah 1S 15C Round Cell Hobbyking
2 2-5V to 5V Boosting Step Up Power Supply AliExpress
MT3608 booster circuit fits as well
2 ArduinoPro Mini ATMEGA328P 5V 16MHz, AliExpress
2 1838 940nm IR-Reciver Diode, AliExpress
1m APA102 LED Strip (144 or 96 LED/m), AliExpress You need about 2x10 Leds of length
2 220uF 10V Capacitor AliExpress
1 IR Remote AliExpress


Name Recommendation Comment
Soldering Iron QUICKO T12
Hot Glue Gun
Computer with Arduino IDE
FTDI USB ChipFT232 alternative: Arduino Uno
Wirestrippers optional
Wirecutters Knipex Cuttersoptional
Breadboard + Jumpers optional
Arduino Uno optional


Name Comment
Thin Wire 24-28AWG
Soldering Lead
Shrink Tube
Pin Headers (Male&Female) or small connector
Clear 3D-Printing Filament I used PLA but Nylon might give stronger results
Hot-Glue Sticks
zinc flux & solder or a metal brush/sanding paper Sanding Paper worked fine for me
Some cord for straps I used simple plastic chord but you might want to get creative

Step 2: 3D Printing

Since this takes the longest time, we’re going to start by printing all parts for this build twice with support placement „everywhere".

Head over to Thingiverse, download the STL files and slice with your favourite slicer.

I used clear PLA at 0.28 resolution which worked fine but if you can, you might want to use a stronger material to be on the safe side and prevent any malfunctions during spinning.

The result is more opaque than transparent which is good for us since the poi acts as a diffusor and lights up nicely without single LEDs visible. After the prints are done, leave the support material on and screw & unscrew the two halves a bunch of times. The support material provides a better grip and once they fit well together, you can remove all supports.

Step 3: Programming: Preparation

To compile the project we need to install the FastLED and IRremote Library.
Both can be found using Arduino IDE’s build in Library Management. To upload sketches to the Arduino pro mini, you need to use the FTDI Chip.

Additionally you need the source-code for this project which can be found over on GitHub.

Step 4: Programming: Edit the Code

I used a spare Arduino Uno for convenience but you can just use one of the Arduino Pro Minis.

Wire up the circuit shown in the picture above using one of the infrared-receiver chips, upload the IRrecvDemo example sketch to your Arduino and open up the serial monitor.

Then use your remote and press the buttons you want to use. Every button-press should display a certain hex-number. If you hold dow the button, a different hex-number should repeat.

First, copy the value of the repeating hex-number and change BTN_REPEAT to that value. Then work through the defines in the code and change all to match your remote. Make sure that all values must begin with 0x to be recognized as hex-number - so only change the highlighted part of the number.

Step 5: Programming: Upload Code

Compile the code for the poi and wire up the Arduino pro mini with your FTDI chip. Chose Arduino pro mini as device, the serial-converter as programmer and upload the code to both Arduinos.

You can easily upload the code without soldering wires/headers to the Arduino by sticking it in a breadboard as shown in the picture above. Make sure you set the voltage jumper on your programmer to 5V before connecting the programmer to your PC.

Step 6: Soldering: Overview

Next we are going to solder the components together.
Use the diagram above as a reference if anything is unclear.

Since space is limited, we want to keep the wires as short as possible, but I recommend to first solder on longer wires and then measure the correct length using the case and cut off any excess.

Step 7: Soldering: the Power Module

First solder wires to the B(attery) and OUT(put) pads of the TP4056.

Next place the TP4056 module in the bottom section of the 3d-printed-case, put the battery wires in the small channel leading up to the battery hole and cut off any excess wire.

Then place the buck-boost module beneath the TP4056 module and cut off the output wires so that you can easily solder them to the input wires of the buck boost module.

Take everything out of the print and solder two male pin-headers or the male part of your connector to your battery wires and secure them with some heat-shrink tubing.

Then solder together the output pins and input pins of both modules

Step 8: Soldering: Battery

Next we are going to solder wires and connector to the battery.

Make sure to solder quickly and precise or the heat from soldering will damage your cells. Be carefull not to short the lipos by mistake.

Soldering wires to the lipo can be tricky since the contacts are made from aluminium. You can either use special zinc flux & solder, a metal brush or sanding paper to clean any oxide off the contacts. Then solder on wires and isolate them using heat-shrink-tube.

Next we insert the battery into the 3d-printed case, measure the length of the wires, leaving a bit to spare, take it back out and cut off excess wires.

We can then solder on female pin-headers or our female connector connector to the wires and once again, isolate them using heat-shrink.

Step 9: Soldering: Arduino, Leds and Sensor

Next we have to wire up the Arduino, IR-Sensor and LED-strip

The Arduino gets wires for VCC and GND

The Infrared-Sensor is a bit more tricky: First we need to connect the capacitor as close to the sensor as possible. Since the housing of the sensor is grounded, we simply solder the capacitors negative leg to the housing the and the positive leg to VCC wire. Next we wire up all three pins and isolate them using heat-shrink-tube.

For the LED-Strip we first cut off a piece of strip with 10 LEDs. Then we solder wires to all 4 contacts.

Step 10: Soldering: Putting It All Together

The next step is to trim the wires as short as possible and connect all modules together.

We start by trimming the Arduinos power cable by placing it and the boost-module inside the case and trimming the power cable to length.

Next we repeat the same for the Infrared-Receiver.
The cables for the LED Strip can be trimmed without measuring since we have enough space to keep them a bit longer.

We can then solder the infrared-receivers power cables directly to the pins of the Arduino and its data-pin to pin 11 of the Arduino.

Next we solder the data and clock cable of our led-strip to the Arduino. Connect the clock cable to pin 5 and data cable to pin 6.

The only thing left to do is connect both the Arduinos and the led strips power cables to the output of the boost module.


Since we should now be done soldering we can plug in the battery and test everything. We want to make sure everything works fine, since after the next step debugging is going to be a nightmare.

Step 12: Assembly

Now we want to fix everything inside the case using hot-glue.

We start with the TP4056 module

then glue in the boost module

followed by the Arduino

finally the IR-receiver

and the LED-strip

Step 13: Add a Strap

I didn't go all out on this one and I would recommend you to get creative and invest a bit more time and effort than I did. I found this instructable which I am going to add in the future.

For now, I just used some chord I had laying around, fed it through the 3d-printed slots and tied a knot.

Step 14: Done!

And we're done. Repeat all steps until you have 2 and you're ready to go for a spin.

I hope you had fun following along.
Thank you for reading :)

Arduino Contest 2019

Participated in the
Arduino Contest 2019

Be the First to Share


    • Make it Move Challenge

      Make it Move Challenge
    • Reuse Challenge

      Reuse Challenge
    • Puzzles Challenge

      Puzzles Challenge


    Po TingC
    Po TingC

    11 months ago

    Cool thing, I'm a LED maker too, nice to see people sharing these how-to, though I already have my good poi/staff builds, still can improve from learning new info-s

    but there seems no low-power setting in the code and hardware, which means it needs to be charged before every use and not sure how long it would last when turned off, guess 20~40mAh for the apa102 LEDs and mini, so near 1 day the battery is out :(
    suggestions (and what I've made):
    1. the apa102(or ws2812), Arduino mini, could run without a step boost to 5V, run with 3.3V or a single lithium. saves part/room and quiescent current from LDO.
    2. I use N-channel mos to turn off apa102(~1mA per LED even in "black) and the "low-power" library to shut down mini (also probably need to remove the LDO on mini cause it takes 1~2mA quiescent current )
    3. I also use my own designed PCB for better durability, and no more wiring :)


    Reply 11 months ago

    Hey, thanks for posting in here. I've been working on this project for a long time and cannot get it too work.

    I've tried these but cannot get them to work. Not sure what programmer within the Arduino ID, (for example: USBasp, ArduinoISP, etc.).

    These are the chips that I bought but they are hard to make work. XCSOURCE 5pc Pro Mini Enhancement ATMEGA328P 16MHz 5V Compatible Arduino PRO Module TE362.

    What does LDO mean?

    I'd like to know how to build one.... can you provide me with more details.


    Po TingC
    Po TingC

    Reply 11 months ago


    It depends on what uploader you want to use, and can your USB find the device,
    USB asp will need extra driver installed to get it work. (such as this reference)The Author use mini for a small-volume reason. You don't need to do the same, an Arduino nano is easier to program with just an micro-USB, and the driver is usually installed with Arduino IDE. If you know how to program your Arduino with other program example this should start up well.

    LDO means Low DropOut (Voltage Regulater), it's the chip that turns 12V~5V to 3.3V, and usually had a quiescent current of 1~2mA and that is unacceptable to a battery.


    Reply 11 months ago

    My uploader seems to be working fine (DSD Tech SH-U09C2). Thanks for the clarification on the LDO. I mainly wanted to get this working. If you have a less power hungry solution can you link to it? The author responded but I can tell from the fact that noone has posted their builds that this has confused quite a few.


    Reply 11 months ago

    Hey Paul,
    I'm sorry to read you still haven't made any progress... Since I didn't hear back, I thought you might have found a solution.

    Did you try programming a single Arduino without it being connected to anything?
    Sometimes those cheap Chinese genuino-clones are simply broken right from the start or if you have a tiny error in your circuit it might mess with the programmer, preventing programming. Just getting any Arduino to program through your programmer would be a good first step.
    Could you post your exact setup with pictures of the circuit and screenshots of your settings and the errors you're getting?


    Question 3 years ago

    I got most of it hooked up but am having trouble connecting with the Arduino Pro Min, it's the cheap version found on Alibaba...went here
    to get the correct driver... did all the "read me" doc talked about but still no device recognition.
    Also tried this:
    I'm sure it's the device as the cables were swapped and it is recognizing my Arduino Uno. I'm assuming it is a driver issue. Getting close. Just needing some last little help. Best, Paul

    p.s. It might be the drivers for the FTDI programmer....

    Screen Shot 2019-07-10 at 9.39.17 PM.pngIMG_7930.jpg

    Answer 3 years ago

    Im not sure if your "cabelig" is correct. Maybe use jumper wires to connect the two - you want to connect RX to TX and TX to RX.

    I've also experienced this issue a lot of times. Mostly happens when you are connected but have some little thing wrong. Things I did to resolve this:
    - Make sure cabling is correct.
    - Hold down reset-button when starting to upload and wait untill the programmer waits for the arduino, then let go.
    - Make sure settings are correct. The Chip at Aliexpress says "328P" but double check yours is too ad try 8MHZ instead of 16Mhz
    - If your on a USB-C macbook, try a different dongle.
    - While this occurs, plug out the programmer after almost every try. Sometimes it gets "stuck" eve though everything else is correct.

    ... and then I realised what you're actually on about :D
    You might want to uninstall the driver for the FTXX. The comment for OSX on the link you sent says "If using a device with standard FTDI vendor and product identifiers, install D2xxHelper to prevent OS X 10.11 (El Capitan) claiming the device as a serial port (locking out D2XX programs)." ... but thats exactly what we need.


    Reply 3 years ago

    Unfortunately I've spent the entire morning trying to get it to work.

    List of drivers and sites that just won't work:

    Quite discouraged at this point. I know this isn't your problem but I'm running into problems after problems with trying to communicate with the: Wavgat Pro Mini atmega328P 5V 16 MHz Arduino Nano , FTDI High Quality FT232RL FT232 FTDI USB 3.3V 5.5V to TTL Serial Adapter Module Mini Port devices that I bought from AliExpress. I've checked the wiring, the cables, there is just no connecting to it. I'll head over to the Windows side and give that a try. Also going to try the Arduino Uno as it is larger and it IS recognized as a USB serial port.

    Question: I've got the Aruduino Uno setup and it seems to be working.... when bringing the "+" voltage from the voltage booster to the UNO should I go to Vin or to 3.3Volts. On the Pro Mini we connected two wires to Vcc.... what is the equivalent on the UNO? Ok I got that question answered, it goes from the boost module "+" to Vin on the UNO.



    Reply 3 years ago

    Sorry, I only saw your response right now...
    If you're using a 3.3V Arduino that might be an issue further down the line... the LEDs work with 5V and the circuit is meant to power everything from the same booster, therefore 5V.

    If you still need assistance, feel free to contact me through the methods provided on my website.


    3 years ago

    Very impressive. I was curious how you got that time-lapsy static photograph of the POI light in "motion" making lit circles. I want to make a similar photograph for my Aluminoids project (see but don't know to turn the video into a static image like yours. If you can't teach me in the comment response, could you at least point me in the right direction? Thanks!


    Reply 3 years ago

    Hey, you mean the actual static pictures?
    Those are just taken with a tripod and long exposure times.
    Not sure, what camera you might need. I used a DSLR but I guess most "simple" cameras nowadays support manual settings and even some apps exist for that kind of setting. Just google for "Long-Time Exposure Photograhpy"

    If you're referring to the animated gifs, those were videos taken with also the slowest possible shutter-speed and then I enhanced the effect using after-effects "echo" effect, blending something like 2 or 3 frames together with about 20% feedback and I think add or add negative as mode.


    Reply 3 years ago

    Just saw your response. Thanks for it! I hope to put it to use. DT ( In the meantime, you can see my particular application if you're curious. I call it the disco light, or the iCan Party Light, depending on where in my website you are.


    3 years ago

    Great instructable, I'm curious why I get the error message on the attached image when I try an compile ( i.e. use the check mark) in the Arduino IDE. On a Mac by the way.

    Screen Shot 2019-07-09 at 3.41.45 PM.png

    Reply 3 years ago

    Hey, I get exactly the same, the message is just to tell you what version of fastLED your compiling. Check out to learn more - basically the developer of the fastLED library added a message to the code that gets output to the compiler output/log telling you what version you are using. Nothing to worry about & thanks for trying this build


    3 years ago

    Very nice! I'd recommend using a LiPo battery that already has wires or soldering tabs attached, as this reduces the likelihood of damaging the battery by overheating. And zinc fluxes are highly corrosive, so they should be washed off after using; I personally recommend not using them for electronics in general. Finally, you might want to define POI for people who do not understand what it means.


    Reply 3 years ago

    Hey, thanks for the feedback, I'll incorporate it. For the wired LiPos: Do you know any LiPos with those or smaller dimensions that are already wired? I couldn't find any which is why I used these


    Reply 3 years ago

    No, I don't know of any in the same package shape/size that are pre-wired. Cool project nonetheless!


    Question 3 years ago

    I noted you didnot say which 3D printer you used. I don't own one (yet) and would like to know what you used so I can formulate some ideas as to which I may get. Thanks!


    Answer 3 years ago

    I can't give too much of a recommendation there. I'm using a Maker Select v2.1, which prints pretty well but otherwise isn't to much fun to use. Basically, it needs recalibration very often and since I don't print too much, that means having to spend almost an hour calibrating this thing if you want to print something after a month or so. Which is very annoying and keeps me from using it more, therefore I would not recommend it.

    I've heard very good stuff about the Cetus 3D. Especially the Linear-Rails are supposed to make it more or less calibration-free and especially not loose calibration every time it is touched. I never owned or tried one myself though.

    Best recommendations are usually through Reddit. Check their monthly recommendation-mega-thread to get an idea of what's considered good bang-for-buck and popular (popular means there are a lot of mods available & no unkown flaws)


    3 years ago

    The .pdf download does not seem to work for some reason. Using chrome browser on Windows.