Merry Boxes & LEDs

Enter Your Project for a chance to win a Maker Tool Kit, an Oscilloscope Grand Prize for the project that brings the Most Joy to the Heart, and Gift to Gives!

Back to The Project14 homepage

Project14 Home
Monthly Themes
Monthly Theme Poll


Following on from LED Fireworks - Festive Lights 2018  and LED Fireworks - Happy New Year I've found some time to write some more detail on how I built them. I have made a variety of LED firework units and each is detailed in later sections; some units were started two years ago but have been modified and upgraded for this year. My submission to Project14 | Holiday Special: Spread Mirth and Merry Through Music and LED Displays!  is therefore a suite of projects rather than a single project.


1.     Videos

The units are hung/strapped into some trees in my garden. The missing pixels are generally down to visual masking by twigs and branches although the effect is far less noticeable in reality than apparent from the videos below.


1.1     First Video

The first video shows my setup at the start of December - it consisted of 3x 'PIC Firework' and 1x White 'Hyperspace' display.


1.2     Second Video

Initially I was left with 2x 'PIC Firework' and the Hyperspace display after overvolting one of the units shortly after repairing it. However I soon received an online order and was able to make a second hyperspace but using multicoloured LED tubes. I was also able to salvage some of the 'PIC Firework' to make an 'Arduino Firework' complete with rocket tail.


2.     The Effects

2.1     PIC Microcontroller Fireworks

My PIC fireworks utilised the Configurable Logic Cells (CLC) of a SMT packaged PIC16F1509 microcontroller to create the precise timing protocol required to drive the WS2811 RGB LEDs and I made a PCB (using Eagle PCB)  to keep things nice and neat. I wrote this code using PIC assembly language rather than the C compiler....mainly because I simply enjoy writing in assembly still. To get the values to morph between colours I wrote a VBA Excel Macro enabling me to choose the colours and to generate the assembler text required to paste direct into my asm file.

{gallery} My Gallery Title

Cleaning the PCB

Homebrew PCB - cleaning off the dissolved photoresist

Lots of wires to cut, twist, pre-tin, snip to length and solder in place...not fun in sub-zero temperatures.

And soldering together on a jig...10x LED per 'arm'

I previously mentioned my difficulties with waterproofing the handwired WS2811 chips. After only a few days from posting my first video I noticed one unit had 'frozen' pixels on an arm, then another locked up completely. With the eight arms wired in parallel any moisture ingress easily loads the comms/data wire and pulled down the whole effect or just parts of it. The overall display quickly went downhill and did not look the part anymore.


I took the decision to bring all the Firework effect units down and repair them. This was a horrible, time consuming and messy job. I had to pull off all the clear silicone sealant, most came away freely (which was why water was getting in), some was still wet behind. I snipped all the cable ties and cleaned up each WS2811 die as best I could. However the silicone had stuck very well to one thing...the clear glass window of each WS2811 chip and needed a craft knife to slice the excess off.


First messy part: I used epoxy resin the seal the solder connections to each WS2811 chip and flooded it around the chip and the on-die resistors. My adhesive had a setting time of about 4 minutes which meant I had to work in very small batches and very quickly. The advantage was that it didin't have long to drip off. I used hot melt glue to attach the first strips back onto the fibreglass pole structure and added extra hot melt glue around the contacts. I then added the 'iced' peaks to diffuse the LED in all directions. I stuck this first unit up in my lounge window soon after to keep the display visible but allowing it time to fully set but noticed a couple of the iced peaks fell off....and others followed and kept falling off ! [ this silicone sealant didn't like to adhere to hot melt glue ! ] and I ended up with eighty small silicone peaks.


So for this setup I added peaks of hot melt glue to make the diffusers rather than silicone ones. It works well and was actually easier to manoeuvre in the tree as it tends to slide between the small branches far more easily than the silicone encrusted variants. However the hot melt glue slumps quickly and needs to be added in several stages to build up a reasonable height of diffuser. Also my hot melt glue machine needed time to recuperate its thermal capacity so the process is quite slow.


Second messy part: On the other two units I made the same repairs using epoxy resin but fixed them to the fibreglass pole structure using a dab of silicone sealant behind each LED; wiping it around each LED and then topping off with the 'iced' diffuser. Wearing gloves didn't work for me so I eventually ended up with silicone sealant over both hands: trying to pull tight cable ties, silicone on the floor, on the kitchen cupboard (did I mention I had to do this inside as the stars are too big and unwieldy to fix in my 6x6 shed?) and sealant on my clothes.


