Monthly Archives: September 2017

Christmas Lights 2017


This year (2017), I decided to put up some Christmas lights at home, they consist of basic shop-bought ones and also home made programmable ones.

There will be quite a few different parts to this projects so i’ll separate them into individual posts. Click the links below to access them…

The Pixel Lighting Controllers

Power Supply and Distribution

LED Pixel Grid

LED Pixel Spinner

Pixel Spinner

As part of my Christmas light display i’m going to build a couple of pixel spinners.

I drew up this very rough diagram so i had an idea of what i was doing.

I know, it’s poor. I do plan on getting to grips with some cad software at some point to make nice drawings. 

The ‘sticks’ are going to be made of 20mm PVC Electrical Conduit pipe, it’s reasonably priced and easy to work with. The center piece i designed and printed with my 3D printer…

It took a few attempts to get the hole sizing correct for the tubing to fit nice and snug, but it worked out well in the end…

As you can see in the image above, i’ve already started drilling the holes for the Pixels to sit in. To do this i built a little jig, this gives me a much better chance of getting the holes somewhere near the right place. 

Once i had drilled all the holes i cut the LED Pixel string into the correct lengths and pushed them into the holes. You have to be quite forceful to get some of them to fit in. It also helps to shave down some of the little rubber tabs slightly.

I then had to connect them all up – this was a slow process that involved soldering lots of connections. Every connection was covered in adhesive lined heat shrink tubing to make sure they’re waterproof. You can see the adhesive oozing out the end of the tubing. For the cable i used some ‘6 core alarm cable’ as i had an old reel kicking around. Needing only three cores, i doubled them up. I covered the whole lot with some ‘self-alignment tape’ to add another layer of waterproofing.

I wired it up for a test and it worked great other than a couple of the LEDs not working on a certain colour. They do work correctly if you put pressure on them in a certain direction, so one of the legs on the LED must have become disconnected. Probably whilst i was pushing them into the tube – something to remember for next time.

I then Attached the controller module and a loop so i could hang it on the wall,.

ESP Pixel Controllers

The Lighting Controllers

I’ll need to build controllers which will take the data from the main PC running the sequencing software (Vixen) and in turn switch on the correct LED’s at the designated values.

My original plan was to use RS485 Serial connection to send the data around to the controllers as i know this is how people have done it in the past, i also have a little experience with RS485 / Serial so there would be less of a learning curve.

After a little bit of research i came to the conclusion that the Serial communication method is a little out-dated and naturally IP / Wireless has become the norm. With the ESP8266 being my personal favorite ‘WiFi enabled’ Micro-controller, a quick google discovered that others had already done exactly what i have set out to achieve with regards to the controller. 

I did a quick search online for an overall diagram of system but couldn’t find anything, so i came up with this..

I came across the ESPixelStick project which is perfect. I’ll be able to upload the firmware to the ESP and then do all the configuration through it’s web interface. The only thing i had to edit in the code was my access point credentials. I highly recommend checking out the ESPixelStick GitHub if you plan on building any ESP based lighting controllers.

Having the software side looking promising i programmed a NodeMCU board with the firmware and wired up a Pixel RGB LED Strip. Configuring the ESP via the web interface was easy enough. But it just wasn’t working. I was getting strange erratic results from the LED strip. A 10K pullup resistor on the data line of the Led strip seemed to fix the issue.

Knowing it was all now working as planned, i drafted up a schematic…

Knowing i was going too need a few of these, i designed a PCB and sent it off to DirtyPCBs to get them made. I was in a bit of a rush to get this done fairly soon as it can take a few weeks to receive them, still great value for money. I managed to squash it into 2.5x5cm so i can fit two of them into the 5x5cm limit board size.

Whilst waiting for the boards to be made, i put a prototype together. This would allow me to program and test the ESP modules in advance.


Only problem is – it didn’t work. After a bit of testing / googling it turns out that the Generic Level Shifters don’t switch fast enough for the data. I haven’t come up with a sleek method to shift the 3.3v up, but i did come across this post on HackADay, which will do the trick. Hopefully i can make a WS2812 fit on the PCB that’s already being manufactured…

In the mean time, connecting it directly to the 3.3v data from the ESP seems to work fine. 

After a few weeks the PCBs arrived…









First thing to note – don’t bother getting white boards! I though white would be cool as it’s a bit different and almost christmasy… Except you can barely see the traces which is actually rather annoying in an test/development situation! I soldered the components on including the WS2812 LED as mentioned in the Hackaday post but it wasn’t working. The individual led worked fine but not the string connected after it. If i added another WS2812 LED that also worked fine. So i can only assume that the WS2812 LEDs and the WS2811 strings are not compatible?

In the end i replaced the 3.3v regulator with 3.6v instead. This is the max rated input voltage for the esp and increases the data line voltage slightly. This seems to work pretty reliably so far.

The next job was to design and print some waterproof enclosures for them you can read about where i got the design in my other post