Making Connections: The Eobody USB OEM Board
This week the new Eowave OEM USB boards arrived at Cycling '74 HQ, and I was all too happy to give it a test drive. After having read the impressive spec sheets I was eager to see if the performance of the board lived up to all the promise. I quickly set to work putting it through its paces.
First, let's look at what the Eobody OEM board is all about. The stripped-bare circuit board is a no-frills DIY version of the popular Eobody2, a high-speed MIDI sensor interface that communicates with your computer using USB. Instead of the 1/4" input jacks typical of the Eobody product line, analog sensors and triggers are connected directly to the board via the provided 0.1" header pins, a simple and common connector in electronics prototyping these days. The board is based around the Microchip PIC 18F4550 chip, which features high-speed USB communication and 12-bit Analog-to-Digital Converters. The OEM board provides 13 analog sensor inputs and 16 digital I/O pins, all of which can be assigned to specific MIDI messages using the downloadable "EoMessage help" patch provided by Eowave.
There are already several hardware sensor interfaces on the market already, many of which are also capable of any number of other tasks, but after spending a little time with the device I discovered what makes the Eobody board special. It does exactly what it needs to do really well, and nothing more, and comes in a pretty tight little package. Being the tinkerer and scrounger that I am, I've gotten used to setting aside several hours just to get up to speed with whatever new hardware I have on my workbench. Rarely do I come across something that I can just plug in, attach a sensor to, and start going.
Making the Connection
Once I hooked up the USB cable to my computer and opened Max, I could already see the "eobodyOEM" listed in my MIDI devices. To get started, I created a simple testing patch with a midiin->midiparse->route setup so that I could quickly check different inputs as I connected them. The first thing I wanted to check out was the analog input, so I dug out a little 50K slide pot to wire up.
Wiring up components to work with the OEM board was pretty straightforward. I just had to wire up the potentiometer as a voltage divider and crimp on some female header connectors to the ends of the wires. Luckily, I happen to keep an ample stock of them in my parts drawer and my handy crimping tool nearby. One could also go ahead and solder wires directly to the headers for more permanent configurations, but I personally like having an easy way to disconnect things at will. Once I had my slide pot wired up, I connected it to the board using the instructions given. While my iron was hot, I went ahead and wired up a toggle switch and accelerometer I had lying around as well.
Time to Play
By hooking up a slider object to the output of my MIDI routing setup, I could already see that my slide pot is sending MIDI CC-0 (0-127). Now that I know it's working, I open up the EoMessage patch downloaded from Eowave to play around with some of the settings. This patch provides a simple interface for changing the behavior of each analog input. The first thing I wanted to check out was the 12-bit CC setting boasted about in the product documentation. Once I change this setting, I notice that my CC-0 is still acting the same, but now I'm also getting numbers coming through CC-64. According to the Eobody manual, this number is the 5 "Least Significant Bits (LSB)" of the analog-to-digital conversion, which are normally discarded for the standard 7-bit MIDI CC message. Combining these two numbers together will extend the precision of the analog input to a 12-bit 0-4095 range instead of 0-127. To do this, all we need to do is left-shift our CC-0 number 5 places and add the CC-64 value. In addition to the regular and 12-bit CC, you can also use analog inputs as any other standard MIDI message.
Adding extra precision to the analog conversion also means we'll see more electronic signal noise in our data, especially when using the USB bus power. To mitigate this, the OEM board also features a firmware-based low-pass filter to smooth the data as well as a noise gate. In practice, I found the filter to be far more useful, and quite effective at reducing jitter in the data. This became extra useful when I tried out my accelerometer, which can produce some pretty erratic responses. Having most of the data-conditioning all happen in firmware also means I don't have to write it into my Max patch.
Next up, I hooked up my toggle switch to one of the digital inputs. To check this out, I had to open up the subpatch for OEM board specific messages and activate the input pin I want to read. Once that is done I just set it to send Note on-off messages and I'm off and running. Turning my switch on and off I see the note messages coming through my test patch.
Taking it Further
By the time I finished hooking up all the electronic components and sorting it out in Max, I hadn't even been at it for an hour. No hassles with firmware programming, no weird interfacing hardware, and no need for third-party Max externals or editing software (the Eobody editor is a Max patch, of course) meant I could focus on the important stuff - writing my Max patch and thinking about how I'm going to control it. While it might not water your plants or check your email for you, the Eobody OEM board does allow you to quickly get lots of sensor data into Max with minimal effort. The no-frills, bare PCB package and basic header-pin interface also gives you the freedom to design your own custom project enclosure and use interface hardware that is specific to your own needs. The Eobody USB OEM board provides the flexibility and small footprint of a DIY controller interface combined with the simplicity and robust DSP of the Eobody product line.
by Andrew Benson on November 7, 2008