Changelog:
Updates are coming; watch this space.
12 Dec 2023:
- v1.0 uploaded. This took a long time to complete, so I hope you all appreciate it. I'm including the FreeCAD source file.
The full build requires very basic soldering skill and a little bit of electronics experience; I wouldn't recommend it as your first project, but if you've got a steady hand and a soldering iron, it's not at all complicated. The bare minimum you have to do is soldering some sort of connectors to the NeoPixel PCB. Here's the basic build:
Non-printed parts:
Required:
- Capacitor. Adafruit recommendation is to use a capacitor when connecting to large power sources (500-1000 μF at 6.3v or higher), but I'm running 16 LEDs at 5 volts DC. I don't think it's strictly necessary on my build (mine is only 10 microfarads), but I suggest following Adafruit guidelines depending on the power supply you connect this to.
One note about power supply: a GPIO 5V pin on your Pi will not be able to supply enough current to run these LEDs, and you'll get undervoltage errors. How you choose to power it is up to you, but I'll describe what I did. - 300-500Ω resistor (I used a 470Ω resistor rated for 0.25W, more than enough)
- Adafruit's NeoPixel UberGuide: read the section on “best practices”
- 16-LED NeoPixel Ring - I got the RGBW version so I can have white light. Recommended.
- M2x4mm screws, x4
Optional:
- A small perfboard for your circuit; while you can absolutely just solder everything together with loose dangling wires and manage it with zip ties, soldering it on a little perfboard looks clean and organized. I'm using a Schmartboard “power and ground strip prototyping board”; at 2"x0.5" it's the perfect size for this project.
- A DC-DC stepdown convertor (buck convertor). If you're using this with a 3D printer like I am, you might be able to hook it into your printer's power supply (do not mess with this unless you're sure of what you're doing; I am not responsible if you fry your printer, blow up your cat, or set your house on fire). On the Ender 3 series, it's fairly straightforward; you hook the converter's input leads to the appropriate + and - screw terminals on your printer's PSU, and it should spit out 5V at the other end. Make sure you get a converter that's compatible with your PSU's output voltage; mine puts out 24 volts, so I've stepped that down to 5 for the LEDs.
- OctoPrint, with "WS281x LED Status" plugin. This plugin is great and automates everything I want to do with the ring light; you might have to do a little bit of testing and experimenting to figure out the correct settings for your LEDs, but it's pretty simple.
Build:
I've included the schematic of the entire circuit (including the NeoPixels so you can see how it's all connected), but the part you need to do is simple; connect a capacitor across the power and ground leads (positive to positive, negative to negative/ground), and connect your resistor inline on your data lead closer to the LEDs than to the Pi. If you're using the OctoPrint plugin I recommended, the other end of your data lead needs to be connected to GPIO 10.
To connect this whole business to the ring PCB, you'll need
Data lead goes to “DATA IN” on the NeoPixel PCB, positive power lead goes to “POWER +5V” negative goes to “GROUND”. "DATA OUT" can be left unconnected and floating, or you can wire in some more NeoPixels.
You'll need some way to connect this entire business to the ring PCB; I soldered on some header pins to the required through-holes and put together 3 short jumper wires that run from 1P female dupont connectors to a 3P JST connector on the other end that plugs into the mini circuit. You don't have to do that, but it looks great.
Printing:
Print the camera case in whatever color you like; the insert should probably be printed in black. The diffuser ring should be printed in a translucent, un-dyed material; I used natural PLA.
Assembly:
- Once everything is wired up, you'll want to pop the ribbon cable into your Pi camera, thread it through the slot in the back of the case, and screw the camera down onto the standoffs with the M2 screws. Make sure your pins or wires from the NeoPixel PCB are lined up with the holes and thread those through, and gently press the PCB into place above the camera. It has its own standoffs it will sit on.
- Press the insert into the middle of the diffuser ring from the front, inserting the narrow end first. You're gonna really have to press it in until the flange butts up against the corresponding lip inside the diffuser ring. This insert is necessary to keep the light from the LEDs from completely blinding your camera.
- Take the diffuser and insert assembly and snap it into place on the front of the case.
Everything is designed to press-fit together. Make sure to install the insert in the diffuser ring before mounting it on the case, because it's a tight fit and you don't want to slip and damage your camera.
One final note on mounting this whole assembly: I zip-tied my mini circuit to the back of it and I'm working on a number of mount systems, which I will post when they're done.