The SomaPhonic Glove

Making the SomaPhonic Glove!

The SomaPhonic Glove kit gradually challenges the user to work with multiple sense points and introduces audio as a mechanism for remix and redefinition. The kit uses copper tape to sense when certain points are in contact with skin. This kit has been designed to allow for each finger to act like an instrument by triggering different sounds or audio samples. The purpose of this project is to redefine trauma landmarks on the body by revisiting these places and remapping the trauma-infused cartography.
This project aims to equip the user with the means to RE-Member places on their body that could trigger trauma flashbacks. The project allows the user to be empowered to change the meaning of this place by making it an instrument for play and exploration, all the while practicing established embodied practices such as tapping and intentional gesture.

Before Getting Started

Download Arduino – Arduino is the open source software we will use to program these kits to do the cool things we want them to do! The code provided with the kit is a starter sample so that your kit works as intended but you are encouraged to learn, play, experiment and remix all you want!

Visit Arduino to learn more ways to use and explore!

What You Will Need

1 x Glove – you can find these for a couple dollars at almost any retail store or if you are like me, you have a bunch of non-matching gloves in different crevices of my dresser.

1 x Wire Cutter

Micro USB-B cable – (purchase)

 

The Somaphonic Glove Kit Components

4H_SPG_DocuDir5H_SPG_DocuDir2H_Supplies_DocuDir

 

2 x Breadboard (purchase)

1 x ProMicro(3.3v/8mhz) (purchase)

1 x Piezo (purchase)

1 x Capacitive Sense Breakout (purchase)

7 Wires (purchase)

5 jumper wires (purchase)

1 x Copper Tape (purchase)

1 Micro-USB (purchase)

 

 

Directions

1.) Place the Capacitive Sense Breakout (CSB) into the breadboard

8H_SPG_DocuDir

 

2.) Place the ProMicro into the Breadboard and place the piezo into the top right holes.

6H_SPG_DocuDir

 

3.) Wire the Piezo

7H_SPG_DocuDir

Note that this on this piezo either pin can be ground or data, so choose whichever

1 Black Wire from the ProMicro GND to the Piezo Ground Pin

1 Green Wire from the ProMicro 9 to the Piezo Data Pin

 

4.) Wire the Capacitive Sense Breakout

9H_SPG_DocuDir

1 Black Wire from the CSB GND

1 Blue Wire from the CSB SDA

1 Blue Wire from the CSB SCL

1 Blue Wire from the CSB IRQ

1 Red Wire from the CSB 3.3V

 

 

6.) Attach the CSB to the ProMicro

10H_SPG_DocuDir11H_SPG_DocuDir

somaphonic

 

1 Black Wire from the CSB GND to ProMicro GND

1 Blue Wire from the CSB SDA to ProMicro 2

1 Blue Wire from the CSB SCL to ProMicro 3

1 Blue Wire from the CSB IRQ to ProMicro 5

1 Red Wire from the CSB 3.3V to ProMicro 3.3V

 

7.) Attach Jumper Wires to finger tips with copper tape

13H_SPG_DocuDir12H_SPG_DocuDir

While wearing the glove (to ensure best fit), wrap some copper tape around your finger. You want the wire tip to lay flat agains the tape you just wrapped around your finger so that the end result will be the wire tip attached to your finger between layers of tape. Take the metal tip of either end of the wire and hold it against the tip of your finger with the tape wrapped around it. While doing that, begin to wrap the copper tape around the wire tip, wrapping it tightly to the first layer of tape. This can be a bit of an awkward process to do without someone else’s help but it absolutely can be done. You want the tip to be completely covered on both the bottom side and the top side. Do not go overboard with the layers by adding 10 layers to where the metal tip is, because it will dampen the sensing point. Do, however, feel free to move upwards and downwards with wrapping the tape to provide the wire more structure as seen in the photo.

 

9.) Attach the two breadboards to the glove

14H_SPG_DocuDir

On the top side of the glove, attach the breadboards by peeling off the sticker on the bottom and sticking them to the glove. For added attachment, go ahead and sew on some velcro. Make sure that the CSB the one closest to the fingertips

 

10.) Wire fingertips to the Capacitive Sense Breakout

