If the Product You Want Doesn’t Exist, Make it

I’ve been looking for a light to use during Zoom calls for a while now, as in an unreasonable amount of time. The reason for this is that the room I take all of my classes in has both excellent and terrible lighting, with a window behind me and to my left; this causes my face to appear very dark while the rest of the room is adequately bright. My issue is that a light needs to meet a very specific set of criteria, most of which I’m not willing to compromise on, and none I’ve seen so far meet even most of them. The criteria were: slim/low-profile, bright enough to work in full daylight, soft enough light that it can be used on dark/overcast days or in the evening, and I didn’t want to move my webcam (which is also bulky because it has stereo mics, so it wouldn’t have fit in a ring light anyway). Desk space is also at a premium between my monitor, drawing tablet, mouse/keyboard, spacemouse, phone charger, and slew of projects at various stages of completion, so a desk lamp wasn’t an option. My desk is actually somehow more cluttered than it sounds, so the desk lamp thing was really important.

After several months of casually searching, I gave up and decided to make my own to meet my needs and have a few extra features. It consists of an Arduino compatible board, two strips of WS2812 LEDs, and a 5V power supply. Plus a healthy dash of custom software to control the lights, because I figured if I’m doing this I may as well make it overkill.

The Arduino board I used was an Adafruit Metro Mini because I had a spare one kicking around after a previous project making yet another high five robot as a gift, and the LEDs were a generic strip I ordered from Amazon. As far as code to control the lights, I figured I may as well make take advantage of the LEDs’ RGB capability, so the color and brightness is controlled with a 32-bit integer split up into 4 bytes with bit shifting. The first byte corresponds to brightness, with the following three corresponding to red, green and blue respectively. The color then changes smoothly with a for loop. To change the color/brightness, a command is read from the serial port and then bit-shifted to get the bytes. To Metro Mini is screwed into a 3D printed enclosure with a cutout for the USB port and a DC barrel jack for power, and the enclosure is stuck to the back of my monitor with double sided tape. The LED strips are mounted in some aluminum extrusions I also got from Amazon, and they’re just a simple black anodized right angle bar with a 45° surface for the LEDs to mount to, and a diffuser to soften the light. The extrusions are also double sided taped to the sides of my monitor with some 3D printed angled blocks.

LightDriver.png

To be able to control the lights from my PC, I wrote a small piece of software in Java that I call LightDriver. It auto-detects serial ports and has a dropdown menu to select the port, and then some sliders to adjust the color ad brightness. Not very complicated, but it does what it needs. I think I spent more time trying to figure out how to turn it into an executable because for some reason JavaFX makes the process more difficult than it needs to be, and I don’t want to have my IDE open all the time to run it. It works well enough, although it can’t update the color in real-time because of a limitation with the Arduino serial latency. It takes around half a second to register a command, and no amount of optimization that I could to in one day could fix that. One thing you won’t find in any other software is the level of control, with nearly 4.3 billion color combinations. (All those marketing teams that are proud of boasting 16.7 million colors can get in line, because this is 256 times as colorful).

The final “product” turned out pretty well, with only a couple of things that I would change if I made a V2. The wires sticking leaving the top of the left strip and the wires connecting the two strips under my monitor are a bit aesthetically annoying, so if I remade this I would probably drill holes in the back of the aluminum extrusions and run the wires around the back of everything instead of out the ends. Overall though I really like the floating aesthetic generally minimal look. I’m not sure why I couldn’t just buy something like this, or even two single lights like these for that matter, but now I don’t need to because this meets all my criteria. Who knows, maybe I’ll turn this into an actual product for the 10 other people in the world who have the same problem as me.

Yes, I have two separate IDEs and two CAD packages open.

Yes, I have two separate IDEs and two CAD packages open.

Next
Next

Unboxing 900 Video Mailers