Introduction: DIY RGB Fill Light for Photography

About: Master student in Computer Science & Information Engineering, one of the developer of ArOZ Online Project. I love making something no one has thought of. If you like making things that seems not possible, send…

Recently I am trying to upgrade my camera setup where I take picture for the products I developed and open source. I realized that most of the time I can spare are close to mid-night and there are rarely any nature night at that time period. As a side project, I decided to make myself a RGB Fill Light. I have a few requirements of such fill light including

  • Battery powered, so I can use it everywhere I am filming
  • Bright, enough to illuminate a corner of my room where I usually film
  • Light weight enough so it can be mounted on phone mounts / tripods
  • Wireless control (base on WiFi and restful API), so if later I want to upgrade my setup even futher to have a centralized control panel like a stream deck, I can use it to control all my lighting in one click and with some simple python / bash scripts.

So that is why I designed this RGB fill light. As this is not one of my major projects, I will just briefly describe how I made it and leave all the details at the git repo.

Supplies

  • PCB (or Wemos D1 + power bank PCB + WS2812B LED strip)
  • A bunch of WS2812B (5V)
  • IP5306 and surrounding components (power management system)
  • ESP8266 and CH340 programmer (MCU section of the PCB)
  • Some SMT buttons
  • 1S, 2 cells 18650 (3.7V, 4400mAh)
  • 3D printed case
  • some M3 x 5 screws

Step 1: Design the Circuit

The circuit of this RGB fill light is pretty straight forward. From the EDA screenshot, you can see 4 main section.

Front Side (RED)

On the front side (red), you can see on the left the control buttons.

On the lower left corner, you will see a power management module. This is the a standard IP5306 power bank circuit where schematic can be easily found online. The IP5306 power bank circuit have 4 LEDs showing the battery percentage and can output up to 5V 2A (10W).

On the lower right hand corner, you will see the ESP8266 with CH340C. It is yet another really common circuit that is identical to a Wemos D1 mini.

Back Side (BLUE)

On the back side, there are nothing much except a bunch of WS2812B. These are the RGB 5V variant and it basically identical to an WS2812B LED strip but in a different form factor. The 49 LED draws around 10W which is exactly where our power management circuit can output.


Step 2: PCB Printing

You can find the Gerber files over at https://git.imuslab.com/TC/RGB_fill_light (under the /prod) folder. I have a 2 production iterations and the latest v8 version fixed the patch wire issue. It is recommend you use that one instead.

In the photo above, I am using the v6 design which a signal wire was missing from the corner. Use white FR4 for better results as green silkscreen solder mask will effect the color due to light reflecting off the PCB and black will make part of the light being absorbed by the PCB (and get turned into heat).

Step 3: Solder on the Components

Just like other DIY electronic projects, you then need to solder on all the components. It takes me 3 hours to solder all of them one by one and the completed products will looks like that.

For the patch wire, I forgotten to bridge the signal LED (the one above the buttons) to the back WS2812B LED strip. So I added a patch wire passing through one of the reserved screw hole to fix the issue.

Lastly, I added a few 2 x 2 x 0.5cm heat sinks to the back to better help with the light cooling.


Step 4: Flashing the Firmware

The firmware was written with Arduino and build for ESP8266 (Wemos D1). The firmware contains 3 basic modes

  • White Color Mode (adjust white color at different color temperature, or K value)
  • RGB Channel Mode (adjust each of the channel independently)
  • Preset Color Palette Mode

There are 4 buttons on the fill light. By default, it do the following

White Color Mode

  • Add = Increase color temperature / brightness
  • Minus = Reduce color temperature /brightness
  • Brightness = Toggle between color temperature and brightness

RGB Channel Mode

  • Add = Increase channel value
  • Brightness = Change Channel (R / G/ B)
  • Minus = Reduce channel value

Preset Color Palette Mode

  • Add = Next color palette / Add brightness
  • Brightness = Toggle between color palette switching and brightness
  • Minus = Previous color palette / Reduce brightness


Wireless Mode

If you hold MODE button when power on the fill light, it will enter Wireless control mode. The control LED will show as yellow when first startup, it means waiting for WiFi. You will be able to setup the WiFi credential using WiFi Manager. After WiFi connection established, the control LED will turn green and you can connect to the RGB fill light with the following API endpoints

  • /api/rgb?r=255&g=255&b=255
  • R = Red channel value, 0 - 255
  • G = Green channel value, 0 - 255
  • B = Blue channel value, 0 - 255
  • /api/temp?k=4500&b=255
  • K = Color temperature
  • B = Brightness, 0 - 255
  • /api/off
  • Turn off all LEDs


Currently I do not have an app for desktop / mobile to control it, but I might make one later after I have completely setup my new mini filming corner in my room :)

(You can also find the source code on my git repo. Instructable do not allow upload zip files so I will just put the code here as independent ino files.)

Step 5: Designing the Case

Next, I designed a back case for the PCB to hold the battery and hide all the heat sinks. The case can be printed at a 45 angle to reduce supports that is hard to remove or making the surface uneven.

There are 4 screws at the back of the case. It is used for mounting additional structure / adapter for phone tripod. I also designed a phone-tripod-adapter and you can find it in the file list below. Using this adapter, you can mount the RGB fill light onto any clip-style phone tripod or arms.

Step 6: Mount and Test

After installing the back cover and the adapter, I mount it on a phone tripod and it lights up. I can also switch between different color by pressing the buttons on the back. For example, in the last photo, I switch it to purple using preset palette mode.

Step 7: Completed!

Now I got myself a tiny portable RGB fill light that is also powerful enough to light up my filming corner of my room. In the future, you might be able to see my new projects with photo taken with the help of this little RGB fill light.

As always, you can find all the source files and code on my git repo.

https://git.imuslab.com/TC/RGB_fill_light

This is all for today. Good luck with your next projects!

Build-A-Tool Contest

This is an entry in the
Build-A-Tool Contest