Intro: Custom NeoPixel Rings From Scratch!
NeoPixel rings, and NeoPixels in general, are among the most popular electronic components for makers of all types. For good reason too, with a single pin from any popular microcontroller Adafruit makes adding gorgeous LEDs and animations to any project extremely easy.
Unfortunately they are rather expensive, and Adafruit only sells four sizes. What many makers don't realize is NeoPixel is simply Adafruit's branding of a few identical LED chips named WS2812, WS2811 and SK6812 respectively. All Adafruit does it take the chip and put it on a circuit board, charging a hefty premium alongside. There is nothing wrong with Adafruit doing this as it makes NeoPixels accessible to everyone, but if one were to simply make the boards themselves one could make custom shapes of any size or design for around 15% of the cost of Adafruit's models (for a 24 LED ring)($3). More importantly, they cant be any size you need! Despite that, it doesn't seem like anyone has created a guide exactly for doing this.
So, when I needed a custom compound ring for my working Samus Arm Cannon project (coming soon) I figured why not document the process.
In this tutorial I'll show you exactly how I made this custom ring, and how you can make your own.
Step 1: What You'll Need:
Always Necessary Regardless of Method:
- ws2128b LEDs (NeoPixels)
- 1uf Caps (1 for every two LEDs) (technically optional)
- Solder Paste
- Flux (recommended but optional)
If you choose to get your board professionally manufactured that is all you need. If, however, you instead choose to manufacture your board using the toner transfer method you will also need the following components. I personally did not use the toner transfer method, however my method is outside the scope of this tutorial. I plan to post a tutorial for how exactly I make PCBs, so watch out for that!
Homemade Board(Toner Transfer Method):
- Copper Clad Board
- Ferric Chloride
- PCB Paper
- Laser Printer
- Solder Mask Film (Optional for Solder Mask)
- UV Source(Optional for Solder Mask)
- Transparency (Optional for Solder Stencil)
- Dremel Workstation
.Here are all of my files, diptrace libraries, and models.
For those wondering how the price compares ill compare it to an Adafruit 24 LED ring which costs $17+shipping.
Cost per LED: Adafruit: 17/24= $0.70. HyperIon: 7/100= %0.07
Additional Costs:Adafruit: ($4) Shipping, Hyperion: $1 (copper board) + $ 0.50 (Ferric Chloride)(free shipping)
Total: Adafruit: $21, HyperIon: $3.18
As you can see it is far cheaper, 15% the cost. Even if you ignore shipping the HyperIon version comes out to only $3.18, a massive cost savings compared to $17.
Step 2: PCB Design Part One! LED Placement
The first step in creating any NeoPixel shape is the placement of the LEDs. I created a useful little excel document which you can use for any design you want to follow a radius.
Simply input the number of LEDs, percentage of the ring you want covered, and the radius and it automatically generates the position and angle coordinates you should place your LEDs at. You can then go into most popular DipTrace, ExpressPCB, or EaglePCB and insert the coordinates in your components properties. I personally used DipTrace and you can find all my components and libraries in the components section.
For this project I chose to use two rings of radius 34 and 24 millimeters. The outer radius had 20 pixels and the inner radius had 6.
*Bonus* If the CAD program you're using (like DipTrace) doesn't allow for the placement of a circle by its center point draw two lines across the diameter of your outer radius and your inner radius. Align the intersections with each other and redefined that as your origin. Now you have a perfectly concentric board!
Step 3: PCB Design Part Two! Routing and Capacitors
The next step in making your printed circuit board is making your connections between your LEDs. NeoPixels each have one data-input pad and one data-output pad. First create a long chain starting with the pixel closest to where you plan on placing your interface pins, going from one pixel's data-out pin to the next pixel's data-in pin.
After that you'll need to route power and ground. The easiest method I have come up with to do this is to use a combination of circles and semi-circles, four in total, alternating between power and ground as you move outward from the origin. This makes it easy to create a small "jumper" connection as apposed to manually wiring every since LED together, twice. The two pairs of circles/semi-circles can then be tied together whichever way is most convenient. Finally, a copper pour is added. This essentially just causes all extra space to be filled by "ground", which has multiple advantages including being easier to manufacture at home.
You will also want to install one roughly .1uf capacitor between power and ground between each set of two LEDs. The manufacture recommends one per LED however its likely one per two will do and they are time consuming to solder. These are not necessary for the functionality of the device, they simply improve the lifespan of the LEDs, so they can be ignored if needed.
Step 4: Printed Circuit Board Etching!
In order to complete this step you have two options:
If you have never made a PCB and have no interest in gaining the skill to do so, this is what I would recommend. By getting your board professionally manufactured the difficulty of this project goes from high intermediate down to beginner. Your board will be guaranteed to be high quality, come with a solder mask, and may even come with a solder stencil.
This is the option for those who really want to improve their skills and enhance their personal capabilities. It is also the option for those into high pace prototyping and who are really cutting the costs low. The ability to make my own PCBs has been one of my biggest advantages over the years and I strongly recommend it to anyone who is interested. I have developed my own method for making PCBs (see my channel for how to do that) which is a little outside the scope of this tutorial and requires equipment most beginners can't afford. Therefore, instead I recommend the toner transfer method using a product named PressN'Peel. It is fairly easy and the only equipment you'll need that not necessarily everyone will have is a cheap laser printer. Check out clacktronics-uk's tutorial for more details!
The basic process is as follows:
- Clean your copper cad board.
- Print your design onto the Peel n' Stick using a laser printer.
- Iron the design from the Peel n' stick onto your copper board
- Place the board in ferric chloride until etched.
- Clean off the toner
Solder Mask (Optional):
A solder mask is a covering that protects your board in all places but where solder needs to go. This makes it slightly easier to solder but more importantly dramatically improves the ascetics of the board. If you did not get your board manufactured you may want to add one, but its not strictly necessary. Personally I find this process incredibly easy and highly recommend it. Again, I'm only going to go over the basic process so you know what you're getting into. Check out cpeniche's tutorial for more details!
The process is as follows:
- Print your boards pad design onto a piece of transparency.
- Peel and stick the solder mask film onto your etched board.
- Iron/laminate the film until it sticks well.
- Align the transparency with the board and tape down.
- Expose the film to a UV source (nail polish dryers work)
- Clean off the unexposed pads
- Expose till cured.
Step 5: Solder Paste Stencil! (OPTIONAL)
If you have access to a laser cutter consider manufacturing yourself a solder paste stencil. They allow you to avoid the tedious effort of slowly putting a dab of solder paste on each individual pin. Simply load the pad design into your laser cutter software and cut it out of a piece of printer transparency. I have also found that a laminator sheet works just as well. This works incredibly well and produces a layer almost exactly as thick as the professional versions. In my opinion they are actually far superior as they are flexible and transparent, making them far easier to use than the stainless steel versions.
I was not the one to come up with this method but I have yet to see anyone document it online, which i find surprising.
Step 6: Board Shaping
To bring the board into its final shape you should begin by cutting off as much as you can safely with a dremel cutoff wheel. I used a dremel workstation setup horizontally with the blade above a cardboard box as a makeshift tabble saw.
You can then begin drilling out the central hole. Use the largest drill big you have for your dremel and slowly "Swiss cheese" your way around until you've cut out a big enough section to fit in a grinding bit. You can then use that grinding bit to bring the board to its final shape.
The way the board etches there is a thin ring of just fiberglass around the edge of the board, Right before you grind to that point the last remaining bit of copper will release. When the last bit of copper releases don't grind anymore. By relying on that sign it allows you to make a very consistent and circular piece (assuming you didn't mess up the etching like i did and put the pattern too close to a wall). Finish the outside diameter this same way.
You should also drill out the holes for the data in, 5v, and ground connections. A small dremel bit (.7mm) works great for this.
Step 7: Soldering!
In my opinion this is a great project for a person who wants to learn how to get into surface mount soldering. All of the important components are large, heat resistant, and the pads are spaced far apart from each other. Its actually very difficult to mess up and is a great way to build confidence in surface mount soldering without having to mess around with teeny tiny components.
In order to solder your NeoPixels onto your board you first need to deposit a teeny, tiny amount of solder paste to each pad using either a syringe or a stencil. If you have a stencil simply spread a blob of solder paste around the stencil like a thin layer of butter on toast until all the pads are covered. You don't need as much as you'd think, just keep spreading.
Next you'll want to place your components on your board. As long as each pad is touching its relevant blob of solder then you are close enough. Solder paste has this magical property where when it turns molten it actually pulls the component into place almost every time.
If you're too insecure about your soldering skills you can either change the 0603 capacitors to a larger format or skip them altogether. They increase the lifespan of the NeoPixel but unless you're using this as a light source its unlikely you will ever see one burn out. That being said I strongly recommend that you install them, simply because the skill is valuable to have.
In terms of actually soldering, it couldn't be easier. Simply spend about two minutes preheating your board with a hot air gun then focus more heavily area by area until everything reflows. You can tell when it has reflown because the solder turns shinny and typically the component does a little "wiggle" into place .
Step 8: Interface and Done!
You are able to interface with this board exactly like you'd interface with a normal NeoPixel product. Start by plugging the power/ground pins of your NeoPixel ring into the 5v/Gnd pins of your chosen microcontroller. Connect the last pin (data) to any digital pin. Then simply download the NeoPixel library, set your number of LEDs (26 in this case), your chosen digital pin, and start programming your animations!
The strandtest example code is a great place to get started. It includes many great examples and effectively demonstrates what NeoPixels are capable of. If you need more details on how to use NeoPixels check out this tutorial: The Magic of NeoPixels.
I hope you all enjoyed this tutorial. If you liked this project you might also like my upcoming DIY Flexible NeoPixel Strip project. Subscribe so you don't miss it!
Please vote for me in the Colors of the Rainbow contest!!