ExemplarAndTheMakeController



Goal

We're trying to connect the Make Controller as an input device to Exemplar so that it can supply sensor readings from its 8 analog input ports.

 

Status

Exemplar as of v0.4.2 now includes experimental support for reading sensor data from the Make controller through OSC over UDP (Ethernet). You should be able to read from it at frequencies up to about 300Hz. your mileage may vary slightly.

 

How-To

Then close and restart Eclipse. If upon restart the "heartbeat" LED on the Make Controller stops blinking, power cycle it. Data should now be visible in Exemplar.

(We need to send data to the Make controller to get sensor readings and have overloaded the "output" settings for now; this is ugly and should be changed in the future)

 

Detailed Information

Approach

Since the Controller "speaks" OSC with the supplied Heavy firmware, this should not be all that hard. We should add corresponding classes to dtools-osc-comm.jar.

Polling for messages

The main difference to our other supported microcontrollers is that the MAKE Controller is quiescent by default and needs to be polled for sensor data. That means our Make Controller adapter within Exemplar needs to send OSC messages at, say, 50Hz, requesting new sensor readings. In the future, we may create our own version of the firmware that will automatically send its analogin values.

 

According to the Making Things OSC documentation, the messages to poll for values should be of the following format (no arguments):

/analogin/x/value 
where 0<=x<=7

It's also possible to send

/analogin/*/value
to read all the analog inputs.

 

The messages sent in return will have the same address, and a single int argument.

 

Buffering and translating addresses

A second difference is that Exemplar expects analog sensors to have OSC addresses /adc0 through /adc7 whilee the make controller delivers sensor readings to /analogin/0/value through /analogin/7/value.

 

So our adapter should poll for sensor values, receive the sensor value messages, translate the address and forward/dispatch the messages with an Exemplar-compatible address.

 

Communication modes

There are two possible connection modes: USB or Ethernet.

Ethernet

The Make Controller supports DHCP, so you can plug it into your local network and it will automatically retrieve an address from your router (which you can check in mchelper). Otherwise, default parameters for ethernet are: 192.168.0.200, default port is 10000 (taken from the Network system docs).

 

USB

The controller presents itself as a Serial port; however, the OSC over serial protocol MC is using is NOT compatible with the OSC-over-serial protocol defined by Pascal Stang that we've been using.

Instead, it appears to be a SLIP wrapping of OSC messages, which does not include message length or checksums. For more detail, consult their firmware source code for usb.c.

 

Wiring up sensors

Here is the application board layout of A2D ports: