After initially going through the electronics way of attempting christmas lights, I have decided to do it the easier way as there’s enough to go wrong as it is. My goal is to have 4 separate icicle-style areas of lights powered by 3 ESP32 WLED controllers, all linked together via a remote Raspberry Pi FPP sequencer so that they create a large canvas of sorts eg. a circle could expand from the centre of the house all the way to the outside edges. This will all be scheduled/designed using xlights like the original article. Lezduit!

Led Controllers

Initially I have purchased a few ESP32 based modules. These are basically the same as what I was building manually just it’s all neatly tucked in a fused box that I don’t have to worry about. For about $20 each it’s worth it, and they can drive two strings/channels of lights each at 12v.

These can work standalone if you would like a simple unsynchronised display eg. twinkling or sparkles or such, because you can use the build in numerous wled patterns. But I think I can go a little better…

Update: It is possible to sync multiple wled boxes together, I’m not sure how much they sync – my goal is to run all the leds as one giant canvas. So if you’re just wanting a synced light display with the fantastic wled effects then you can skip the Raspberry Pi & xlights portion of this.

Notes
  • Get the proper ESP32 versions as ESP8266 is losing support in wled.
  • These are very easy to update to the latest wled (16 currently)
  • Make sure when you reset it all, to remove the relay setting, and set the push button to 33.
  • Two of mine decided to stop pushing voltage through to the output side. I couldn’t find anything obvious inside it – there might be some sort of solid state fuse thing. I’m using 12v everywhere anyway so I’m just tapping into the input terminals.

Leds

For leds I’m going with the old WS2811 based 12v pixels, with white wiring to look like snow a bit, and long enough to create pretend icicles of 5 leds long. Theres a technique to this which I’ll detail below.

I’ll need about $200 of led strings to achieve all the areas.

An ESP32 WLED device powering WS2811 pixels

Synchronising

To drive a synchronised signal to those you generally need a dedicated single board device. The device requires WiFi at least, but I’m looking to have my board send the signals to a dedicated WiFi router over ethernet & hopefully broadcast the data (DDP Unicast) to reduce as much lag as possible. The easiest option is Raspberry Pi which are costly now due to the ram shortage, however I managed to pick up a Raspberry Pi 4 for $60 + a case. This will connect to my local WiFi for updates, and to the dedicated router over ethernet.

The thing with Raspberry Pi’s is they don’t come with storage. So the default option is to generally get a quality SD card which costs $50 or so and could fail. However I discovered these boards can boot a USB drive and I have a few old SSD’s around. A cheap $11 caddy later and I now hopefully have a reliable FPP device, that’s more money to spend on Leds and wiring!

Update: I’m having a lot of trouble with booting the Raspberry Pi 4 in general. I have attempted different images, different drives, different usb cords, usb keys, updating the eeprom on the raspberry pi 4. I’m just getting a solid green or a double-blinking green each second. Waiting on a micro hdmi to arrive so I can hopefully find out a bit more about what’s going on.

Update: Success! All hardware was perfect, I just needed to edit cmdline.txt on the drive after imaging, and change it from root=/dev/mmcblk0p2 to root=/dev/sda2 and everything started up perfectly within seconds.

Protip: If you’re wanting to connect fpp to your wifi, disable tethering and set your wifi ssid and such manually, then reset it.

A shiny new Raspberry Pi 4 board with wifi & ethernet
The hopefully final assembly for the sequencer – a Raspberry Pi 4 with an external USB SSD running FPP

WiFi

Running the display over wifi is generally frowned upon however it’s a cheap way to get started and hopefully good enough to do a very low intensity display. So the way to make it as solid and responsive as possible is to have the WLED devices on their own dedicated WiFi access point (Using DDP), and have the controller send the signals to the access point via ethernet. I happen to have an ex-modem router with wifi & ethernet ports, so that will be the backbone of this display.

Due to the wled devices being esp32’s, and to reduce interference, I’ll be disabling the 5g & running it all at 2.4ghz.

The unused wifi router, now for dedicated wled use.

xLights

