Freeform LED Sphere
My Christmas project is done! Everybody is crazy about LED cubes. I wanted to create one myself, but I wanted to make it an even bigger challenge and since I am not limited by the use of circuit boards, I've decided to make an LED ball.
It took me 24 hours to solder and one long night to finish. But it was worth it. It's nice when lit and even nicer when not. Enjoy!
Watch the Video!
Check out the full making of the LED sphere video. It will give you a clear overview of the whole process. Sure it does not contain the details but that would be too boring. The details are described on this very page below. Watch the video and go through the steps here.
Gather All the Tools and Material
Tools:
- Narrow pliers
- Round-nose pliers
- Side cutters
- Soldering station
- Tweezers
- Bending machine haha, no just kidding. That would be a show stopper for everybody. You just need some round objects to be at the diameter of the rights - beer cans, spray cans...
- 3D printer
Material:
- 0.8mm brass wire (you can use copper or steel as well but they've got some disadvantages)
- Tin Solder
- Soldering Flux
Electronics components:
- ESP32 board with battery support - it has to fit the sphere! For example TTGO T8 or FireBeetle ESP32
- WS2812b RGB LEDs (200 pcs)
- 1000mAh LiPo battery
Template Is the Key
It would not be possible to create such a complex shape without a proper template/jig/mold. I've designed mine to be 3D printed. The template consists of 4 pieces that are bound together by two rings - like a barrel. The 4 pieces are crucial here. If done in one piece, the final half-sphere would be stuck in. The template is designed for one half of the sphere. Don't worry you can reuse it for the second half as well.
The 4 pieces are 2 kinds because the sphere is not completely symmetrical. Print 2 of each STL files attached to get the complete template.
Start With the Wire Rings
The sphere consists of 11 LED rings, each ring is formed of 2 wires in the form of a circle and some amount of LEDs. For the full sphere you will need 22 wire circles in total. It's not that simple, however. Each ring is of a different size. To make it easier for you, I've prepared a sheet of paper with a complete drawing of ring shapes for the one half-sphere. It's not completely accurate through.
Keep in mind the final shape of the sphere will mostly depend on how accurate your bending is in this stage. If the wire circle is not nicely round and even, the shape might be crooked at the end. I've used my wire bending machine for the perfect shapes.
Placing LEDs
Place LEDs into the most bottom ring in the template. The first one consists of 8 LEDs. I've marked all the GND leads of the LEDs from the bottom with a black permanent pen to be able to recognize where the GND (VSS) pin is located. Place all LEDs in a such a way that the GND pin faces the inner ring, and VCC lead the outer ring. This is important! Each ring will be exactly like this! Inner wire ground, outer wire power. See the picture above. I've dipped each LED in the flux before I inserted it so it would hold in the slot better.
Insert the inner ring and solder all the GND pins to it. Insert the outer ring and solder all the VCC pins to it. VCC pins is located diagonally from the GND pin. Make sure the rings are not connecting any of the DATA (DIN and DOUT) leads of the LEDs.
Repeat until you have 6 rings:
- 8 LEDs
- 14 LEDs
- 18 LEDs
- 20 LEDs
- 24 LEDs
- 26 LEDs
Note that you only need one 6th ring for the whole sphere - it's the middle ring. So include it only in one of the two halves - the first one would be 5 rings, the second one would be 6 rings for example.
WS2812b LED
For those who are not familiar with this LED. This is an individually addressable RGB LED. Simply speaking you need only one wire to lit it with any color of a rainbow. In contrast to classic LEDs where you adjust the brightness of LED by the amount of current flowing, WS2812b is constantly powered and the light is controlled via digital signal. You tell it what color it should show. You might ask: So it only needs 3 leads rights? The 4th lead is used to feed the next LED in the chain with the control signal. Yes! That is the best feature. You can have a looong strip of these and still control all of them with just one wire. You simply feed the first LED in the chain with the instructions for the other LEDs and it will keep forwarding them. (Datasheet)
Interconnecting Data Lines
Power lines are the wire rings, you already have that. Now you need to also connect the other 2 leads of the LEDs - DIN and DOUT. DIN is located next to the GND pin and DOUT next to the VCC pin. I've used 5mm long wires to do the job. This is also really important to do properly. Make sure the data wires are not touching either ground or power rings. Make sure not to solder the data pins to the power rings.
Do this one ring after another start with the most inner one. When you reach a point where you would interconnect the LED you started with with the lat one, it's time to jump to the upper ring. I've used C-shaped jumper wire to connect data pins of two subsequent rings. The C-shape is needed because you need to bypass the ground and power wires. Continue with the next rings until you have all the LEDs connected into a long snake. You should end up with only two leads not connected - one at the very top ring. That should be the master DIN for the whole half-sphere. And one DOUT pin at the very bottom.
Connecting Power Lines and Starting Over Again
The last step in making of the one half-sphere is to interconnect the power lines between the rings. Not only to connect them but also to create a structure that will hold the rings together. I've used again C-shaped jumper wires to connect power and GND wires of adjoining rings. Use at least 4 jumpers at the first 3 smaller rings and 8 jumpers at the bigger ones. This amount will ensure the sphere will be strong enough.
Time to relax
Now it's time to take the half-sphere out of the mold! It's the most relaxing part after such long hours of soldering. First, take off the plastic rings that hold the 4 parts of the mold together. And start to firmly remove each part. Be very gentle here to not break any LED in the process!
Happy with the first half-sphere? Good! 🎉 Now start over and create the second half-sphere. Once again the half-sphere has a different number of rings. If you made the first one 6 rings, the second will be only 5 rings and vice versa.
Testing the Half-Spheres Out
Do you have both half-sphere ready? It's now a good time to test them both before you assemble them into the sphere. I know it's tempting to finish it right away, but trust me you better test it.
First, do a simple test with a multimeter and check for shorts between power wire and ground wire. Then solder two short wires to each of the half-spheres ground and power wire. Connect power wires to 3.3V pin of the ESP32 board and ground to ground.
In the end, all LEDs are connected to one long chain. That means the half-spheres are also chained. Took the smaller one (5 rings) and connect its DIN to the pin IO21 of ESP32 board and its DOUT to the DIN of the second half-sphere. Now you are left with only one not connected LED pin - DOUT on the larger sphere. That is the last LED in the chain. Done? Power up the ESP32 board and upload the code from "The Code" section of this tutorial.
All LEDs are lit? Great! You are done. If not and chain is somewhere terminated, check for cold joints or shorts on that LED. Took me an hour to fix all the errors I've made. So don't be desperate! It's pretty hard built! And you made it so far!
Inserting Microcontroller and Battery
Take the ESP32 board. By-pass the on/off switch first. You won't be able to access it because it will be inside the sphere. Desolder it from the board and solder two small copper wires in place of it. Leave them hanging, you will solder them when the microcontroller is placed into the sphere.
The board has 3 or 4 screw holes in its corners. We won't use screws, but rather fill the holes with solder to make them later easy to attach to the sphere structure - these will be ground!
Take the smaller half-sphere and place the microcontroller into the center of the smaller ring on the bottom with USB and battery connector facing out of the sphere through the smallest ring. Solder the corner holes to the smallest ring - it's ground, remember? Pull the two on/off switch wires through the hole as well and solder the previously desoldered switch on them. The switch has a metal body, use it to solder it to the smallest ring as well. Make sure not to short the switch wires with the structures! Don't let the power switch overhand the sphere structure - it won't roll.
Take a piece of straight wire and solder it to the 3.3V pin on the ESP32 board. Then solder the other end to the last ring of the sphere - it's power, remember? I've also reinforced the inner structure by soldering some straight wires between ground rings and board GND pins. Make sure to leave a space for a battery on the back of the board! Take a copper wire and connect master DIN pin to IO21 pin of ESP32. Now you have the half-sphere setup. Connect the battery and test it.
Does it still work? Good! You can now attach the battery with some adhesive to the back of the ESP32 board and connect it through the hole.
The Final Soldering!
Test whether the screw holes on the ESP32 board are actually connected to the ground. I have to add a short wire between it and the nearest GND pin of the board - it will provide a ground connection for the second half-sphere.
Solder short wire to connect DOUT from the first half-sphere to the DIN of the second half-sphere (same thing you did in testing phase). Cut 2mm long wires and solder them to the topmost ring of the second half-sphere. I've used 8 of these wires. Both topmost rings are power, remember? So it's safe to solder those two topmost rings of each half-sphere together. Place the half-sphere on each other and solder them together. Make sure the space between the two half-spheres is nice and even. Finally, connect the ESP32 board screw-holes with the smallest ground ring wire by solder.
You got a sphere now! Touch it. Hold it. It feels really nice, doesn't it? Turn it on, does it work?
The Code
Download the Arduino IDE source code. I am using Neopixel Bus library to control the LED "strip". It has a really nice interface and support for animations.
To be able to control the animations I've mapped the LEDs to table of 11 rows and 26 columns (array of arrays). This way I know exactly how the LEDs are placed on the sphere and can lit the exact LED I want.
I've prepared several animations so far:
- vertical circle
- horizontal circle
- vertical rainbow
- horizontal rainbow
- rainbow
- random pattern
Notice: I had to limit the brightness of the LEDs to approximately 20% of the full power. Because there is 194 of them and at full power they would consume 10 Amps. The small board cannot handle it. Don't worry if you use too much power the board starts to restart so it won't damage itself.
That's All!
I hope you like it! It was quite a challenging job to make and very rewarding in the end. The LED sphere is very beautiful even when not lit. It will be a great addition to our Christmas tree!
Merry Christmas!
Don't forget to share your creations! Like this article. Also, consider supporting me on Patreon or by buying some of my products in my Tindie store.
I am Jiri Praus.