15H_SPG_DocuDir16H_SPG_DocuDir

Starting with the thumb wire, connect it to 1. Do the same with each finger’s wire until they are connected to 1-5.

How to Program your Somaphonic Glove

1.) Open up Arduino (which you downloaded from the link above)
2.) Before Plugging in your ProMicro make sure to download Sparkfun’s board and build files. Here is a tutorial: https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide

Windows Driver Installation

Step 1: Download the Driver

Before plugging your board in, get a head start by downloading the drivers. Check the GitHub Repository for the latest files. The same driver file works for both the Pro Micro and the Fio v3. The drivers for both the Fio and the Pro Micro are signed for Windows users. You can download them directly using the link below.

FIO AND PRO MICRO DRIVERS

Unzip that zip file, and don’t forget where you’ve left its contents. In that zip file, you should find an INF file, which contains all the information Windows needs to install the Pro Micro’s driver. This sparkfun.inf will be found in Arduino_Boards-master → sparkfun → avr → signed_driver.

Step 2: Plug in the Pro Micro / Fio v3

When you initially plug the board in, an “Installing device driver software” bubble notification should pop up in the lower-right corner of your taskbar. After the green dot circles the grey box a number of times, you’ll probably get a sad bubble like this:

Never fear! Windows just doesn’t know where to find our driver.

Note: Some users have experienced issues when plugging the Pro Micro into a USB 3.0 port. If you experience issues on USB 3.0 ports, try switching to use a USB 2.0 port.

Step 3: Open the Device Manager

From here, the most straightforward way to install the driver is through the Device Manager. To get to the Device Manager, click the Start button, then open the Control Panel. In the Control Panel, click System and Maintenance, and then open the Device Manager.

Alternatively, you can open the Run prompt (Windows key+R) and type ‘devmgmt.msc’ and click OK.

In the Device Manager, expand the ‘Other devices’ tree, where you should find a ‘USB IO Board’ with a yellow warning sign over its icon. Right-click the ‘USB IO Board’ and select Update Driver Software….

This should spawn an ‘Update Driver Software – USB IO Board’ window.

Step 4: Finding the Driver

In the first window that pops up, click ‘Browse my computer for driver software’. On the next window, click‘Browse…’ to search for the driver you just downloaded. It should be a folder named ‘Arduino_Boards-master’, in a subdirectory noted in step 1. After you’ve selected the ‘driver’ folder, click OK, then select Next.

Windows will attempt to do its driver install thing, but not before complaining about the driver being unsigned. It’s safe to select ‘Install this driver software anyway’ on the warning dialog.

