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 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.
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.
The control system for the “Swarm Light” installation is comprised of three major parts which are described in more detail below.
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.
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.
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.
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.
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.
- 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