Hub Repair: Even though I had temporarily repaired two of the wooded hubs one had still deteriorated completely in those few days of being outside. The other was holding up for now. Therefore I used a piece of 3"  aluminium pipe to make a central former, drilled it to accept the fibreglass poles and then flooded it with hot melt glue....this, I can report, did hold up through the festive period. I need to repair the other two in the same way.

{gallery} Hub Repairs

The broken hub - water damage to plywood interior

Broken plywood hub - wet damaged.

Hot melt glue gun and new hub former

Using hot melt glue and an aluminium hub

The bit that looks like the hot melt glue has seeped out all over the floor is actually a MDF base that I made for a rather large, three rounds, birthday cake.

Hub Repaired and electrical box screwed to other side.

The repaired hub with lots of hot melt glue holding the fibre glass poles into the central aluminium tube.

Every storybook plot has a down point, here is mine: At this time I was experimenting with a new string of RGB leds (12v) and making a 'Roman Candle' effect. I had put two of the repaired units back in the trees and the third was now repaired and glues/silicone had set. It was another very wet and windy weekend and I didn't fancy climbing the tree again, but eager to show off the new unit I placed it in the lounge window, connected it to my power supply and turned it on. Now, we had a discussion about my new bench PSU Duratool D03232 Power Supply and that there was no way of monitoring the set voltage prior to turning the output on. Well, my unit's LEDs did flash but not in the way intended - they literally just flashed on and off randomly, and in just one of those flashes I realised my PSU was still set to 12v


Hopeful as ever, after adjusting back to 5v nothing came on except for one LED that was now permanently red. I tried to power the LEDs using a Arduino Nano, bypassing the SMT PIC chip, but that didn't work. I desoldered a couple of the WS2811 strands and was amazed to find they did still work. It turns out only the PIC16F1509 had been destroyed (and maybe that single WS2811 chip) but I didn't have a spare PIC nor any other similar microcontroller that could be repurposed. However I did repair this LED firework unit to make the 'Arduino Firework' detailed below.


2.2     'Hyperspace' Units

These units are a bit of a cheat really but add real visual variety to the display. Each is made from two sets of LED 'meteor shower' lights (8x tubes per set) and are generally seen hung downwards from trees etc. However if they are mounted radially they give a nice effect as well as the synchronisation between them slips. As you can see in my photos below, I used an old bicycle wheel as a frame. The only downside is that during the daytime they look messy (like many festive lights) but in my case it looks like someone has thrown a bicycle wheel into the tree !


They work at 5v so I was able to throw away the cheap wall plug that came with each unit and connect them to my ATX power supply.

{gallery} Hyperspace Units

An advert image for Meteor LEDs

White Set - mounted on a bicycle wheel

My new multicoloured set


2.3     Arduino Firework

Realising that it was just the PIC control board that was damaged on the overvolted firework unit, and without having a replacement, I decided to use an Arduino to power this setup - after all I found them quite easy to control when I made Peter the Pumpkin (part 5 - final thoughts) and added in some RGB LEDs. I had to desolder each strip from the PCB and found one (the strip with a LED stuck on red) actually loaded the others. I decided to just leave that leg broken for now and would mount the unit using that leg; otherwise I'd be removing epoxy on Christmas Eve and then having to re-waterproof. This gave me the opportunity to change the design to something I had thought of: to add a 'rocket' tail streaking upwards into the sky prior to this firework exploding.


I used a section of pre-wired WS2811 bullet LEDs as they were already waterproofed and took those up to the firework unit. The whole unit consists of the Arduino Uno (kindly sent to me as part of Project14 | The Birthday Special: Arduino Projects for Arduino Day! ) mounted in an icecream container, the string of 50x WS2811 up to the main unit and the main unit of 8x legs (10x WS2811 RGB LEDs on each leg). The PIC and PCB are not currently used. Having the code running on the Ardunio allows me to quickly adjust the pattern (as opposed to my assembly code which is slower to modify) and I was soon able to add the effects I wanted.

Icecream box enclosure

[see  for really tasty icecream ! ]


