Layout – Foam and PCB

The first thing I did was generate the layout files for the foam waffle grid light guide. I used the free, open-source vector graphics editor Inkscape. This process was a straightforward combination of the basic shapes and the Boolean operators built into Inkscape.



For the PCB I used the free, open-source layout software Fritzing. This turned out to be a bit of an uphill battle. I ended up having to create two layouts, one in the schematic editor and one in the PCB editor. However, all I needed up front was the PCB layout so I started from there and then added the schematic as a reference later.







Laser cutting services from Pololu.com

Once I'd completed the layout I exported the .svg files to .dxf and then uploaded them to Pololu.com. Their online quotation tool was easy to use. I also drop shipped them an order of 6mm depron foam sheets I'd ordered from RCFoam.com. They sent me a selection of quotes from 5-day to same-day service! I opted for the lowest-cost, 5-day service, however the results exceeded my expectations!







Paint the foam waffle grid

The raw foam itself is not a very good light guide. The foam is too translucent and if used in its raw state would let a lot of light leak from one pixel to the next. The best solution I could come up with was to paint the foam.



Now in hindsight this wasn't the best choice; painting foam, as it turns out, is a very labor-intensive process. One might think that you could throw a layer of paint onto each side of the foam and you'd have a completely opaque piece of foam. You might even think that you could get away with a couple coats of spray paint... oh you poor naive child! As it turns out it took me about 7 coats of paint before I was satisfied with the opacity of the foam.







This was perhaps the most time consuming part of the whole process. I think in retrospect it would have been a lot easier to go with some normal corrugated cardboard and then simply paint them white. I spent some time looking for 2-sided white cardboard but came up short. This would have probably produced some more opaque rails and created better pixel separation but I'm satisfied with the painted foam despite the extra effort.



Cut the MicroRax frame

The MicroRax aluminum extrusion can be cut a variety of ways, I opted for some hand vices and a hacksaw.

MicroRax : 8 pieces, 600mm* 4 pieces, 70mm*



*As a possible coincidence (who knows!), you can buy these sizes directly from MicroRax and no cutting is needed!





Assemble the frame

Once the pieces were cut the frame was easily assembled by screwing the tri-corner brackets onto the ends of the aluminum profiles.





For added strength I used some silicone caulking between the Microrax and the acrylic panels on the front and back faces. What I found was that the tricorner brackets could hold the entire assembly together but when I was picking up or hanging the panels the aluminum would flex slightly in the middle.





Some silicone caulking in the V-groove of the MicroRax helped improve the grip to the acrylic and create a more rigid enclosure. I ended up only doing this for the front and back panels leaving the side panels removable in case some internal repair was needed.





My one err during this process was not realizing I would want to add some nut-plates to the back panel before it was too late. These nut-plates would let me screw on some additional mounting hardware in the future but with the back panel fully cured I could no longer simply slide the nut plates into the V-groove as intended. Instead I had to dremel out a bit of the V-groove to wedge them into place. In the end it worked, but it did leave a little scar.





Scribe and break the Acrylic

To reduce the number of cuts needed, I ordered the acrylic with a fixed width, this way the side panels would only require one cut to make. I set out with ruler and sharpie to mark out an acrylic panel for scribing, remembering that the cover on the acrylic should be left on until the very end.





For cutting the acrylic I had a tough choice to make, my abode does not lend itself well to a table-saw which is arguably the tool of choice for cutting strips of acrylic, so how am I going to cut these pieces? Well as it so happens I have a saying and that’s “anything that can be done with a power tool can be done with a hand tool.” And as it turned out I discovered a rather convenient way to create strips of acrylic. The tool: a scorer or scribe, like this one on Amazon.com.





The scribe is incredibly sharp and will make an awful screeching every time you rake the scribe across the acrylic. You’ll want to apply some good downward pressure to the scribe and get it to really dig into the surface of the acrylic. I ended up scribing across the acrylic five times (5X) per side, that’s a total of 10 screeching scribing scrapes per piece. If it weren’t for the ghastly sound this technique would be the ultimate low-tech solution for cutting acrylic.

Here’s a single scribe pass on one side. Only 9 more…





During the scribing process you can see I’m using one of these big clamping straight edges to guide the scribe.

