Maker Faire Bay Area 2011

macetech at Maker Faire

It's been a week since the latest Maker Faire in San Mateo. We're still recovering from the effort of putting together our project, talking to thousands of curious Maker Faire visitors, and meeting all the famous (well, maker-famous) people we usually only see on the internet.

As always, the weeks leading up to Maker Faire were a frenzy of activity. For some reason, at macetech we have an aversion to bringing the same major project twice. We'll re-use some of the smaller ones, if they're still around, but the big project always has to be built from scratch and nothing like last year's project.

Inspiration

This year, our project was inspired by Alex Beim at Tangible Interaction, a long-time customer of ours and client for special designs. His project was built for a 2011 New Year's celebration, and was called 100 Lanterns (video). Each lanterns in a 10x10 grid was lit by a Satellite Module 001 RGB LED and controlled by a ShiftBar LED controller. The ShiftBars were all controlled by custom Arduinos, receiving DMX commands from MADRIX audio-reactive pixel control software. The effect was brilliant and mixed the antique shape and texture of the lanterns with modern colorful lighting and computer-generated patterns.

We were already nearing completion of a new version of the Satellite+ShiftBar system, and decided that a similar demo would be appreciated at Maker Faire. Our project was sized for a 10'x20' exhibit space, and would contain 128 paper lanterns in a 16x8 grid.

Planning

This would be our largest project yet. In 2009, we had an eight-foot wall of 80 MegaBrite LEDs, which were controlled by a Winamp plugin. In 2010, we had a large four-player Simon game. But those projects were relatively easy to build and transport. The LED lantern ceiling would require bulky overhead structures, fill the entire exhibit space, and would have a lot of power and data cabling.

Tangible Interaction used our Satellite and ShiftBar products for the electronic component of their system. We could have done the same thing, but we had some new products on the way. The first new product is the OctoBar, which is essentially eight ShiftBars built into a single PCB. This reduces the complexity of the setup by requiring the mounting and wiring of one PCB for every eight lanterns, instead of a separate controller PCB for every lantern. The OctoBar also has modular jacks that work with either RJ14 (6P4C) or RJ25 (6P6C) telephone (straight through, "reversed") cables. The new Satellite Module S-001 also has the same modular jack. Without the modular jacks, every cable for each lantern would need to be cut to length, four wires stripped on each end, and inserted into screw terminals in the correct order. It's not too inconvenient for a small number of LED modules, but it greatly reduced the amount of work and risk of error for 128 modules.

OctoBar and Satellite S-001

The overhead structure was probably the biggest challenge to overcome. Originally, we were going to build a 10x20x10 structure from steel tubing, which would involve heavier materials and most likely some welded components. We couldn't afford to make any engineering mistakes, since this would be installed at Maker Faire with tens of thousands of adult and children around and under the structure. This, plus the rapidly approaching deadline, pushed us to another solution.

We would need overhead shading material anyway, since the ambient light in Expo Hall would reduce the contrast of the lanterns too much. A popup canopy with black roof seemed like the perfect solution. Some are pretty flimsy, so we checked around for a while and eventually ended up with a pair of commercial duty 10x10 canopies from HutShop. They arrived quickly (free shipping!) and seemed stable and strong enough to support the additional weight of our lanterns and electronics. After measuring the internal structure, we used Sketchup to create a quick layout of lantern hanging positions and some PVC mounting frames.

128lantern_mockup

The Build

The buildout actually went pretty smoothly, if tedious. The PVC mounting frames were easily assembled with a combination of gluing, drilling, and zip ties. We marked each lantern location, and used zip ties to mount two lanyard hooks from American Science & Surplus. Each panel held 16 lanterns, so we mounted two OctoBars on each of the PVC frames. Wiring the modular cables from the OctoBars to the Satellite modules was easy; the hardest part was managing the extra cable length since we only had 7' cables.

DSC_3691DSC_3696DSC_3698

When checking the paper lanterns, we did run into a problem. Our lanterns were purchased from a local shop, Asian Imports in San Carlos. We had checked the first, open box, but didn't check the second box until much later. Unfortunately, it was a mis-picked box and contained larger, orange lanterns instead of the white ones we needed. And since this was a Maker Faire project, we knew what would happen next...they didn't have any more of the lantern type we needed, and couldn't get them in time for Maker Faire. However, they offered an upgrade to a different, more expensive type of nylon fabric lantern instead of paper ones, no extra charge. We weren't sure how they would look in comparison to the paper lanterns, but overall think the nylon ones were better and brighter than the paper lanterns. So we're very glad that Asian Imports was willing to deal with the problem in the best way possible.

The only other part to build were some lifts to raise the canopy by about a foot, for optimal viewing height and preventing accidental bumping of the lanterns.

Control and Software

We'd originally thought that controlling 128 modules would require at least two Arduinos, and some way to synchronize the output; DMX or some other bus communication system. However, as we began testing the system, we were surprised to discover no performance bottlenecks at 128 modules or beyond. The OctoBar is simply eight controller chips in series, like eight ShiftBars or ShiftBrites in a single chain. We wired the sixteen OctoBars on a single series chain, resulting in 128 shift registers of 32 bits each on the bus. Each write to the chain is done twice; once for the color channels and then for the control registers. So each update is 8192 bits. Our target update rate was 25fps, so there's plenty of CPU overhead, but we also needed to process all the incoming serial bytes and perform some gamma optimization on the input colors.

