“Swarm Light”

davidbrook_random_swarm-0184

About a month ago I was contracted by a design studio in London (rAndom International) to work on a very interesting project.

rAndom International was working on an experimental light installation called “Swarm Light” which were to be shown at the Art Basel design exhibition.

More images and video of the installation can be found here.

My part of the project was to implement a part of the control software, specifically a bridge between Ethernet and the LED modules.

The Cubes

img_3995b

The installation consists of three huge LED cubes hanging from the ceiling. Each of the three cubes consists of 1000 LED modules, with tree LEDs each, organized in a 3D grid measuring 81 x 81 x 81 cm.

Controlling the intensity of 9000 LEDs is a tricky problem to solve. If you were to run wires to each LED all you would see is a huge rat’s nest of ugly wires…

The problem was cleverly solved by rAndom International by putting a microcontroller on each of the LED modules and using the structural assembly of the cube to route power and control signals to the modules.

.

davidbrook_random_swarm-0197

The basic building block of a cube is a “LED stick”. A stick consists of three long brass rods onto which ten LED modules are soldered. The three rods are isolated from each other and are used to supply each module with power, ground and an asynchronous serial signal. The ten modules on each stick are controlled by sending a data packet with intensity values on one of the rods.

100 of these sticks are mounted together to form a 3D grid of 10 x 10 x 10 LED modules.

Control system

The control system for the “Swarm Light” installation is comprised of  three major parts which are described in more detail below.

Mini-ITX PC

The PC runs sound analysis software and the swarm animation algorithm. There are also four microphones connected to this machine which are used to pick up sound from the audience in the room to allow the swarm to react to varying noise levels.

20100516-192847-0342

The PC is running a .NET application responsible for generating LED intensity values for the 3000 LED modules and sending the data via Ethernet to the six XC-2 nodes.

XMOS XC-2 nodes

Six XMOS XC-2 Ethernet boards are used as a bridge between the Ethernet network and the LED modules. The XC-2 board uses an XMOS XS1-G4 processor with four cores, each capable of running 8 hardware threads.

20100519-233644-0375

The XC-2 nodes receive LED intensity values in UDP network packets from the PC via Ethernet and outputs serialized data onto the serial signal rods of the cubes.

The XC-2 software supports asynchronous serial output on 72 pins of the XC-2 board but only 50 pins are used by the LED cubes. Each XC-2 node controls one half of a cube and six nodes are used to control all three cubes.

swarm6

LED modules

The LED modules receives the serial signal and outputs a pulse width modulated signal to control the LEDs. Each LED module has a voltage regulator, a microcontroller (MSP430) and three white high-intensity LEDs. There are 3000 LED modules in the installation and a total of 9000 LEDs.

The bit rate used by the LED modules is 19200 bps which limits the update frequency to about 130 Hz although the XC-2 nodes are capable of a much higher rate.

XC-2 software

The XC-2 software consist of a number tasks, each running on a separate thread. The diagram on the left shows the distribution of threads on the four cores.

threads_0

  • 10/100 Mbit Ethernet MAC/MII driver (5 threads)
  • TCP/IP and UDP stack (based on uIP)
  • Status and button server (used to change configuration of the node)
  • Status LED controller (controls the XC-2 status LEDs)
  • SPI Flash and config handler (used to persist configuration data)
  • Serializer threads which serializes the LED data to the 72 I/O pins
  • The main thread implements the network protocol and distributes the LED data to the serializers

I wrote the XC-2 software and a .NET library used by the PC to talk to the XC-2 nodes. The XMOS processors are very easy to work with due to the powerful XMOS architecture and the XC programming language. XC  is a variant of C with language constructs for simplified control over concurrency, I/O and timing.

I worked on the project in my spare time (evenings and weekends) and completed the work in just under four weeks..

Video of “Swarm Light” at the Art Basel exhibition

.

  1. June 22nd, 2010 at 02:15 | #1

    That’s really an amazing design – very nice. That would be a neat project to build, but programming-wise I would be out of my league.

  2. August 26th, 2010 at 20:25 | #2

    Whoohaa that’s a fantastic piece of light art!

    Way to go….!

  1. June 18th, 2010 at 12:13 | #1
  2. June 20th, 2010 at 22:03 | #2
  3. June 21st, 2010 at 07:39 | #3
  4. June 21st, 2010 at 07:57 | #4
  5. June 21st, 2010 at 11:15 | #5
  6. June 21st, 2010 at 15:42 | #6
  7. June 21st, 2010 at 18:46 | #7
  8. June 25th, 2010 at 18:35 | #8