After watching the progress bar beam by a few times, you should get a happy ‘Windows has successfully updated your driver software’ window. And the ‘Device Manager’ should have a new entry for the ‘SparkFun Pro Micro (COM ##)’ (or ‘SparkFun Fio V3 (COM##)’ if you have one of those) under the ‘Ports’ tree.

Take note of which COM port your Pro Micro was assigned. We’ll need it soon.

Installing the Arduino Addon

We’re still not completely ready for Arduino, but this is the final stretch. Before you can use the ProMicro in the Arduino IDE, you’ll need to install the board (.brd) files for the Fio/Pro Micro so the Arduino IDE will know how to communicate with your board.

Using the Board Manager

With the release of Arduino 1.6.4, adding third party boards to the Arduino IDE is easily achieved through the board manager. If you’re running an older version of Arduino (1.6.3 or earlier), we recommend upgrading now. As always, you can download the latest version of Arduino from arduino.cc.

To begin, you’ll need to point the Arduino IDE board manager to a custom URL. Open up Arduino, then go to the Preferences (File > Preferences). Then, towards the bottom of the window, paste this URL into the “Additional Board Manager URLs” text box:

COPY CODE

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

You can add multiple URLs by clicking the window icon, and pasting in one URL per line.

Click OK. Then open the Board Manager by clicking Tools, then hovering over the Board selection tab and clicking Board Manager.

Search for ‘sparkfun’ in the Board Manager. You should see the SparkFun AVR Boards package appear. Click install, wait a few moments, and all the .brd files you’ll need should be installed, indicated by the blue ‘Installed’ that is printed next to the package.

You should now be able to upload code to a number of SparkFun Arduino-compatible products, including the Fio and the Pro Micro.

Installing the .brd Files Manually

If you are using an older version of the Arduino IDE and do not have access to the Board Manager, then you’ll need to install the .brd files the old fashioned way.

To begin, download this zip folder, and unzip its contents into a ‘hardware’ directory within your Arduino sketchbook.

Note: These Arduino addon files only work with Arduino 1.5 and up. If you’re using an earlier version of Arduino, either update (and get some cool new features), or download the older version of the Addon.

Where’s your Arduino sketchbook? Well, by default, it should an ‘Arduino’ folder in your home directory, but to double check you can go to ‘File’ > ‘Preferences’ within Arduino and check the ‘Sketchbook location’ text box. Just make sure you close all Arduino windows once you’re done.

Once you’ve unzipped that folder into the ‘hardware’ folder within your Arduino sketchbook (you may actually have to create a hardware folder), your directory structure should look something like this:

The structure of this directory is critical – it should look something like “Arduino/hardware/[manufacturer]/[architecture]”, in this case [manufacturer] is “sparkfun”, and [architecture] is “avr.”

There’s a lot going on in that addon, but one of the most important files is ‘boards.txt’, which will add a few new entries to your ‘Tools > Board’ menu.

To double-check that the board definitions have been added to Arduino, open up Arduino, and check under the ‘Tools > Board’ menu. There should be some new entires for ‘SparkFun Pro Micro 8MHz/3.3V’, ‘SparkFun Pro Micro 16MHz/5V’, and other 32U4 boards.

Notice there are two options for Pro Micro – 8MHz and 16MHz. It’s very important that you select the Pro Micro option that matches your board’s voltage and speed. Don’t know which board you have? Check the bottom of the board, where you should find either a ‘5V’ or ‘3.3V’ box checked.

You should also see your Pro Micro’s COM port under the ‘Tools > Serial Port’ menu. Select it, and head over to theExample 1 page where we’ll upload our first piece of code.

Installing: Mac & Linux

If you’re using Mac or Linux, follow the steps below to get your Pro Micro (or Fio v3) ready to go on your computer. We’re not going to name names here, but installing the Pro Micro on Mac OS X and Linux is a lot easier than on other OS’s…

Following these directions is critical to getting your Pro Micro supported within your Arduino environment!

Board Installation

Using the Board Manager

With the release of Arduino 1.6.4, adding third party boards to the Arduino IDE is easily achieved through the board manager. If you’re running an older version of Arduino (1.6.3 or earlier), we recommend upgrading now. As always, you can download the latest version of Arduino from arduino.cc.

To begin, you’ll need to point the Arduino IDE board manager to a custom URL. Open up Arduino, then go to the Preferences (File > Preferences). Then, towards the bottom of the window, paste this URL into the “Additional Board Manager URLs” text box:

COPY CODE

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

You can add multiple URLs by clicking the window icon, and pasting in one URL per line.

Click OK. Then open the Board Manager by clicking Tools, then hovering over the Board selection tab and clicking Board Manager.

Search for ‘sparkfun’ in the Board Manager. You should see the SparkFun AVR Boards package appear. Click install, wait a few moments, and all the .brd files you’ll need should be installed, indicated by the blue ‘Installed’ that is printed next to the package.

You should now be able to upload code to a number of SparkFun Arduino-compatible products, including the Fio and the Pro Micro.

Installing the .brd Files Manually

If you are using an older version of the Arduino IDE and do not have access to the Board Manager, then you’ll need to install the .brd files the old fashioned way.

When you initially plug your Pro Micro into a Mac, it’ll pop up a “Keyboard Setup Assistant” window. This stems from the Pro Micro’s ability to emulate an HID USB device (e.g. keyboards and mice) – the Mac thinks your Pro Micro is a human input device (which it could be! but isn’t yet).

There’s nothing to configure in this window, so just click the big, red, ‘X’ to close it.

That’s all there is to it! The CDC (communication device class) portion of your Pro Micro (the part that handles USB to Serial conversion) should automatically install on your computer.

Installing the Arduino Addon

In order to use the Pro Micro or Fio v3 in your Arduino IDE, you need to add a few board definition files to it. That’s what we’ll do in this section. Begin by downloading the Pro Micro addon files.

Note: These Arduino addon files only work with Arduino 1.5 and up. If you’re using an earlier version of Arduino, either update (and get some cool new features), or download the older version of the Addon.

With that downloaded, follow these steps to enable the Pro Micro in your Arduino environment:

  1. The addon files are supplied in a zip folder, so you’ll need to extract the files within first.
  2. Find your Arduino sketchbook folder. If you don’t know where it is, you can locate your sketchbook by looking at the preferences dialog in your Arduino IDE.
  3. If there isn’t already one, create a folder in your sketchbook called ‘hardware’.
  4. Copy the ‘sparkfun’ folder that was unzipped in the first step into the ‘hardware’ folder.
    • Your directory structure should look something like “Arduino/hardware/sparkfun/avr.”
  5. Restart Arduino, and look under the Tools > Board menu. You should see a few new options, including ‘SparkFun Pro Micro 5V/16MHz’, ‘SparkFun Pro Micro 3.3V/8MHz’, and ‘’SparkFun Fio V3 3.3V/8MHz’.

If the boards are visible, select the option that matches your board. If you have a Pro Micro, make sure you select the correct operating speed and voltage! Then head over to the next page where we’ll upload our first sketch!

3.) Replace the code in the new file with these files: SomaphonicGlove_01 (main code is below but it needs the files in the zip folder to work properly)
4.) Put your glove on and make sure the usb is plugged into the glove and your computer
5.) Upload the Arduino code to your glove
6.) Play and feel empowered!

 