After the ten passes of the scribe, I clamp a heavy piece of particle board that was used for a shelf on top of the acrylic and then extend the piece over the end of the work table. With everything clamped down tight and scribe lane sitting right on the edge of the table I press down firmly with both hands to snap the acrylic right along the scribe lane.

The pieces come out a bit uneven but the MicoRax frame allows for loose tolerances. These could be evened out, perhaps with a belt sander, but it wasn't necessary.





Assemble the waffle grid

I discovered that using painted foam was a nice idea to keep the weight of the PixelBrite down especially compared to something like MDF or acrylic which would add a lot of weight. Fitting the foam together, however, was a bit tedious. The interlocking rails were a snug fit and the squeaking sound of foam of foam was sign that it might just be a pretty good pixel separator. One rail at a time the puzzle came together.





Hot glue the pixels to the back panel

I discovered that even though the diameter of the holes match the spec’d size of the LEDs there was enough tolerance that the LEDs would tend to slide out if too much force was applied on the wires. The solution I found was to grab the glue gun and give a couple shots of hot glue to the rim of the LED and then twist it in place. The wires should also zig-zag rather than stick out from the back, otherwise this piece will be too thick to fit into the Ninja box!





Wire additional power and ground leads

Ensuring that each pixel receives the necessary current and voltage requires some additional connections for power and ground connections. I used some twist-on wire connectors or “wire nuts” along with some 18-22awg stranded wire to provide the power busses. I ended up with four power busses and that seemed to create a pretty uniform pixel array.





Build a custom PCB for the electronics

To move the circuit off the breadboard I used a basic PCB prototyping process pretty well documented by Jameco and Make magazine



With a laser printer I transferred the digital layout of my PixelBrite circuit board I’d made in Fritzing to a 3M transparency. The transparency was cut and mounted in a dollar-store picture frame with the photoresist coated PCB and then exposed for roughly 8 minutes. After developing the resist for about a minute, the board was etched in ferric chloride and after about a half an hour I had a completed PCB.





After drilling the holes the components were ready to be soldered in place. It’s important to remember to cut the power trace on the Teensy board (see PRJC for more info) before soldering in place. This will make it so the Teensy does not try to draw its power from the USB but rather the VCC and GND pins.





Route the acrylic side panel for the electronic ports

For the control panel I decided to keep it quick and dirty by just hand routing the holes for the components… a laser cutter might have been the right tool hear. I took it slow and made sure I had the acrylic well clamped before starting.





Final Assembly

The best method I found for assemble was to proceed from the bottom up, so start with the back face and the PCB circuit. Drop the side panel in with the bulk head connections and get everything lined up and fixed. Then drop in the LED/waffle grid assembly ontop and connect the 4-pin Molex on the LEDs to the 4-pin Molex on the PCB board from the side. Drop the side panels in place and then press the waffle grid down with the front panel. Tighten the screws on the tricorner brackets and everything should be ready.



As part of this process I discovered the USB panel-mount was bumping into the underside of one of the LEDs. To remedy it I had to mount the USB connector with the flanges on the outside rather than inside.





Load the firmware

The Arduino firmware must be loaded onto the Teensy, get the code from the LeoneLabs PixelBrite repo on GitHub. If you’re just getting started with the Teensy be sure to check out PRJCs Teensyduino Tutorial.

There are a couple of important things to remember in order for the system to run correctly:

In the Arduino code: dataPin = 2 (matched to the physical pin of the Teensy) clockPin = 1 (matched to the physical pin of the Teensy) numPixels = 100 (matched to the number of physical pixels)



You’ll need Adafruits WS2801 library and the SDFat library to compile the Arduino source code

The file names on the SD card need to be short; they are limited to 8 characters with a 3 character extension. This is a limitation of the SDFat library. “Color_bars.pixex” will not work because “Color_bars” > 8 characters and file extension, “pixex” > 3 characters

“ColorBrs.pix” will work

The SD card will stream from the “PB” folder within the root directory of the SD card so all the patterns and animations must be stored in this folder on the SD card.

Power ON!

Plug in the power supply, flip the switch and plug in the USB port or load a SD card to get started. The pushbutton will cycle through the operating states. There are three states: