Inspired by the work by [designer2k2]'s project featured on the HaD blog, I made my own desktop LED tree using NeoPixel rings. The tree receives commands over Ethernet from a computer which is running a python script to monitor a Jenkins build job. The tree is normally green, but turns red if a build fails. During builds, the tree becomes a progress bar to indicate how close the build is to completing.
For more complete build details, see the instruction section below. Full source code is available on GitHub (see external links).
Arduino Pro Mini 5V/16MHz
I used a clone
ENC28J60 Ethernet LAN Module
Any board using this chip should work
Mokungit 93 Leds WS2812B WS2812 5050 RGB LED Ring Lamp Light
Set of 6 NeoPixel rings
Here's a video of the tree during failed build, building, and successful build states. In all states the top LED is set to cycle through colors like a Christmas tree star and random LEDs flash yellow like twinkling Christmas tree lights.
The LED rings I found came connected to each other, so they needed twisted apart and I used side cutters to remove the PCB nubs left behind.
Starting at the top ring (single LED), solder wires to connect the layers. All the 5V connections should be wired together and all the GND connections should be wired together. DO of the lower layer should go to DI of the upper layer. DO of the top LED will be disconnected. I found it useful to add some extra flux to the pads to make the solder spread to the entire pad.
One nuance of the rings I used is the top LED swaps the DI and DO positions. The silk screen labels were correct and should be followed.
When cutting wires to connect layers, try to keep lengths equal to make an even cone shape.
Cut a square piece of wood for the base. I used a scrap piece of 2x6 pine.
Cut the corners at 45-degrees to create a regular octagon. This shape matches the size of my bottom ring pretty well.
Drill a hole in the wood centered in the block approximately ½ inch from the back. The hole should be big enough for three wires from the rings to travel down into the control circuitry without much extra room. I used a 5/32 drill bit, but the size isn't too important.