In November of 2005 we (Casey Rice, Shea Ako) went to STEIM to work on a project using ethernet based microcontrollers. I had recently been working with the Rabbit Semiconductor R3000 based microcontrollers. In the past we had also worked on projects using the OSC protocol and found it to be extremely useful, flexible and easy to use. We wanted to our project to implement the OSC protocol.
We set out to design an analog sensor interface which would be easy for artists to use with computer media based projects. We wanted something that would be networkable, low latency, reasonably high resolution and perhaps most important of all inexpensive.
Before arriving at STEIM I had already done a good deal of work writing an efficient implementation of the OSC protocol to run on R3000 based microcontrollers. It had been tested on other platforms but not yet implemented in the R3000.
Upon arrival at STEIM we went to work on our device. We found the environment to be conducive to focusing on our project and the staff and resources there to be extremely helpful.
The protoype was finally up and running late one night. As an initial test we hooked up a photocell sensor to one of the channels and pointed it at the window in our lab. I set the prototype to send data to a broadcast address at a reasonable rate so as not to put too much of a load on the network.
When we returned to the apartment where we were staying in another STEIM building I quickly wrote a simple PD patch on my laptop that would receive the A/D data over the network and trigger an alarm when the light level received at the photosensor crossed a given threshold. It was elaborate networked alarm clock, needless to say it worked quite well!
At the conclusion of our visit to STEIM we had a completed working prototype of our device, named OSCADC32.
The device is powered off of a standard ‘wall wart’ style power supply, 9-24 volts AC/DC any polarity. It provides inputs to 32 channels of 12 bit A/D conversion on a 40 pin connector (like the ones used to interface IDE hard disks). The measured voltages are transmitted over 10-base-T ethernet using the OSC protocol at an adjustable rate. On power up the OSCADC32 sends data every 100ms but is capable of updating all 32 channels as fast as every 4ms. The update rate is adjustable via an OSC message transmitted from a remote computer.
The total parts cost is about 100 euros.
We were pleased to find that even in our unshielded hand wired prototype we were able to achieve nearly all of the 12 bits of resolution possible using the A/D chips that we chose. We expected that once the device was in a shielded enclosure with a judiciously layed out PCB the full resolution of the converters would be realized.
Since returning from our visit to STEIM I have designed a printed circuit board for the OSCADC32 and built a final version which easily achieves the 12 bit performance.
More recently I have found a bit of time to work on the next revision of software. Something that we originally planned but hadn’t found time to implement was a web interface which would allow you to adjust the networking parameters (IP/DHCP, port, remote receiver IP address and port etc.) and store them in non-volatile memory. In the original version of the software all of these parameters were hard coded. Currently everything is working well.
In order to fully complete this project we still need to provide comprehensive documentation including PCB artwork, software, parts list, assembly instructions and example applications (eg. PD patches).