Introduction: DIY Mini LED Ring Light!

About: Hi, welcome to my profile! :)

Are you tired of the dark days? These days are over with this new DIY mini ring light! Use it for your selfies, vlogs or even blogs! With an astonishing battery capacity of 1800 mAh you will be able to use the lamp for around 4 hours on full brightness! Use the potentiometers to change the color and brightness to your liking and recharge the ring light with a Micro-USB cable. With the Arduino IDE you will be able to adjust the code to choose all colors you want. You can even make cool animations! The best thing about this lamp is that you can build it for around 10 dollars without the cost of supplies of course.

In this Instructable I will show you how to make your own 3D printed DIY Mini LED Ring Light!

Let's get started!

Step 1: Supplies!


  • 3D printer
  • Soldering Iron & Solder
  • Phone, PC, laptop or anything that can upload code to the Arduino.
  • Pen
  • Scissors
  • Hot glue gun
  • Utility knife


  • WS2812b Led strip
  • Arduino Nano & cable
  • 2x Potentiometer (I used 10k Ohm Potentiometers)
  • Switch
  • Powerbank or Li-ion/Lipo battery with a charging module (for example TP4056) and DC boost converter (for example MT3608)
  • 1000uF 10v Capacitor
  • 470 Ohm Resistor
  • Electrical wire (flexible wire is recommended)

Step 2: Printing the Parts!

Because I have never designed anything it was quite a challenge to design the ring light. I started with a cardboard prototype and tested different measurements. I had to make many prototypes to finally get to the design I used. With that done, all I had to do was to put everything into a printable 3D model. I used Fushion 360 to make the 3D model.

Tip: If you ever want to design or test something, it can be useful to make it from cardboard/paper first. It is considerably faster and cheaper than 3D printing your objects directly!

3D printed parts:

  • Base (Image 1)
  • LED holder ring (Image 2)
  • Diffuser (Image 3)
  • Top (Image 4)
  • Ball head (Image 5)
  • Ball head tightener (Image 6)

3D print the STL files attached. I used the Creality Ender 3 with 1.75mm white PLA. I sliced the parts in Cura 4.4 and used the following settings:

  • Layer height: 0.2mm
  • Infill: 20%
  • Nozzle temperature: 200°C
  • Bed temperature: 60°C

The printing process took about 9 hours in total.

Step 3: The Top!

The LED ring

We start off with the LED strip. I used a LED strip with 30 LEDs per meter. For the ring light we'll be using 7 LEDs. Use a pair of scissors to cut the LED Strip along the given cutting lines. You can use more LEDs but this will drain the battery faster.

Outline the 3D printed diffuser on a piece of cardboard and cut out the outline. You should end up with a cardboard ring. Glue the LEDs to the cardboard ring but make sure the LEDs are evenly distributed on the ring.

Grab 3 wires of about 15 cm and solder them to the Din, GND and 5V of the first LED. Solder the Do, GND and 5V of the first LED to the Din, GND and 5V of the next LED (Din to Do, GND to GND and 5V to 5V). Do this for all LEDs until you get to the last LED. Leave the Do, GND and 5V of the last LED open.

Remove the LED ring from the cardboard ring and peel of the tape cover on the back of each LED. Place the LED ring in the 3D printed LED holder ring. Make sure the wires are sticking through the hole of the holder ring

If you don't want to cut your LED strip in too many pieces or you don't want to solder too much you can take a LED strip of around 30 cm and glue it to the inner side of the LED holder ring.

Take the flat side of the ball head and insert the 3 wires through the hole And glue the ball head to the LED holder ring.

Finishing the top

Grab the ball headtightener and place it around the ball head. Put the 3 wires of the LED ring through the 3D printed top of the ring light and tighten up the ball head.

Step 4: The Circuit!

We will split the circuit in 2 steps:

  • The power supply
  • Wiring the Arduino

The power supply

