The SoundPuddle evolved out of several previous projects, and is based on open source software. The full installation can be broken into four categories: the dome, solar power system, the LED array, and the control electronics.
The SoundPuddle's geodesic dome is 24 feet in diameter, large enough for many people to enjoy. The dome is made of steel conduit, and made locally in Denver Colorado. The cover of the dome is made from re-used billboard vinyl (locally sourced from Green-guru), which as been cut and sewn into modular panels.
The dome has a carpet floor made with reused material (locally acquired from Re-Source), providing a nicer surface to sit on lay down on.
The Apogaea prototype SoundPuddle was powered by two 100 Watt solar panels. These panels charge a bank of 12 volt seal-lead acid batteries. The solar powers operate in series, outputting a nominal 24 volts. A MPPT solar battery charger converts this power to safe levels for the 12 volt batteries.
In order to run more LEDs for longer events such as Burning Man, we'll need to double our generation to 400 watts of solar power. The SoundPuddle project is committed to using sustainable technology and minimizing our environmental impact.
The LEDs used for the SoundPuddle are LPD8806 addressable strips supplied by Adafruit Industries. These flexible strips have 32 RGB LEDs per meter, each controllable by an LPD8806 control chip. A microcontroller (in this case the Zpuino) controls the LPD8806 chips via SPI serial communication, providing instructions for what color and brightness each LED should be.
The heart of the SoundPuddle is the Zpuino, an arduino-compatible FPGA system running on Gadget Factory's Papilio board. The ZPUino is an Arduino IDE compatible FPGA softcore based on Zylin's ZPU 32-bit processor core. Much of the sotware is written in C, similar to an Arduino sketch. Other elements of the software are written in assembly for the ZPU, or implemented as seperate cores on the FPGA.
Using an FPGA grants tremendous flexibility and power in the system design of the SoundPuddle. It allows us to simultaneosuly drive many SPI LED strips in parallel, and offload specific logic tasks to additional cores on the FPGA.
Zpuino system specifications
- Papilio One 500K with a Xilinx XC3S500E FPGA
- 96Mhz FPGA clock speed
- 2 external 4Mbit SPI Flash chips for program storage
- 10 SPI interfaces at 3Mhz
- 12bit SPI ADC (analog to digital converter for measuring the microphone)
The Zpuino uses the SPI ADC to sample the microphone at a fixed frequency (generally within 4-44.1kHz). This data is feed to an FFT function, which outputs an array of intensities for each frequency step up to half the sampling frequency. The frequencies closest to specific notes (e.g. C3 - C4) are selected and their values control the color and brightness of a chosen "spoke" in the LED array. That data moves or "ripples" down the LED array, creating a visualization of frequency space over time.
The system development is still in it's infancy, and far more sophicated software is possible. We intend to develop many algorithms and models for creating color in space from an audio spectrum input.
All of our code is open and available online at github.com/soundpuddle. The project's software is free to use under a GNU license.
Upcoming Electronics Design
The SoundPuddle Kickstarter fund-raising campaign will help fund the first build of a custom printed circuit board (PCB) that will provide expanded and more reliable control of many SPI LED strips simultanesouly, as well as audio input, power management, and integration of the external SPI flash chips. This board will mitigate LED flickering problems, and provide a much more robust and contained system.
The new PCB will attached to a Papilio FPGA board, and allow for more portable implementations of this large interactive LED array technology. In the near future we plan on running systems as complex as SoundPuddle out of a small backpack.
The design of the board is in the bench testing stage. Check out this blog post for more information, or see the schematics and board files on our github.