Introduction: Wifi Moravian Star Christmas Tree Topper
We made the move to an artificial tree this year and I needed a new tree topper. Most of what I saw on-line or in the big box stores was frankly boring. So I decided to make my own Wifi enabled Moravian Christmas tree topper.
The project took a lot less time than I expected. If it wasn't for the generosity of individuals on Thingiverse and Github, I doubt I would have even finished before Christmas this year. (After I finished the project, I did a search and realized I am not the first to make something like this, but I think my iteration is a significant improvement.)
The result was very satisfying. If you like what you see, I hope I can help you make one too in time for the holidays.
- 3D printer
- Soldering Iron
- Wire cutters
- Wire strippers
- 44 Addressable LEDs (I used WS2812Bs)
- 3D filament (clear PETG)
- 22g Wire (Silicon coated, multi-stranded)
- Hot Glue
- ESP8266 WEMO D1 MINI
- USB Cable
- 2A USB Charger
Step 1: 3D Printing
3-D model for the Moravian star came from posts on Thingiverse.com.
The original model was https://www.thingiverse.com/thing:661306 by kresty.
The derivative model is https://www.thingiverse.com/thing:2662217 by erossman.
The derivative model has holes in the sphere structure that allows for wiring.
I downloaded the files and immediately printed out the centerpiece first because that’s where most of the work would have to happen.
Printing out the spires selectively took hours at a time. I do not recommend printing them all at once. I think I spent some 34h of printing to finish all the necessary pieces.
Clear PETG filament provides a nice texture. You could also print this with some slightly opaque white filament.
Step 2: LEDs
The LEDs are used for this project are W2812B. They are recycled from a previous project. But any addressable LEDs that work with WLED the software would be great. The W2812Bs are nice because they only require three wires versus four wires to control an AP1102. My project used 44 LEDs. These come from a strip with a density of 60 LEDs per meter. That seem to work well with this model. Each square spire hole used to 2 LEDs and each triangular spire hole only required one LED.
The strip was cut into segments reflecting the needs of the columns. I didn’t want to just put an entire strip in there and power it. First of all, that would’ve require too much power and second, some of the LEDs would not line up properly. The first 16 LED segment was wrapped longitudinally. The subsequent segments were either four or six LEDs with a gap wired between the segments so that it could be easily installed.
Using 5V power, 44 LEDs with 55 mA per LED on full brightness that would require 2 1/2 A of current or 12 1/2 watts. I don’t plan on using full brightness because of the power requirements, heat, and the limitations of my 2A AC adapter. In the WLED software, you can restrict the amount of amperage you’re using. That will add a safety margin and make sure that it doesn’t get too hot or melt the plastic.
Step 3: Wiring
Wiring for this project was a bit tricky because of the small space inside the support sphere. The LED strips offer some stiffness so I elected to use thin stranded wire coated in silicone so that I could manipulate the strips in place. Make sure your solder joints are solid. The amount of manipulation that goes on to put the LEDs in place will strain on those wires temporarily. And it’s a real pain when one of the solder joints break off and you have to access those strips to fix it. (This happened to me.) Make sure you solder well with no cold welds. You could use regular wire, but it will add a layer of frustration.
Step 4: Microcontroller and WELD
Selecting an ESP8266 was easily determined because they're cheap and abundant. An ESP32 would also work or some variation of these small Wi-Fi-enabled microprocessors. WLED firmware primarily works with these two families of controllers. Since it’s sitting on the top of my tree, I had no interest in using buttons to reprogram or reset it, so a wireless connection was important.
The details of how to program an ESP 8266 are easily found on Youtube or the Wiki for WLED. WLED is an open source firmware solution for controlling LEDs. It is updated every few months and is a remarkable piece of software.
After you flash your microcontroller via USB, you’ll be up and running. The firmware creates a web server where you can control the output of the microcontroller via the Web. Not only does it allow you to control it amount of electricity you’re delivering to your LED strip, but it offers 113 different patterns for that strip to dynamically display. You can select your color palette, timer, series of patterns, and manipulate all with your phone or your computer. And also offers integration with Alexa and MQTT. In a nutshell, you'll download the firmware from the website, connect your micro controller via USB cable, and type in a command line to update the micro controller. Future updates can be done simply over Wi-Fi.
After you have flashed the firmware, the ESP 8266 creates a Wi-Fi connection that you select. You'll update the device with your home Wi-Fi settings if you want to connected to your home network. Once it’s connected to your home network you can open a browser to http://treetopper.local (for example) and control your star as you see fit.
Step 5: Assembly
Assembly was tricky but manageable. I put portions of the LED strip inside the sphere and used hot glue to carefully glue the strip to the frame. I recommend doing it slowly and frequently test your LEDs to make sure you haven’t broken any solder links. I highly recommend completing your LED strip and microcontroller assembly before you begin assembly. You'll want make sure that all those LEDs are working properly, because you’re not going to have access to it when it’s all glued together. Redesigning/remixing the model to allow for access to the electronics would be a phenomenal option, but that's not available.
I chose to put the micro controller and all the wires inside the sphere. I ran a micro USB cable up through the stem into the microcontroller to power the device and re-flash the firmware if there was some sort of failure.
Once the electronics are all inside the sphere, I ran the program for a while to make sure of that all the LEDs were consistent and I was getting good Wi-Fi signal. When I was satisfied with how the electronics were working, I began to glue each spire on with hot glue in a very careful manner to make sure I wasn’t interfering with any of the electronics or using excess glue. When I was satisfied with the assembly and the electronics were all working it was time to do the final task of installation.
Step 6: Installation
Installation was straightforward. I’m displaying an artificial tree so there was clearly a top branch in which to Velcro and center my star upon. It's not heavy since it's all hollow. I used a very long USB cable to connect to my 2A (10W) AC adapter. It’s all connected to the tree wall power so I turn it on both star in the Christmas lights at the same time.
I spent some time setting up some of the presets that I thought were impressive. You can save 16 of them and then use the software to switch each preset after a given time. It truly is the best tree topper that I have ever experienced.
Step 7: Final Thoughts
Some of my projects feel a little bit disappointing, because it’s not exactly what I had it in mind. This was not one of those projects. This exceeded my expectations and looks absolutely amazing, plus it used spare and recycled components.
I wish to thank the people who posted their cool designs on thingiverse.com and sharing this cool model of a Moravian star. And combining it with the stellar piece of software written by Aircookie. WLED software is just beyond amazing. It makes projects like these that seem like they should require hundreds of hours of work reduced to half a weekend.
I hope this inspire someone else to make one of these stars. They certainly bring some of the delight in magic of the season into your house.
Participated in the
Holiday Decorations Speed Challenge