On late 2014, I was asked by Alain Bellet, head of Media & Interaction Design unit at ECAL to lead a workshop in December 2014 with the 2nd years students.
Having had a great experience during my first workshop Rotary Club at ECAL, I was very excited and spent some time making wireless 1m LEDs bars that would allow them to have an introduction to OpenFrameworks and create interactive experiences with just 30 LEDs.

You can find out more about the workshop here

The idea

The concept came out of 2 findings. The first one appeared very naturally after some strolls in Lausanne during chrismas.

At the end of the years, cities get covered of christmas light animations. And in many cases, a quick stroll reveals really cold, robotic and soulless use of LEDs. With looping animations, without beginning nor end and a disturbing lack of content. So it seems like a perfect raw technological ground on which media and interaction designers should bring meaning and poetry.

The second one came later on, as I was figuring out the best way to bring an affordable, interesting and easy to use LEDs platform to the workshop.

Full HD, Retina Displays, Virtual reality Headsets..etc. The content we produce constantly evolves to an ever-growing density of pixels and always widening formats. But what happens when we reduce drastically this output? How can we still tell a story, setup a game or an interactive installation with a single line of 30 pixels ?.

I wanted these bars to be very easy to use and to reproduce by the students. So I it was important to favor popular & cheap components that would allow me to keep to cost of each led bar under 30€.

So I designed and built 8 wifi-adressable LED 1 meter bars featuring :

  • 1 x 1 meter 30 ws2812 leds NeoPixels strip from Adafruit
  • 1 x Atmega328P-PU, the Arduino's infamous microcontroller
  • 1 x ESP8266 Wifi serial module
  • 1 x 3.7v 1268 2600mAh lithium battery
  • 1 x 3.3v MCP1700 250mAh LDO voltage regulator
  • a custom PCB
  • a custom 3d printed enclosure
  • 1 meter long 27x27mm machined pine batten

The PCB

First I designed the board and Schematics with EAGLE, inspired by the RBBB arduino. I wasn't sufficiently equiped with SMD soldering equipment and timing was tight so I decided to go for through hole components only. Yet I managed to keep the PCB size fairly small (19x66mm) to match the irreductible battery size.

Then I generated eps from the schematics and printed them on transparent sheets with a black & white laser printer. I was able to use these to UV-expose my circuits on some pre-sensibilized PCBs.

And then manually etched the copper using ferric perchlorure, a highly corrosive acid.

The Enclosure

With the PCBs ready, I started making the enclosure that would protect the circuit and hold it together with the battery inside the pine batten.
After considering a few options, I decided to go with OpenScad, which offers a great way of putting together a highly parametrable functionnal enclosure using code.

You can download the code on my gist account.

The wood stick

With the electronic and enclosure ready, it's time for some woodworking, machining some space for everything to fit inside the robust pine batten. Being too late to use the fablab's CNC, I used a manual router which proved to be trickier to use than I thought, but finally gave acceptable results.

The Software

Voilà for the hardware! Now onto the software part.

As I mentioned earlier, I wanted the bars to be very easy to use on any platform, so WIFI + UDP was a great option as it offers cheap wireless connectivity from laptops, phones, routers..etc.
I developed an Arduino firmware that creates a UDP server and accepts hexadecimal representation of the colors of each LED in a string.

You can download it here.

So if you send over ff0000-00ff00-0000ff it will turn the first LED red, second green, third blue and leave the rest unchanged.
A complete OpenFrameworks v0.8 example for doing this looks like that :

#include "ofApp.h"
#include "ofxNetwork.h"

ofxUDPManager udp;

void ofApp::setup(){  
    udp.Create();
    udp.Connect("192.168.4.1", 40002);
    udp.SetNonBlocking(true);

    string cmd = "ff0000-00ff00-0000ff";
    udp.Send(cmd.c_str(), cmd.length());
}

Conclusion

hoto by Lina Berjaner - Project by Berenice de Casteja

Did you see me, by Lara Défayes & Julie-Lou Bellenot - 2014

Everything worked very well during the workshop and the students have made some very interesting projects : 2 fun games, an interactive installation based on shadows, a music sampler, a danse performance and a drone+lightpainting photo project.

You can read more about these here.

Next iterations for this project would be to get better wood batten and machine them with a CNC so that the whole strip can be hidden inside to get a better looking object.
I would also get better pcbs fabricated and assembled in a professional factory with smd components and replace the NeoPixels by the new Adafruit DotStar led strips.

Thanks for reading and please let me know what you think!