The tail is a stream of about 4x illuminated pixels that dim as they travel upwards whilst also slowing down, this gives the illusion that they have travelled higher than they actually do. There is a random delay at startup and before the firework explodes which keeps the display from repeating. The choice of colour in the final explosion is also random from some pre-written patterns in the Arduino code.


The code could perhaps do with some adjusting; the explosion is a bit too brief in duration, and the delay between launch and explosion can be too long at times.

My code can be found here


2.4     RGB Strip Controller (12v) Star

I had loads of old 12v RGB strip lighting in a bag - the sort of strip light where it can be all red, all green or all blue (and shades thereof). I cut some up and glued it to an aluminium frame shaped like a star. The plan was to use MOSFETs and make my own driver using a microcontroller but I also had a cheap controller for that lighting and so decided to use it to add a quick effect; although it didn't give the firework explode that I would have liked it was quite nice to look at and so have included it here.It runs off it's own 12v wall mounted PSU. It is also far easier to make than the WS2811 fireworks as each LED does not require individual soldering. Perhaps next year I'll upgrade this design to use a PIC microcontroller


2.5     Roman Candle Effect

New for this year was going to be a 5m Roman Candle effect up the side of the house. When the mail order "waterproof LED strip" arrived after some waiting I soon realised it was anything but waterproof and was unsuitable for the task; the LEDs were also not individual but each set of three was configurable to the same colour. The idea was quite simple. Using the Arduino I would create a pulsed pattern of bright LEDs that would shoot upwards. Given the range they would transverse this should give that 'roman candle shadow' effect on nearby objects. I planned to keep the colours fairly simple: red, green, blue, magenta, yellow.


The code is a variant of the rocket firework tail and can be found but it may need some tweaking still.


As the RGB strip light I ordered was not waterproof I didn't include this in my Xmas display ( but now wish I had done so and taken a video of them all working together). Anyway, I put the WS2811 string up in a tree the other night and took a short video - the other lights in the video are a Christmas set that I have decided to keep going as simple garden lights (because I like them). This would work well with 2-3 strips running in parallel so that the intense light is thrown onto nearby objects and creates that characteristic 'Roman Candle' sweeping shadow effect. Mine were pointing towards the camera so the effect is almost lost.



2.6     Catherine Wheel Effect

I also tried wrapping two lengths of WS2811 (pre-wired bullets) around a circular frame, spiraling out from the centre. I tried many different examples of code but it still failed to create the effect I was hoping for - in fact, it was so bad I did not even capture any video to share. Maybe I'll be able to address this later in the year - I think it might need to be motorised with the effect physically spinning.

3.     Power Requirements

I'm still undecided about going back to using a software light sequencer as I have in past used Vixen3 and made PIC boards to read the sACN data. My past setup was difficult to get going whereby my current setup uses a mains voltage mechanical timer to power up a ATX PSU. The 0v, 5v and 12v are fed to a breakout box located in the garden and from there to each of the fixtures. The fixtures have enough randomness in their code that the display just free runs. However I still like the idea of choreographing it to music or just synchronising the fireworks at times to all explode at the same time or speed up the rate of explosions/adjust the colours to harmonise them.


4.     Final Thoughts

I really enjoyed hearing comments from people passing by, children shouting out 'look at the fireworks' and the occasional car stopping for a good look. The warm comments like those and from the Element14 community, and neighbours, really counter the cold nights soldering in the shed or the glue getting on everything


Back in October I did offer these lights to adorn the Diwali display at work; which was eagerly accepted by the team until they realised no one would be available to actually host the desk; they have penciled in to illuminate their display this year, so I'm really looking forward to helping out.


Having to make repairs to the hubs and adding the waterproofing plus damaging one unit meant I consumed a lot of my time on this without getting as far as I would have liked to.


Do I progress with free running designs or revert to software control? Perhaps I should design for both - in the absence of a control signal they free run?


tonydbeck came up with the good idea of making a 'firework backdrop' for a model train layout which is something I might try and do in the year using PCBs and SMT components.


In future if I use WS2811 outdoors my assembly plan would be: solder the die together, test the strips, add epoxy resin and re-test. I will then mount using just cable ties and then add a few dabs of epoxy to hold in place before adding the silicone diffusers.



If you have any questions on the builds or need some aspect explained then please just ask.