This will be a similar configuration to what was worked out in the previous article, however with DDP apparently universes aren’t required anymore so this will focus more on that side of things.

Turning a LED string into icicles

There’s a technique to this which took me a while to find out attributed to a petulka77 on doityourselfchristmas.com. The trick is to use a regular Pixels string, but place a small PVC clear pipe after every 5 (or however long you want your verticals to be) lights. That forces the string to be relatively straight and allows for somewhat good separation. Then this back and forth pattern (called serpentine) can be set in xLights (and wled 2d matrix if you’re not using xlights or fpp) making them work as icicles or even a rough matrix. Much cheaper than dedicated icicles, with a little better coverage given the randomness.

A very small test run of a 5 pixel long DIY icicle style led string, hooked up to an ESP32 WLED controller.
A closeup of the clear tube arrangement, now in its final form for the official hanging on the house.
The shrinkwrapped connectors and 12v injectors. Hopefully this will keep the rain out but I can fill it with epoxy or so if not.

The test setup

xlights (wifi) -> (wifi) Raspberry pi (eth) -> (eth) router (wifi, DDP) -> (wifi, DDP) wleds (gpio2 + 16) -> pixels (arranged as matrixes, alternating node drop)

All devices connecting to the router (ethernet & wifi) will have mac address assigned static ip’s – so they need to be delayed in switching on so the router can do its thing.

6A of 12v WS2811’s. This is the complete middle row of lights for the house which is the goal this year. I’m hoping to wrap the letterbox in one more string which I’ll test in the dark space above.

I have got all lights now assembled on their guide string including the letterbox – except I need to extend some wires so the letterbox is still functional for letters. All ends so far have been heatshrunk – no idea if it’s rainproof yet, and power supplies are working well. So it’s time to get the final wiring sorted for it to all match where it’s going, and tested.

Update: Got the letterbox measured, joined, shrinkwrapped and the letterbox opening accounted for with longer wires to go in then back out.

My answer to wrapping the letterbox in leds yet keeping it functional to accept letters. I’ve extended these areas between these particular leds to go in then back out of the letterbox. This keeps the leds where they originally were according to matrixes and software and such.

Update: I have gone and silicone-backfilled all heatshrinks so that the survival in rain should be better now even if it would have worked anyway. I don’t have to think about it!

Layout

All 12v power will be sourced from the one point in the garage, and run along the guide strings except in the case of the letterbox which it will be run in a tube or hose. All devices are placed as close as practical to their led strings so the data lines are short and voltage drop should be minimal (led wires are 22awg), with the 12v lines (18awg) taking up most of the length.

I have counted the lights per set. This is the rough arrangement:

  • Power Supply 1
    • 4a 12v
    • 18awg 12v 5a fuse
    • Devices
      • Garage Wled
        • Wiring
          • 12v
            • Right at the source
        • Pixels
          • ~2.5m length to first pixel
          • 22awg 12v 3a inline glass fuse
          • Strings
            • Garage – 5.5m – 300 pixels
            • Bricks – 1.5m, 0.3m, 0.3m – 150 pixels
  • Power Supply 2
    • 4a 12v
    • 18awg 12v 5a fuse
    • Devices
      • Front Wled
        • Wiring
          • 12v
            • ~5m to device
        • Pixels
          • ~2m to first pixel
          • 22awg 12v 3a inline glass fuse
          • Strings
            • Foyer – 0.1m, 3.5m, 0.6m – 250 pixels
            • (Future upper windowsill will attach here)
      • Letterbox Wled
        • Wiring
          • 12v
            • ~7m to device
        • Pixels
          • ~0.5m to first pixel
          • 22awg 12v 3a inline glass fuse
          • Strings
            • Letterbox – 0.3m, 0.4m, 0.3m – 70 pixels
Here’s the pixel arrangement in xLights. You can see the 3 distinct areas, each with a dedicated wled controller. Example 1-3 is a set of matrixes below the frame for testing effects out.
And here’s the groups in xlights with some of them sketched on top.
Here’s the devices and the settings, this might need updating.
And here’s the current xlights sequence for this layout, just testing effects to see what works. Shown is a sparkly icicle effect.