Sean here again, with another Halloween related project. Better late than never…
One of our good friends has a big Halloween party every year, and unfortunately they couldn’t have the party at their house this year for of a variety of reasons. We offered to instead have their party at our place, and of course we would need to do some decorating for a big party. Since we’re all fans of the show Stranger Things, I decided that recreating “the wall” that Will uses to communicate from the Upside Down would be a fun decoration for the party, in addition to being a fun exercise. We’re really happy with the way that it turned out and since I’ve had a few people ask for details, here’s a quick run through of how I accomplished it.
Here’s what it looks like in action… you’ll see that we included a bunch of memes and things to make people laugh. The program is fully customizable, and pretty easy to use once it’s set up.
Here’s what you would need to do it yourself:
- a good supply of WS2812 RGB LED lights (at least 26, of course, but you may need more unless you solder for a living). Here’s a set of 30 on Amazon though as an alternative you could also get Neopixels through Adafruit.
- An Arduino (I used an Arduino Uno starter kit from Adafruit). Adafruit Link
- 100′ spool of green wire (I used 16 gauge, now I would recommend 18 or 20 gauge). Here’s some 18 gauge on Amazon
- A string of Christmas lights with screw-off C9 bulb covers (we bought a string at Walmart).
- 26 water bottle caps (hope you’re thirsty!)
- Arduino Software (for programming the Arduino). Software Link
- Soldering supplies (a good soldering iron, solder, wire cutters, cleanup stuff, etc).
- A hot glue gun and a handful of glue sticks.
I recommend having extra LEDs on hand because the soldering pads on them are tiny, and unless you’re much better at soldering than I am, you’re going to have some mistakes. I broke the soldering pad on three different LEDs while making this strand of 26 lights, so it was good that I had a few extras on hand. There are six different pads that have to be soldered on each LED, two for power and one for signal, both in and out.
There are loads of tutorials on how to use these LEDs on the Internet, I highly recommend checking out the information that is available in the Adafruit NeoPixel Uberguide. I wouldn’t have been able to do this without that guide.
Setting up the Arduino is simple.
See? Nothing to it.
Okay, a little bit of explanation might help. The Arduino starter kit also comes with a Proto Shield for rapid circuit prototyping , and also includes a cute little breadboard. I followed Adafruit’s instructions on setting up the prototyping board, plugged it into the Arduino Uno, and then set up a quick circuit following the instructions in the NeoPixel Uberguide mentioned earlier. Essentially, we have power coming from the +5v pin via the orange wire, ground coming from a ground pin via the blue wire, and the #6 pin is connected to the breadboard with a 100ohm resistor (to help protect the first pixel in the strand, this should have been a 470ohm, but it’s what I had on hand). The strand of lights would then connect to the breadboard using the three wires that extend out of the bottom of the picture. Orange “+”, Blue “-“, Yellow “signal”. There were some other things that I set up while testing, but this was ultimately what was used.
Having the Arduino starter kit was a huge help, because it came with extra resistors, switches, LEDs, etc that were handy to play around with while I was learning how to make this work.
Now, on to the process of building things…
There are three different “runs” of Christmas lights, one for each row on the wall. On each of these runs I used 20″ lengths of wire at the ends, and between each light there are roughly 10″ lengths of wire.
I started with three 20″ pieces of green wire, soldered those to the input pads on the first LED, then three 10″ pieces of green wire on the output pads of the LED. I would continue with roughly 10″ lengths between each LED until the end of each “run”, where I would use a 20″ length again. After soldering the wires on the input side I would test the LED by plugging the leads into my Arduino which was loaded with the Strandtest sketch that comes with the Arduino software. If the light tested good, I would move on to the next step and solder the output wires, then test again. After I had the inputs and outputs of one light finished, I would move on to the next light and solder the input wires on the next light, then test again. If that step tested good I would then build the enclosure around the first light.
The enclosure for each LED required a modified water bottle cap…
…and a modified C9 bulb from a sacrificial string of Christmas lights.
The water bottle cap was cut up a bit using a pair of side cutters, and the C9 bulb had a channel cut out of it using my trusty Dremel, to allow room for the wires once it was put together. I would very gently press the LED into the bottle cap, squirt some hot glue in around each wire, then press the C9 bulb into place and run glue around the outside edge.
After letting that cool down, I would then plug everything back in and test again. If everything still worked at that point, I was satisfied that it would be pretty sturdy. Once the hot glue set up there was nothing I would be able to do to get them back apart, so I was really careful about testing at each and every step.
So far so good.
After the lights were all buttoned up I gave the wires a bit of a twist, so that they would look like old Christmas lights.
The letters are from the Cinnabar Brush font, and were cut out of black construction paper using our Silhouette, and then glued to the wall using a bit of rubber cement.
The code that runs everything was put together using some examples that I found online, and is probably more complicated than it could have been. My main prerequisite was that I wanted the lights to look like an old strand of Christmas lights. Even though each pixel was capable of being any color, I wanted A to always be red, B to always be yellow, and so on. This required that I manually enter the colors for the different functions that would run each portion of the show. I also wanted to make it easy to program individual phrases into the show, so I made a single function for each letter, that would be used to spell out each phrase. I made a couple of functions to do fun things like chase the lights from beginning to end, end to beginning, and a couple of different flashing and wipe functions. All of these are called from the main loop() during the show.
If you’re looking at the code, you might notice that the numbering associated with each letter looks weird. Each pixel is called using a number between 0 and 25, and the order of the letters in the strand do not directly correspond with A=1, B=2,etc. That is because my strand actually starts at the letter Z (pixel 0) because I powered it from that end, and then at the letter R (pixel 8) the wire connects to letter I (pixel 9) and then counts up to the letter Q (pixel 17) before hopping over to the letter H (pixel 18) and moving back down the alphabet to the letter A (pixel 25). It makes a bit more sense when you’re playing with it, just remember that if you reuse my code, the lights have to be wired the same as mine in the photos and video.
The code used for our show is available for download here.
To finish up the look, I hung up a bunch of normal Christmas lights all over the living room, and left it running during the party.
With that, Anna can have the blog back now. :)