PicoLight - Minimalist Light for Product Shots

PicoLight is a minimalist adjustable light for low-light photography, based on the Raspberry Pi Pico.

Similar projects worth following
One of the activities I really enjoy while working on a new project is documenting it. I love getting creative while taking pictures of the process and of the final products. A thing that has been really handy in this process is an adjustable studio light, which I use to add a bit of colour to the background (that's why most of the pictures in these tutorials are purple hehe).

PicoLight is a smaller version of a classic studio light that is useful for playing with colours in low-light shots or for coloured shadows photography.

Have an idea for a similar project?
⚡Contact us!
⚡Check out our other projects as well!

How it works

PicoLight consists of two PCBs and a white acrylic panel (which is great for diffusing the light) sandwiched together. One of the PCBs is a 4x4 Neopixel Matrix with a Raspberry Pi Pico on the back and a rotary encoder with push-button. The encoder is used for adjusting the colour and the intensity of the light.

The other PCB is a LiPo battery shield which includes a charging circuit and a power switch. PicoLight can also be powered directly from the USB, without using this shield.

4x4 Neopixel Matrix

The Neopixel Matrix PCB is 52x52 mm with M3 slots for the standoffs meant to hold everything together. I've designed them in Eagle CAD using the SVG to Eagle converter by Gordon Williams to import custom images to the board.

I first tried to solder the WS2812B LEDs using a reflow oven, but the temperature was too high so I've burned them :(. On my second attempt, I've used Miniware's Mini Hot Plate, which worked much better.

Battery Shield

The battery shield includes a charging circuit based on the MCP73831T IC and I've used it with a 620 mAh LiPo battery. This shield plugs into the Neopixel matrix through a 2.54mm pitch pin header.


PicoLight was programmed in CircuitPython using Thonny, as suggested in this Adafruit tutorial. The push-button is used to switch between the three functioning modes:

  • adjusting the intensity;
  • adjusting the colour (looping through all available colours);
  • rainbow cycle mode.

The values of the intensity and of the colour are stored in the data.txt file so the settings are kept even after PicoLight is rebooted.

What to use it for

I've played a bit with different objects and here are some results:

  • 1 × Raspberry Pi Pico
  • 1 × Custom Acrylic Panel
  • 2 × JLCPCB PCB
  • 1 × WS2812B
  • 1 × EC11J1524413 Rotary Encoder with Push-Button

View all 15 components

  • 1
    Order the PCBs and the stencil

    Usually, before I order the PCBs I make sure I have all the necessary components. Otherwise, I need to find similar ones which may not have the same footprint and I have to update the PCBs as well. 

    Go to or your PCB fab house of choice and upload the Gerber files for the LED matrix PCB and for the battery shield. You can find both in the Github repository of the project. Select the quantity, the soldermask color, the surface finish (I usually go with LeadFree HASL-RoHS or ENIG-RoHS), and check the Remove Order Number option.

    Then order the stencils: one for the LED matrix PCB and one for the battery shield. I selected a custom-size stencil (10x10 cm) since the default one is way too large to work with for such a small PCB. Plus, if you order a smaller stencil it gets shipped in the same box as the PCBs which is more convenient.

  • 2
    Laser cut the acrylic panel

    Order a laser-cut acrylic panel from your local fab house (or you can laser cut it yourself if you have the tools!). We've used semi-transparent white acrylic panels in order to diffuse the light. You can find the files in the Github repository.

  • 3
    Solder the LEDs

    Start by soldering the LEDs onto the LED matrix PCB, using the stencil you've ordered. Make sure the LEDs are stored properly, in a low humidity environment, and that the temperature of the reflow oven is not too high for the LEDs. I recommend using a reflow oven if you have one, or this adorable mini hot plate from Miniware which you can get from Adafruit.

    You may notice there are three empty pads for pull-up resistors for the encoder pins which you can use if you want to, but I chose to use the internet pull-up resistors of the Raspberry Pi Pico instead.

View all 11 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates