One of the best things about using FDM style 3D prints from a Series 1 3D Printer to build walls in the translucency of the material. This material quality allows for interactive and performative elements to be integrated into the surfacing systems of the parts. We first stumbled upon this phenomenon with our Echoviren structure at Project 387. For our work on Liminal Mass we decided to integrate a mico controller and LED strip lighting directly into the piece. This system would be controlled by an RF remote so the user can control the modes and models of interaction with the piece.
Step 1: Design, Sketches, and Math
The first step of designing the system was to sketch out some ideas. We knew approximately what shape the structure was going to be and how many ribs there were so we conducted some tests for which LED strips we needed.
The first decision to make was whether we wanted to go with 30 vs 60 pixels/m. We tested 60 on a small piece and liked the results, however due to cost and current draw concerns we decided to go with 30/m. We needed about 20M of strip to be cut up into 4 5m strips to run down each side of the structure.
The neopixels are power intensive, for each 4.5m strip we needed about 9A @ 5VDC. I'm not going to go into Watts Amps and Volts here there are other places for that but basically, Volts are the same, they need to be a certain number in this case 5V or the strip just wont work. Amps are how much current the system uses, this is additive each 1M of lights use ~2A so 4.5M uses about 9A. Power supplies come with a certain voltage and wattage. You can use a calculator like the one here to calculate the missing value once you have the other 2. This gave us about 45W at 5V for each supply.
Next since there is logic control on the system we had to provide power to an arduino mega, these need 6-12V to be happy so we would need a separate voltage for the logic system.
So our options were to buy power supplies at the following voltages and step them up or down as necessary 24VDC, 12VDC, or 5VDC. We decided that the simplest and cheapest would be to go with 5VDC supplies and step it up to 12VDC for the Arduino.
The final step was to figure out if we wanted 4 smaller 50W supplies or 1 200W supply, this was sort of a no-brainer, we opted for 4 smaller lighter and cheaper supplies.
Step 2: Materials and Supplies
For lighting we used the Adafruit Neopixel 30 pixel/meter strip. Although this provided a large amount of light, in daylight conditions it was still quite dim. For daylight projects you might want to go with 60 or even 144 led/M (although there are serious power considerations here) For the piece we used a total of 20M of strip.
The neopixels can draw a lot of power so we decided to break the load up and run each of the 5M strips off an individual supply. This allowed us to buy small, cheap, and light power supplies which were easier to integrate into the structure. We used 4x TDK-Lambda LS50-5
Since the neopixels need to buffer the entire strip in the code we selected to use an Arduino Mega to be the brains of the system. We probably could have gotten away with an UNO R3 or newer but we wanted to play it safe. To jump the power from 5V to 12V for the Arduino we used this Booster.
We used the excellent RF module from Adafruit and it's matching 4 button remote.
To attach the LEDs to the frame we used 1/4" VHB
For our modular connections we used Molex Microfit 3.0
Step 3: Set up LED Power System
The first step is to start from the wall, we embedded out 120VAC grounded power cord into it's 3D printed mount. We attached quick connect terminals and a ring terminal for grounding to the structure.
Next we attached the PSUs to their mounting plates and added in their ground wire, this is very important! You are dealing with 110VAC on the system, this can kill you so good grounding is critical. Add in a ring terminal so there is less chance of it becoming detached.
Next we wired up the 5VDC and 110AC lines to the PSUs. These are connected via spade terminals to the screw terminals on the PSUs.
Adafruit recommends putting a 1000 µF across the +/- terminals of the 5VDC line. Make sure they are on the DC lines NOT THE AC! This capacitor can even out power signals.
You can see a close up of the wiring setup above.
Finally hook the 110VDC wires up to the 110VDC plug, your power system is now complete.
Step 4: Small Strip Testing
Now that power is set up for the LEDs it's time to test your setup and connections.
Grab your arduino and run the Strip Tester script from the NeoPixel library example.
You can see here I have the arduino hooked up to a standard wall wart PSU we will get to the arduino power in the next step. The strips are hooked to the PSU system we just built. There is a 330ohm resister on the white data line from the Arduino pin 9 to the strip.
Make sure in addition to having a black ground running from the strip to the psu that you ALSO have a ground running from the strip to the arudino ground.
Step 5: Set up logic Power System
We need to bump that 5V up to between 6.5-12V to run the arduino. Connect the booster into the 5 V power line, Using a multimeter test the voltage and adjust the potentiometer until you get the voltage you want. The booster we used has screw terminals so after it was set to the correct voltage we just attached it right to the 5mm jack for the arduino.
Step 6: Connections to Logic
Now that power is taken care of it's time to start the full set up. Use the LED strips you tested earlier, add them one at a time onto the breadboard.
The black Ground connection is the common ground, all the leads go into the same row on the breadboard and then into the ground pin on the arduino.
Each white wire connects to a unique Logic pin on the arduino, this line will be where the arduino sends signals to the LED strip chimps. We decided to use digital pins 9,10,11,and 12 (for prototyping shown here we used 7,6,5,4)
Step 7: Soldering the LED strips
Now it's time to move over to the piece, we measured lengths for strip about 4.5M to go from the center of the piece, around the end of the structural rib along the outside, back around the other end the back to the center. This layout coupled with the standoff distance gives a less spotty look.
For the code we need to know the exact number of LED pixels in each strip, for the light to be even the strips all need to be the same. After measuring out the length of strip we needed we counted the number of LEDs we would need to get there, in this case it turned out to be 135 pixels. That number became our standard, we counted 135 LEDs on each strip then cut the remainder.
To make any joints or reconnections easier the Neopixels have solder pads at each cut area, just make sure the cut is clean and the solder pads are intact. Butt the ends of the strip up next to eachother then solder from the GND, 5V, and Signal pads to their match on the cut strip.
Step 8: Full System Testing
Once the strips are cut to length it's time for full system testing. Hook up the first strip completely, use the Neopixel StripTester script in arduino to test it, you will need to change the number of LEDs and the pin assignment.
When that strip is working, power the system down (unplug) and then connect up the next strip. Again change the pin assignment to test this new strip. Repeat until each strip is individually working.
The neopixel uses
to push whatever code to the strip, this means anything above this in the loop will be pushed to the strip. You can add in delays to make a blinking or stepped effect or if the wait is less than 60hz you will get a smooth fade.
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
so that you have a setup for each strip
Adafruit_NeoPixel strip0 = Adafruit_NeoPixel(135, PIN0, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip1= Adafruit_NeoPixel(135, PIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2= Adafruit_NeoPixel(135, PIN2, NEO_GRB + NEO_KHZ800);
and so on, follow the neopixels guide to get the hang of it then just copy the code for each strip
When you are done with this step all your strips should be doing *something* you can fine tune the code later but the biggest part is getting the strips working together and powered.
Step 9: Embedding
Once full system tests are successful time to move to permanent connections. Since this piece is going to be installed permanently we needed to build it to last with minimal maintenance.
We could have used 123dCircuits to make a PCB but the setup was simple enough that we decided to just use protoboard and headers.
Cut a standard male header to the correct number of pins using a snip or flush cutter. The protoboard comes in large sheets and can be cut down using snips or a bandsaw. Solder on the headers then bridge the copper holes to pull the pin headers out to where the leads will connect.
Strip the ground and signal wires back and solder them onto their corresponding lead. We made it a bit easier on ourselves by making a separate protoboard for the ground connections vs the signal connection,this gave us more room to work.
Step 10: Attached Enclosures to the structure
All of the electronics go into 3D printed enclosures that bolt onto the main structural rib. There was some pretty serious iteration involved to get the components to fit. The best thing about 3D printign your enclosures is the cost and time to make new enclosures for new version is minimal!
Use the holes on the PCBs to insert and screw down electronics. The power converter is below the arduino and goes in first.
The Arduino sits on top of the power controller and the breakout boards for the wiring and RF reciever plug into the Arduino's GPIO.
One of the problems with how we designed the system was the wiring and the lid. In order for the lid to close the wiring had to be threaded through, this meant that the wiring and strain relief pushed against the lid and made keeping it closed difficult.
After the encolsures are all buttoned up us the mounting plates to secure them to the aluminum ribs, be careful not to break the plastic by over-tightening.
The final step is to ground the electronics to the structure. We ran a ground wire from the grounds on the PSU to a connector on the rib and a wire from the protected ground on the 3 prong plug receptacle to the structure.
Step 11: Mount on Structure
Now that the electronics are working and mounted it's time for the final step: Mounting the LEDs.
The LEDs that we purchased from Adafruit came in a protective silicone sleeve, since the installation will be inside we decided to remove that sleeve. We used an exacto knife to cut along the side of the sleeve while being extremely careful not to cut into the PCB itself.
Once the sleeve was removed we covered the back side of the LED strip in VHB tape. VHB is an extremely strong double sided tape. You can get LEDs with VHB already applied to the back as well.
Once all the LEDs had VHB on them we applied them to the secondary ribs of the structure. Going a few inches at a time we unrolled the adhesive cover on VHB and pressed it onto the ribs. You can see in the photo above we started and finished at the center of the piece for easy connections to power.
After plugging the system in and testing it be realized there was an unacceptable level of power drop across the strip. Luckily we had the central power connection so we just soldered in jumpers to connect the power circuit to the 50% and 100% positions of the power circuit on the LEDs. With that final touch the LEDS are ready to go!
In our upcoming instructable about the final product you can see the array lit up in it's final form!