"Focus" was conceived by Danish designer Ditte Blohm in collaboration with Kolding School of Design and Ecco and was exhibited at Salone del Mobile in Milan. I had the pleasure of helping with the technical aspects of the project.

While Ditte's site and the Hirsch & Mann blog cover more of the concept, this post will focus on the technology. The two Mindwave Mobile headsets in the installation were paired with two Blue SMIRF (RN-42 powered) Bluetooth modules. The Mindwave Mobile headsets transmit data using Bluetooth Serial Port Profile (SPP), so raw bytes can be read through the Bluetooth modules as if the Arduino was connected to a Serial port. I found Sophi Kravitz's Mindwave Mobile teardown on Sparkfun extremely useful.

I did run into a few gotchas, mainly in terms of parsing the data. I couldn't seem to get communication working using Arduino's SoftwareSerial library. Hardware Serial worked just fine. Later I got a chance to try AltSoftSerial which also worked. I've cleanup up the code a bit and encapsulated as my first Arduino library: Mindwave. I can't guarantee it's the most efficient code as I'm not primarily a c++/embedded developer, but for fetching simple data from the Mindwave Mobile headset, it should work.

The headset provides a few simple values for attention, relaxation or voluntary blinks. Through practice we found attention to have a nice balance being both interesting to explore in terms of interactions (not as simple
as voluntary blinks) and reliable enough. Relaxation, which in some of the documentation is labeled as meditation felt harder to pin down. Personally I didn't trust this value, because I seem to be pretty Zen most of the time according to it, even when my attention reaches a peak. This would be a good point to remind you that I do not have any studies in neurology and I wouldn't be qualified to mention more than what the Mindwave Mobile documentation mentions already. That said, the headset also provides brainwave data for alpha, beta, gamma and delta waves. Within the constraints of the project, after a brief exploration, we've chosen not to pursue this path further for the time being. In the future, a bit of pattern recognition might be interesting to explore using this brainwave data.

For the current iteration we've mapped the attention data belonging to one headset to half of the 1m diameter LED rings. These were controlled using the DMX protocol. In terms of hardware, we used Daniel's SuperDMX Shield and soldered the BlueSMIRF-Silver module on top.

This setup was duplicated for the other headset, mostly. The 2nd shield was dealing Mindwave data only and was connected to the 1st shield using Software Serial. I guess this would be a hacky version of multi-theading: each headset, has it's own microcontroller to deal with parsing, however, one of the headsets also sent DMX data to the 48 CH DMX Dimmer.

Mike Harrison's 48 CH DMX Dimmer was used on a lot of cool projects and does a lot of neat things, including gamma correction and internal smoothing. This was very cool, because we didn't have to waste cycles interpolating brightness values on the already busy Arduino. All we had to do is feed it different values and the dimmer would nicely sooth between the values.

Mike might frown at my decision to connect the lights, because even though the DMX dimmer has 48 channels, I've chosen to leave a lot of 'breathing space' let's call it. (Maybe also for reversing brown/blue)

Ditte's done a great job at soldering the connections and keeping things neat and tidy. I thought I'd return the favour by keeping the DMX Dimmer setup simple, taking advantage of the numbers listed on the board (notice the 1 to 16 white labels). This would avoid confusion when assembling/disassembling the installation.

A bit of arithmetic in software was the only thing needed to keep this simple layout.

The project wouldn't have been possible without Daniel Hirschmann's support. We are grateful for all the resources he made available... Read more »