The Tricorder was designed as a module for Interactive Art, an introduction to digital interfacing with a focus on sculptural, spiritual, ecological, and experimental approaches to interactive objects and environments. The Tricorder introduces a few types of sensors (button, toggle, knob, light sensor) and an actuator (an led) in a simple and clear way, but with avenues for expansion. The enclosure is created using a 3D printed base and a laser cut top panel. All of the design files are open source, including the arduino code and a set of max patches. While Max is useful in mapping the MIDI data in a variety of ways, the embedded pro micro sends and receives common midi messages over USB, so you can use it with lots of other software programs too.
Each Tricorder costs under $20 to make. Here are the parts you’ll need…
Parts List
pro micro with header pins
10k potentiometer
ldr (light dependant resistor)
button
toggle
led (any color will work)
2 led holders (one for the ldr)
copper wire (about 10″)
usb micro data cable (some micro usb cables are charging only, not data)
laser cut plywood panel (files here)
3d printed triangle base (files here)
6 dupont cables (cut in half makes 12!)
Start by orienting the plywood panel as above and mount the main components, noting the layout above. For the button, toggle, and potentiometer, first unscrew the small nut on the threaded part of the component, then re-thread it through the mounting hole to secure the component. The LDR and LED can be taped into holes 4 and 5 respectively. Try to align the components as seen in the back view below, which will make soldering everything together a bit easier.
/**
* MIDI TRICORDER
* simplified code for expanding projects
*/
#include <Control_Surface.h> // Include the Control Surface library
USBMIDI_Interface midi; // Instantiate a MIDI over USB interface.
NoteButton buttons[]{
{ 5, 61 }, // push button on pin 5
{ 6, 62 }, // toggle switch on pin 6
};
CCPotentiometer potentiometers[]{
{ A0, 10 }, // Analog pin (A0) connected to potentiometer, midi controller number (10)
{ A1, 11 }, // Analog pin (A1) connected to LDR, midi controller number (11)
};
NoteLED leds[]{
{ 9, 70 }, // LED on pin 9, responds to note 70
};
void setup() {
Control_Surface.begin(); // Initialize Control Surface
}
void loop() {
Control_Surface.loop(); // Update the Control Surface
}