You should now be the proud, empowered engineer, designer, and programmer of a Somaphonic Glove!

Share your creation to Instagram, Facebook, Twitter, etc with 

#HaptikaEmpowered

///Haptika ***THE SOMAPHONE GLOVE!!!***
/*

The Haptika Somaphone Glove is an electronic DIY project which
aims to represent a thereaputic DIY wearable platform to enable a sense of
embodiment and empowerment in special regards to those who are survivors
of trauma and abuse. Through the access, creation, remix, and use of the
Haptika platform, survivors have the potential to RE-member personal trauma
through play, embodiment, and empowerment.

This project in particular aims to mitigate the effects of abuse through remix and redefinition.
This kit has been designed to allow for each finger to act like an instrument by triggering
different sounds or audio samples. The purpose of this project is to redefine trauma landmarks
on the body by revisiting these places and remapping the trauma-infused cartography.
This project aims to equip the user with the means to RE-Member places on their body that
could trigger trauma flashbacks. The project allows the user to be empowered to change the
meaning of this place by making it an instrument for play and exploration, all the while
practicing established embodied practices such as tapping and intentional gesture.

Parts list:
ELECTRONICS:
2x Mini Breadboard
1x Sparkfun Pro Micro (https://www.sparkfun.com/products/12640)
1x Capacitive sense breakout board MPR121
1x Piezo
Copper Tape
Wires

DIY PARTS:
1x Glove
1x velcro or attaching material

Included in this code is Bildr’s code sample
*/
//Wire piezo with one pin to gnd and the other to digital out
//this sketch uses 9 for the piezo

#include “mpr121.h”
#include <Wire.h>
#include “pitches.h”

int irqpin = 5; // Digital 5
boolean touchStates[12]; //to keep track of the previous touch states

void setup(){
pinMode(irqpin, INPUT);
digitalWrite(irqpin, HIGH); //enable pullup resistor

Serial.begin(9600);
Wire.begin();

mpr121_setup();
}

