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.


2TP4056 Lithium Battery Charger, AliExpress
2Turnigy nano-tech 1000mah 1S 15C Round CellHobbyking
22-5V to 5V Boosting Step Up Power SupplyAliExpress
MT3608 booster circuit fits as well
2ArduinoPro Mini ATMEGA328P 5V, AliExpress
21838 940nm IR-Reciver, AliExpress
1mAPA102 LED Strip (144 or 96 LED/m), AliExpressYou need about 2x10 Leds of length
2220uF 10V CapacitorAliExpress
1IR RemoteAliExpress


Soldering IronQUICKO T12
Hot Glue Gun
Computer with Arduino IDE
FTDI USB ChipFT232alternative: Arduino Uno
WirecuttersKnipex Cuttersoptional
Breadboard + Jumpersoptional
Arduino Unooptional


Thin Wire24-28AWG
Soldering Lead
Shrink Tube
Pin Headers (Male&Female) or small connector
Clear 3D-Printing FilamentI used PLA but Nylon might give stronger results
Hot-Glue Sticks
zinc flux & solder or a metal brush/sanding paperSanding Paper worked fine for me
Some cord for strapsI 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