Introduction: LED Clouds Using Fadecandy, PI and LED Strips

About: I'm a Medical Student who enjoys making interactive audiovisual art.

I've made some LED clouds to create an ethereal atmosphere in my house. These were initially to be used for a festival that has been called off due to the current pandemic.

I've used a fade candy chip in order to achieve smooth animations and I've also used a Raspberry Pi so I don't have to have my main computer plugged in. For those without a raspberry pi this set up should be easy enough to do with any computer but it won't then be able to act standalone. See the schematic for an overview on how this is working. The Pi set up can control the LEDs, with another laptop wirelessly sending the message of what to display, leaving a more powerful machine to do more intense graphical processing if needed.

This may seem a very complicated set up for what it is but this means the lights are highly customisable and interactive.I have so far used them in conjunction with a Kinect as an input source, responsive to audio, responsive to mouse movements etc.

I've used processing for the animations as it's a easy (easier) language to use, with lots of resources and a great community. A Fadecandy can control up to 8 strips of 64 LEDS however, this project is easily scalable to include more strips and Fadecandy boards.

This guide is strongly influenced from several other sources on the internet and its only right I give them credit.

Amy Goodchilds guide to how to set up Addressable LEDs with Fadecandy https://www.instructables.com/id/How-to-Control-A...

Phillip Burgess - 1,500 NeoPixel LED Curtain with Raspberry Pi and Fadecandy https://www.instructables.com/id/How-to-Control-A...

Daniel Shiffman's Coding train introduction to processing

https://www.youtube.com/user/shiffman/playlists?vi...

Adafruit's Neopixel Überguide (particularly the best practices section) https://www.instructables.com/id/How-to-Control-A...

Supplies

Parts

Fadecandy + USB cable - https://www.amazon.co.uk/Adafruit-FadeCandy-Dithe... or https://www.adafruit.com/product/1689

WS2812B Addressable LED strips https://www.amazon.co.uk/WS2812B-Visdoll-Individu...

A (1000 µF, 6.3V or higher) Capacitor

28awg Wire https://www.amazon.co.uk/gp/product/B07TT69PPV/re...

Raspberry Pi https://www.amazon.co.uk/Raspberry-Pi-3-Model-B/d...

5V Power supply unit (Ampage is up to you more on this later)

I used https://www.amazon.co.uk/Axe-Co-Universal-Switchi...

However, I'm considering a larger power supply if I step up the scale. More info can be found on the guides linked below.

These two make things a little bit easier than soldering every wire

JST Connectors, https://www.amazon.co.uk/Pairs-Connector-Female-C...

Wago connectors (this is just a bit easier than soldering all the wires) https://www.amazon.co.uk/dp/B0834WBKBJ/ref=sspa_dk...

Dupont Wire 40pin Male to Female https://www.amazon.co.uk/gp/product/B01EV70C78/re...

PCB header connectors https://www.amazon.co.uk/gp/product/B01M69EA9O/re...

Tape, heatshrink

Materials

Cardboard

Chickenwire https://www.ebay.co.uk/itm/Chicken-Rabbit-Wire-Ga...

Polyester Hollowfibre (Fluff) https://www.amazon.co.uk/gp/product/B008YKRC9U/re...

(Clean...)Takeaway Container

Tools

Wire strippers, Soldering Iron, Scissors, Multimeter (Helpful but not essential)

Step 1: Cloud Construction

Step 1

The first step in constructing the cloud is to solder a JST connectors onto the LED strips. Be careful to be consistent with the directionality and orientation of these connectors.

If you want to skip using JST connectors, wires can be soldered directly onto the strips but do take care colour coding and labelling. I used a 32 LED strip and attached JST connectors to both ends. This will allow two distinct clouds to be joined creating a 64 LED length strip while allowing the cloud itself to be modular and manageable.

Step 2

This is to build the cardboard (or any other material) skeleton of the cloud. I used cardboard as I had some lying round. I created long rectangular structures as pictured from several larger boxes. In order to make these ridgid I used some of the chickenwire to create reinforcement where the box bends as well as created a join on either end of the 'cloud'.

Step 3

I attached The LED strips to the cloud. I used 4 strips of 32 LEDs per cloud. They had adhesive backing however, I used some of the spare chicken wire to attach them in place more substantially at parts.

Step 4

Now we can cover the cloud in chicken wire. This will be naturally rolled up and is much easier than it looks to place over the tube.It is even easier with an extra pair of hands helping. It can be bent round and will hold in place. I also attached two pieces of wire in order to create hanging hooks. I looped the JST connectors around some of the chicken wire in order to minimise tension on the solder joins.