void loop(){
readTouchInputs();
}
void readTouchInputs(){
if(!checkInterrupt()){

//read the touch state from the MPR121
Wire.requestFrom(0x5A,3);

byte LSB = Wire.read();
byte MSB = Wire.read();

uint16_t touched = ((MSB << 8) | LSB); //16bits that make up the touch states
for (int i=0; i < 12; i++){ // Check what electrodes were pressed
if(touched & (1<<i)){

if(touchStates[i] == 0){
//pin i was just touched
Serial.print(“pin “);
Serial.print(i);
Serial.println(” was just touched”);
/////////////////touch commands for piezo////////////
//piezo (pin number, note from “pitches”, duration (1000ms for whole note)
if (touchStates[1]==0 & (i==1)){
tone(9, NOTE_F3, 1000/4); }

if (touchStates[2]==0 & (i==2)){
tone(9, NOTE_G3, 1000/4); }

if (touchStates[3]==0 & (i==3)){
tone(9, NOTE_A3, 1000/4); }

if (touchStates[4]==0 & (i==4)){
tone(9, NOTE_B3, 1000/4);}

if (touchStates[5]==0 & (i==5)){
tone(9, NOTE_C3, 1000/4);}

}else if(touchStates[i] == 1){
//pin i is still being touched
}

touchStates[i] = 1;
}else{
if(touchStates[i] == 1){
Serial.print(“pin “);
Serial.print(i);
Serial.println(” is no longer being touched”);

//pin i is no longer being touched
}

touchStates[i] = 0;
}

}

}
}
void mpr121_setup(void){

set_register(0x5A, ELE_CFG, 0x00);

// Section A – Controls filtering when data is > baseline.
set_register(0x5A, MHD_R, 0x01);
set_register(0x5A, NHD_R, 0x01);
set_register(0x5A, NCL_R, 0x00);
set_register(0x5A, FDL_R, 0x00);

// Section B – Controls filtering when data is < baseline.
set_register(0x5A, MHD_F, 0x01);
set_register(0x5A, NHD_F, 0x01);
set_register(0x5A, NCL_F, 0xFF);
set_register(0x5A, FDL_F, 0x02);

// Section C – Sets touch and release thresholds for each electrode
set_register(0x5A, ELE0_T, TOU_THRESH);
set_register(0x5A, ELE0_R, REL_THRESH);

set_register(0x5A, ELE1_T, TOU_THRESH);
set_register(0x5A, ELE1_R, REL_THRESH);

set_register(0x5A, ELE2_T, TOU_THRESH);
set_register(0x5A, ELE2_R, REL_THRESH);

set_register(0x5A, ELE3_T, TOU_THRESH);
set_register(0x5A, ELE3_R, REL_THRESH);

set_register(0x5A, ELE4_T, TOU_THRESH);
set_register(0x5A, ELE4_R, REL_THRESH);

set_register(0x5A, ELE5_T, TOU_THRESH);
set_register(0x5A, ELE5_R, REL_THRESH);

set_register(0x5A, ELE6_T, TOU_THRESH);
set_register(0x5A, ELE6_R, REL_THRESH);

set_register(0x5A, ELE7_T, TOU_THRESH);
set_register(0x5A, ELE7_R, REL_THRESH);

set_register(0x5A, ELE8_T, TOU_THRESH);
set_register(0x5A, ELE8_R, REL_THRESH);

set_register(0x5A, ELE9_T, TOU_THRESH);
set_register(0x5A, ELE9_R, REL_THRESH);

set_register(0x5A, ELE10_T, TOU_THRESH);
set_register(0x5A, ELE10_R, REL_THRESH);

set_register(0x5A, ELE11_T, TOU_THRESH);
set_register(0x5A, ELE11_R, REL_THRESH);

// Section D
// Set the Filter Configuration
// Set ESI2
set_register(0x5A, FIL_CFG, 0x04);

// Section E
// Electrode Configuration
// Set ELE_CFG to 0x00 to return to standby mode
set_register(0x5A, ELE_CFG, 0x0C); // Enables all 12 Electrodes

// Section F
// Enable Auto Config and auto Reconfig
/*set_register(0x5A, ATO_CFG0, 0x0B);
set_register(0x5A, ATO_CFGU, 0xC9); // USL = (Vdd-0.7)/vdd*256 = 0xC9 @3.3V set_register(0x5A, ATO_CFGL, 0x82); // LSL = 0.65*USL = 0x82 @3.3V
set_register(0x5A, ATO_CFGT, 0xB5);*/ // Target = 0.9*USL = 0xB5 @3.3V

set_register(0x5A, ELE_CFG, 0x0C);

}
boolean checkInterrupt(void){
return digitalRead(irqpin);
}
void set_register(int address, unsigned char r, unsigned char v){
Wire.beginTransmission(address);
Wire.write(r);
Wire.write(v);
Wire.endTransmission();
}

 

If you run into any problems, don’t hesitate to contact me