Introduction: Stranger Things: Alphabet Wall
After watching Stranger Things once or twice I was wondered how hard it would be to make a practical version of the “Alphabet Wall”.
I didn’t want to make something that just did random words. I wanted to make a version you could control directly and was somewhat portable. Turns out it was a lot harder to find wallpaper that was even close to a match then getting the lights working.
While eventually I do want to make a UI which is smartphone friendly for now a very simple command line interface is a good start.
Step 1: What You'll Need
C7 Smooth STL File
This will make your lights look much more like traditional Christmas lights. http://www.thingiverse.com/thing:1640924
Alitove Ws2811 12 mm Diffused Digital REG LED pixel string light 5v round
The programmable neopixels which are the closest I could find that looked like Christmas lights. If you can find any which look closer to traditional Christmas lights, and they’re wired the same, give them a try and please let me know. Also the 5V version allowed me to wire in a USB cable to power it.
Printer Filament I use PLA:
Raspberry Pi 2 with Canakit:
This is going to control the lights. Also, with the Canakit, there is a WiFi dongle included to allow remote access. I wanted something with more horsepower then a Arduino in case I wanted to add more devices later.
Mokungit 20 Pairs 3 Pin JST SM Male Female plug
These are for extending the neopixel light chain far enough so the letters line up properly.
22 AWG Solid Core Wire:
Heat Shrink Tubing:
Old USB cable:
This is how we’re going to power the neopixels separately from the Raspberry Pi.
This is to doublecheck the voltage to prevent burning out the neopixel cable.
¼ Watt 200 ohm resistor:
I used one on the USB cable because the voltage kept going above 5v enough I wasn’t sure of the tolerance range and didn’t want the neopixel string to burn out.
Foam Board: 20'’x40'’:
Depends on how big you want to go with this.
I’m just going to say your call on this. I had bought some from Amazon, for too much, but the roll I got came up short and the pattern wouldn’t have matched up. I finally found some shelf liner at a Dollar store which is close enough.
Step 2: Print the Christmas Light Bulbs
This isn’t required but it makes the neopixels look a lot more like 80’s Christmas lights. Also it helps to draw attention to the lights you're using rather then rewiring each light to increase the length in-between them.
Getting these printed first makes later steps easier and quicker. You’ll need 26 printed, one for each letter. I printed these in transparent white filament. I used 2 parameters with 5% infill which is more than durable enough for the project. They should be printed standing up and definitely no support is needed.
Step 3: Putting the Light Bulbs on the Neopixels
Gently pushing the printed bulb on the neopixel will pop it on. If needed twisting the bulb will secure it to the neopixel better. Put a bulb on every other neopixel to space out the letters better.
Step 4: Foam Board
If you want to mount wallpaper or shelf liner on the foam board taking care of that now would be best.
Step 5: Neopixel Layout
If you have the 50 string of neopixels and want to try being accurate it’s too short. You need to snip the wires and extend them.
Before you snip any wires check both ends of the neopixel string. There should be a 2-pin JST connector and two other wires. Whichever end of the string the wires go into the bulb and it has a white arrow that is your input side. That is the side which is getting plugged into the Raspberry Pi.
Measure out the number of printed bulbs you need for each line then snip the wires.
Step 6: Solder the JST Connectors to the Neopixel Wires.
Ignore the end of the string which is your input side for now. This is just for where you snipped the line to make 3 separate sections.
Make sure you connect the wires the same way on all of the ends you cut. I used heat shrink tubing and electrical tape to secure the connections. I took a few JST connector pairs and soldered them together, again make sure you connect the wires in the same way.
Note: The circuit board on each neopixel has a white arrow on one side and none on the other. The white arrow is the incoming data side and the side without the arrow is the outgoing data side. If you don’t connect the neopixel lines in the same order then not all of them will light. Make sure you have them hooked up the same way before mounting the neopixel lines. I accidently flipped them the wrong way and had to make a few extra JST connector extenders to connect them properly.
Step 7: Wire the Neopixels to the Pi Header
Note: Make sure you pick the input side before starting the wiring, wires going into the neopixel with the white arrow on it.
The JST connector is for the data. If you're using the same neopixels, as I am, then the white wire is for data and the blue wire is for negative (ground) side. The wires I used to plug into the JST connector was yellow (Data) and black for negative.
The other two wires are for power. Red is positive and blue is negative.
Note: Here's a link to USB connector pinout. I used a very old USB connector from a RIO 600 mp3 player (look it up for a laugh :) ) so I had to use a Voltmeter to make sure I had the positive and negative for 5V correct. I highly recommend you use a Voltmeter to make sure you have the correct wires.
I used the instructions on https://learn.adafruit.com/neopixels-on-raspberry...
Specifically the section for Diode Wiring which I added a ¼ watt 200 Ohm resistor to the negative lead from the power supply. The one other difference was I took apart an old USB cable and wired that in as the power supply input. I recommend having plenty of slack for the wires leading to the Neopixels in case you need to hide the hardware further away from the board.
Step 8: Setup the Raspberry Pi Software
Install what you want on for the OS Raspberry Pi as long as you can remote login to it. I used the instructions again on https://learn.adafruit.com/neopixels-on-raspberry...
I recommend the overview for instructions on how to enable and connect to the terminal using SSH. Once that is done then go to the Software page and follow the instructions to install all of the needed software.
Step 9: Connect the Raspberry Pi to the Pi Header
I like the Canakit case since the top easily comes off so if you want to use the Pi for something else you can. If you haven’t done it yet plug the IDE cable into the Pi header then plug the other end into the IDE port on the Pi.
Step 10: Run a Test
Plug in the power for both the raspberry pi and the neopixels.
Once the Pi has booted up go to where you installed the rpi_ws281x library then the subdirectory Python and Examples.
If you haven’t modified the strandtest.py then run ‘sudo pico strandtest.py’ and change the LED_Count to the number of neopixels you have connected.
Once that has been saved then Run ‘sudo python strandtest.py’ if everything is hooked up correctly the entire string should light and change colors.
Step 11: Mount the Lights
If everything went well then it’s time to mount the neopixel sections on the board.
If you’re going with 3 sections of neopixels the part with the power and the data connection is the lowest.
If you want to change the layout take a look at the code step which I will explain in detail how it’s setup.
I used floral wire, and commandline putty to secure each section with enough room for the letters. Make sure the floral wire isn't too tight and it crimps a neopixel wire.
Step 12: Connect All of the Sections
Connect each section with the JST connectors. If they’re too short add some JST extenders which you can easily hide behind the foam board. Once they’re all connected run another StrandTest if everything works then put each letter on the corresponding light. I used acrylic paint to make it look closer to the real thing.
Step 13: Code
Apart from the initial neopixel setup values, there were a few useful functions in the StrandTest.py example along with almost all of the headers I needed.
I used that as a base to start out with then added my functions and headers.
The main prompt is 'Text to show:' which the person can type whatever they want in then hit enter. As long as there is an assigned neopixel to the character it will light the appropriate neopixel.
I added a simple command setup which someone can add or modify as needed. Random mode is the one example I have setup. When they type in @Crandom and hit enter it will go into a loop and randomly pick a word from the list in the function.
The triggers for key word combinations is the other example I setup. The two examples are happy halloween and run which will execute a function after it runs through the word(s).
Step 14: Using the AlphabetWall
I used a Anker PowerCore 1300 to plug in both the Raspberry Pi and the neopixel line. I haven't tried continual running to see how long it will last on a full charge yet but I'd estimate at least 5 hours.
I have the Raspberry Pi connected to my home network which allows me to open a SSH terminal from my computer then run the program. I haven't tried configuring the Raspberry Pi as a WiFi Access Point for a direct connection. I looked into the SSH clients for the iPhone and was a little surprised how few I found for under $2.
Reflection for Unix: is a free SSH client which so far seems like the best bet. You do not need to manually input your SSH keys and changing the font is very easy.
If you have a small windows tablet then PuttyPortable should work fine and it's free.
Alternative to SSH client:If you have a compatible small wireless keyboard then you could set the alphabetwall script to run at startup and type carefully. Besides the random command all of the others will go back to the 'Text to show:' prompt.