octobar_lanterns

The serial input protocol is very simple. A packet starts with ASCII 255, followed by a control character. In the current implementation, [255][0] starts a pixel color stream, and [255][254] triggers a dump of all the LED colors in memory to the OctoBar shift register array. Color values are scaled from 0 to 254, to avoid conflicts with the packet start character of 255. OctoBar and ShiftBrite colors are 10 bits instead of 8 bits, but the extra resolution let us apply a gamma curve to the input colors.

The overall desired result was a large pixel array that would respond to music with shifting colors, patterns, etc. On Tangible Interaction's lantern array, the patterns were generated by MADRIX. However, we didn't have DMX hardware, and didn't have time to learn new software, despite the obvious high quality of the audio detection and available patterns. Instead we used Processing with the Minim audio library to detect levels, frequencies, and beat events. The Processing sketch draws high resolution graphics on a section of the screen, which is captured, downsampled to a 16x8 image, and converted to an array that is sent to the Arduino.

We didn't have much time left to write a lot of visual effects, so we came up with a unique idea: ask Processing experts to send in visual effects. We wrapped up our existing code as a simulator and released it for download; anyone could play with the code, write new effects, and send them in. It worked and we got a good number of effects in addition to our own. It was easy to integrate the extra functions and work out a method of cycling between them.

Here's the raw Processing and Arduino code used in the array. Obviously it's all hacked together, and may not be the most efficient or readable code. However, it works, and we'll definitely be polishing it for future projects. We'd love to see others work on the code too, and perhaps build it into a versatile LED array control program with easy ways to add effect plugins and output methods. We were really surprised it worked as well as it did. The Arduino code requires a 328 due to a horribly inefficient gamma table; we'll be working on a smaller interpolated gamma method soon. Since the lanterns were not arranged in a simple row/column order, we used a lookup table in Processing to map pixels in the 16x8 image to a particular lantern in the chain of 128 modules.

Processing sketch: http://www.macetech.com/macetrix_serial.zip
Arduino sketch: http://www.macetech.com/ChineseLanterns.zip

Results

Final installation went well. Dragged everything into Expo Hall on Friday, and managed to get most of it set up and tested before closing. We finished the wiring and got the small projects and couches set up Saturday morning.

Maker Faire Bay Area 2011 was the busiest Maker Faire ever. It was difficult to walk around our exhibit due to all the people packed in the surrounding aisles and exhibits. Our couches were almost always full of Maker Faire visitors relaxing, admiring the ceiling, and talking about ideas for their own projects. More than usual, we found it almost impossible to get away from the exhibit to wander the rest of Maker Faire. We were answering questions continuously and hearing a lot of "Wow!" and "I need this!" from people walking by.

Since the concept was originally put together by Tangible Interaction, we aren't going to attempt to build and install systems for anyone...we aren't very good at it anyway! We rely too much on zip ties. Alex does have an installable system built up, so if you'd like to get something similar in your venue, just contact Tangible Interaction.

Here's a video and some photos from the Faire. If you'd like to see more photos, you can find plenty in the Flickr Photo Set.

macetech at Maker Fairemacetech at Maker Fairemacetech at Maker Faire macetech at Maker Faire macetech at Maker Faire

Here's an interview shot by Colin Watley, I describe the LED system quickly:


Submitted by Garrett on Sat, 05/28/2011 - 17:08.

So did you end up using all

So did you end up using all nylon, or a mix of paper and nylon?

the lantern suppliers

the lantern suppliers replaced all our paper ones with nylon at no extra charge, so we got a great deal :)

What size lanterns did you

What size lanterns did you end up using? Any idea what the total cost of this project was? I am interested in making something similar for my living room and would love to get an idea of how much its going to run me. Thanks!

Nicely! Powering the 16

Nicely!

Powering the 16 OctoBars ( and corresponding set of S-001s ) - did you break the configuration of the 16 OctoBars into 4 groups of 4, daisy chaining each subset of 4 OctoBars via the screw terminals?

and then did each set of 4 get parallel power from a single power supply?

I'm working on using this

I'm working on using this code for a 10 x 8 matrix of shiftbrites using a shiftbrite shield on an Arduino Uno w/ 328. I'm having a problem with the last 13 or so flickering random colors, but only on certain effects. Typically this happens on the effects that have the entire matrix the same color at once. It seems like the Arduino is just not capable of putting the data out fast enough. Do you think it has to do with the shiftbrites being in one string of 80?
Any suggestions would greatly help.

Often they are playing on

Often they are playing on the Internet or for real estate that you are playing on the way of
promoting movies to attract users quickly. If under certain circumstances, they are very family guy
the quest for stuff cheats catchy. Zynga has been solving the strategies involve in these full
of entertainment which spreads a zeal of excitement.

Post new comment

The content of this field is kept private and will not be shown publicly.