Open the case of the powerbank and take out the battery with the connected circuit. Solder two wires to the GND and 5v pin of the USB output. The USB output has 4 pins. The left one is the GND pin and the right one is the 5v pin. We won't be using the 2 pins in the middle. Place the power bank in such a way that the Micro-USB is perfectly aligned with the hole of the 3D printed base and glue it to the base.

Grab the switch and place it into the hole next to the Micro-USB input. Solder the 5v wire of the powerbank to one pin of the switch and solder a wire to the other pin. Solder the negative side of the capacitor to the GND pin of the powerbank. Next solder the wire of the switch to the positive side of the capacitor.

Take the 3 wires of the top we made in the previous step and solder the 470Ω resistor to the Din wire. Solder the 5v wire to the positive side of the capacitor. Then solder the GND wire of the top to the negative side of the capacitor. Finally, solder 2 more wires to both ends of the capacitor.

Step 5: Wiring the Arduino

Solder the wire connected to the negative side of the capacitor to the GND pin of the Arduino. After you've done that, solder the resistor connected to the Din wire to pin D6 of the Arduino. Finally solder the wire connected to the positive side of the capacitor to the Vin pin of the Arduino.

The potentiometers

A potentiometer has 3 pins. The left pin is the GND, the middle one is the signal pin and the last one is the 5v pin. Solder the GND pins of the 2 potentiometers together and do the same for the 5v pins. Finally solder 2 wires to the signal pins.

Solder the 5v pins of the potentiometers to the 5v pin of the Arduino. Solder the GND pins of the potentiometers to the GND pin of the Arduino. Lastly solder the signal wire of the first potentiometer to the A0 pin and solder the signal wire of the second potentiometer to the A1 pin.

The circuit is finally done! Test it by turning on the switch. The power LED of the Arduino should light up as shown on the pictures. If this isn't the case make sure the circuit meets the following requirements:

  • The open connections aren't making contact with each other.
  • All wires are soldered correctly.
  • All components work correctly.
  • The battery is charged

When everything is working correctly insulate the open connections with some hot glue or heat shrinks. After that we're ready for the next step!

Step 6: The Code!

In this step we're going to write the code to control the LEDs. We will use the Arduino IDE to do so.


  1. Connect the Arduino Nano to your PC with a Mini USB cable and open up the Arduino IDE.
  2. Go to Tools > Board > And select Arduino Nano.
  3. Go to Tools > Port > And select the available port.
  4. Import the FastLED.h library and you're good to go.

Code explanation

The loop starts with two lines: " int potValue = analogRead(A0); " And "int potValueBrightness = analogRead(A1);" . These lines read the analog pins of the two potentiometers. As you can see the A0 pin is going to control the color and the A1 pin is going to control the brightness.

The next thing is a for-loop. This makes sure every LED will turn on and will compare the values of the potentiometer with different programmed colors. A potentiometer has a range of 0-1023. The value of the potentiometer will change when you rotate it." if (potValue < 200) { leds[i] = CRGB(255, 255 , 255); ". This means that if the value of the potentiometer is less than 200 the LEDs will be white. "CRGB(R, G, B)" controls the color in RGB.

The last few lines control the brightness. Because the maximum brightness is 255 we'll convert the 1023 steps of the potentiometer to 255 steps in total. If you rotate the potentiometer the brightness will change with a range of 1-255

Step 7: Testing & Finishing Up!

Upload the code to the Arduino, unplug the cable and turn on the switch. With the code I provided you'll be able to choose from 5 different colors. If you want you can change the functions of the potentiometers and create really cool things!

Glue the top to the base and finally glue the diffuser to the LED holder. If you don't want to glue the top to the base because you want to be able to upload code at any time, you can use double sided tape in the corners of the base. This should be enough to keep everything together.

Congratulations! you made it to the end :)

Enjoy your new ring light and don't forget to post your awesome ideas!

LED Strip Speed Challenge

Participated in the
LED Strip Speed Challenge