Wearable, wireless control network
adds movement to musical performance.
up by connecting 5V to the CHG pins.
The Fios and laptop all run Firmata, a
system that lets Arduinos work as I/O devices
for a base station computer. On the computer,
Firmata converts all the signals it receives
wirelessly from the Fios into OSC-formatted
streams of numbers for output to Pd.
The Beatjazz Controller uses all open-source software and hardware. It works as
one cohesive instrument, but every aspect
of the design can be modified and shared.
it using an FTDI USB-to-serial ( 5 pin) adapter,
or do it wirelessly via XBee. I chose the latter,
following the directions at arduino.cc/en/
To test the computer connection, plug each
body unit XBee into an Explorer board, then
connect the board to a Fio using a mini USB
cable. Plug your base station XBees into your
computer, and their green communication
lights should light up (Figure B). Note in your
computer’s System Properties which serial
port the base stations are using, and also
which physical USB ports they’re plugged into
(and use those same ports every time).
Download the Pd patch arduino-test.pd,
open it in Pd, and click the base station’s port
on the “serial port #” array at upper left.
Program the XBees
First, install the FTDI drivers (at makeprojects.
com/v/28) on your computer. This will let you
program the XBee modules by plugging them
into an XBee Explorer board and hooking the
board up to your computer via USB.
I use faster 60m W XBee-Pros at the base
station and the lower-power 1m W versions
in the body units. Using Pro units all around
would reduce latency at distances over 20–30
meters, I’ve found, but then the Arduino would
have a hard time supplying the power. When
I perform at normal distances from the computer, the 1m W body units and 60m W base
units work well together.
To configure the XBees, I use Digi’s X-CTU
software — note that it’s PC only. From X-CTU,
update the firmware on each unit to the latest
version, then download the config profiles
from makeprojects.com/v/28 and load them
to the units (Modem Configuration → Profile
Load). Among other things, this will configure
the body and base unit XBees to operate as
pairs on 3 different channels.
Hand Unit Electronics
The left and right hand control units are
identical, so I’ll just describe how to build
one. The Fio has a narrower pin layout than
a regular Arduino, so you can’t plug in any
of the standard prototyping shields. Instead,
I soldered my own shields, which makes
wiring (and rewiring) easier. The shields are
just pieces of protoboard with 2 parallel 2×14-
pin female headers spaced apart so their
inner rows match the Fio’s pins. Each contact
is then jumpered out to its adjacent outer
header (Figure C). Voilà: a Fio shield.
Connect 1×14-pin male headers to the
back of the Fio, and plug them into the shield
(Figure D, page 121). Then you can plug jumpers into the shield’s outer header rows, and
swap Fios without having to undo any wiring.
I mounted the joysticks with their resistors
on their own mini protoboards (Figure E). This
conserves space on the shield and makes it
easy to mount the joysticks inside the hand
unit cases. The FSRs (Figure F), accelerometer boards (Figure G), and tricolor LEDs all
connect via jumpers to the shield. Note that
the tricolor LEDs have 4 pins: R, G, B, and V+.
Program and Test the Arduinos
The USB port on the Arduino Fio is only for
charging batteries, not for programming. So
to upload Firmata, you need to either connect
118 Make: makezine.com/28