Step 5

I added the Hollowfibre fluff to the chickenwire. Some similar projects use hot glue but depending on your fibre this may not be necessary. A large piece will be kept in place between the chickenwire and the cardboard and filling the gaps is relatively easy.

Congratulations you have your cloud. I repeated this four times so far in order to have 4 clouds. This allowed me to maximise the use of the Fadecandy boards ability.

Step 2: Fadecandy Setup

Amy Goodchild's guide to setting up LEDs with Fadecandy goes into far more detail than I will here and is very clear.

In order to set up the Fadecandy I first soldered two headers onto the chip.

I then used some Dupont male to female wires leading to some Wago connectors to attach the data cables to the correct JST wire. The data cables should be attached to the row of the Fadecandy closest to the middle of the board. The bottom row will need to be attached to the negative power but more on this later.

Step 3: Power

As I don't plan on using too many amps as I don't intend to have many of my LEDs on at any one time for this cloud I opted to use a universal adaptor/5v PSU I had. I placed a capacitor across the terminal in order to protect the strips from a voltage spike on turning on.

Take care to distribute the power using appropriate size wires for the amps being used. I distributed this out using Wago connectors. Splitting this into 8 pairs of negative and positive 5v wires you can join these to the JST connectors (or straight to the LED strips).

For more information once again consult Amy Goodchild's intractable and the Adafruit neopixel Überguide.

Once this is done you can attach the data pins to the JST giving up to 8 complete JST connections ready to be attached to your cloud(s).

I 'Organised' this mess into a takeaway carton and taped it closed to try and make it a little neater.

The inputs are the usb going to the Fadecandy, and the power cables. The outputs are the eight JST cables we put together.

If you'd like to test the Fadecandy board is set up and running before starting with the Pi you can plug it into your laptop and download the Fadecandy files from https://github.com/scanlime/fadecandy
You can run the relevant file to set up a server and go to the UI on http://localhost:7890. to test the lights. There are also example sketches on processing if you'd like to have a play around with the lights at this point.

Step 4: Raspberry Pi

Now we know the Fadecandy is controlling the lights, we want to set up the Pi to control it so we can do more than just turn them off and on.

A guide on how to set up the Raspberry Pi with Fadecandy can be found here

https://learn.adafruit.com/1500-neopixel-led-curta...

This guide shows step by step how to set up the Fadecandy server so it starts by default on booting the raspberry pi. It also sets up SSH so you can access the Pi over a network. It is also worth setting up VNC control for the PI graphically as this is very simple in Debian.

Once the Pi is set up you have several options, you can change the address of the Fadecandy server on your laptop to control the lights over the network.

This can be done by changing the line in processing examples from

var socket = new WebSocket('ws://localhost:7890');

to the relevant name. Eg. var socket = new WebSocket('ws://Pi.local:7890');

Or

by changing the lines to the relevant IP

opc = new OPC(this, "192.168.0.x", 7890);

You could set up processing on the Pi itself to run a sketch either by attaching a monitor, mouse and keyboard or through VNC. If you're a better coder than I am I'm sure it's possible to start a processing sketch on Pi start up by playing round with

~/.config/lxsession/LXDE-pi/autostart

Inside processing you will need to change the mapping of your pixels on processing to reflect how may you have made.

One worked example is if we open the processing example called strip 64. Depending on how many pixels you have made in this instructive you will need to change the code accordingly. There is extensive guidance on the Fadecandy git up for this.

Going to the line in the setup section stating .

// Map one 64-LED strip to the center of the window

opc.ledStrip(0, 64, width/2, height/2, width / 70.0, 0, false);

Depending on how many LEDs in your set up you can change the 64 to that number. For example if you've only made one cloud of 32 LEDs change this to 32.

We can create a loop in order to make the relevant number of strips at the right length. Changing the X and Y appropriately in the line below and replacing the line we just discussed in the setup section.

// Map X strips of Y pixels each

for (int i = 0; i < X; i++){

opc.ledStrip(i*64, Y, width/2, I*Y + 30, 15, 0, false);

}

With processing the possibilities are endless. I will attach a few videos of my four clouds playing an animation hanging on my wall.

Thank you for taking the time to read this. As I've said throughout I wouldn't have been able to make this without the hard work of others. Particularly Amy Goodchild, Phillip Burgess, and Daniel Schiffman.

I tried not to repeat what they have said in their own tutorials but if you come into any trouble message me and I'll see if I can try and help.

LED Strip Speed Challenge

Participated in the
LED Strip Speed Challenge