Interactive Art Piece

I’m working on an interactive sculpture project. There will be strings-I want to make it so if someone pulls a string, it will produce a sound.
I am thinking strain gauges are the way to go about doing this so I can have a different output depending on the reading of the gauge.

I’ve never done a project like this before but I understand the basics. I just need some guidance on what the proper (specific) hardware would be.
Any advice is welcome (when it comes to the programming part as well).

(Also-if I need to give more detail/explanation on my project, just let me know)

How are you converting the strain guage output to a 0-5V output that the arduino can then make sound production decisions about?

Please do not cross post. Delete the two identical threads you have posted.

An alternate approach might be spring-loaded potentiometer, either linear that slides back & forth, or rotary, and pulling on the string moves the pot wiper back & forth. Can add block & tackle like arrangement to allow for bigger string movement & smaller wiper movement.

Another alternative to a traditional strain gauge would be to attach the strings to conductive rubber. The rubber would be electrically connected as part of a voltage divider from +5 VDC to ground, with a wire connected between the cord and a constant resistor. The wire would then connect to an analog input, and when the voltage goes below a threshold (because the rubber’s resistance increases as it is stretched) you can have the Arduino signal a WAVE shield, MP3 shield, or other playback device.

I'm interested in learning more bout the conductive rubber-I'll look into it.

I guess I'm not really clear on how the reading from whatever sensor part that I use translates into sound [or the steps I need to take to make that happen].

Will I be able to program the WAVE shield/MP3 shield/whatever playback device to have more than one option for the sound output or will it just play back one file repeatedly?

[sorry for all of the questions, just trying to figure things out]

I believe you can find a way to play selected files:

http://www.mdfly.com/index.php?main_page=product_info&cPath=9_53&products_id=806

Make a decision about what to play based on sensor readings from the string pulls.

Another option http://www.roguerobotics.com/products/electronics/rmp3

There are basically two ways to make sound with an Arduino. One is to use tones. http://arduino.cc/en/Tutorial/Tone

The other way is to use a shield such as the Wave shield or an MP3 shield. These shields use an SD card to store files, so you can add as many sound files as you like. Last year I converted an old radio into an MP3 player. http://arduino.cc/en/Tutorial/Tone

A third way is using the Arduino to synthesis the sound from scratch -

http://rcarduino.blogspot.com/2012/08/the-must-build-arduino-project-illutron.html

http://rcarduino.blogspot.com/2012/08/adding-audio-to-arduino-projects.html

http://rcarduino.blogspot.com/2012/09/algorithmic-music-on-arduino.html

http://rcarduino.blogspot.com/2012/10/arduino-modular-synthesizer-part-one.html

Lots of other examples out there as well.

Duane B

rcarduino.blogspot.com

Thanks for all of these examples.

Here's a dumb question -- is the WAVE shield able to do everything alone (meaning react to the sensors/whatever I end up using) or is it just an add on that has to go with another board?

Just an add on - you need the Uno/whatever below to read the sensors and make decisions about what file to call up for playing.

Awesome, I've purchased both pieces.

Any suggestions on speakers??--they need to be fairly small.

Define "fairly small" in inches/mm/wattage, etc.

I have tested/used some small 1.1" diameter 1.5w/2w max speakers before...

the WaveShiled.. (IMHO) has VERY low volume by default...

I would read up on doing the volume hack for it..

This speaker or something similar should work fine. https://www.sparkfun.com/products/9151

Is there anything I need to know about connecting this board http://www.mdfly.com/index.php?main_page=product_info&cPath=9_53&products_id=806 to an Arduino Uno?

Just follow the directions here - send it some simple serial commands. http://mdfly.com/Download/Module/AU5106_spec.pdf

Do you have one? They are showing as being out of stock.

Thanks!

yeah, I found it on ebay and ordered it.

Everything so far has been extremely helpful but I'm realizing I'm in over my head and have no idea how to actually put things together.

I have an Arduino Uno this mp3 shield: http://www.ebay.com/itm/TTL-SD-Card-MP3-Player-Module-w-6-Output-Control-RS232-TTL-/380414994017?ssPageName=ADME:L:OC:US:3160 these speakers: https://www.sparkfun.com/products/9151 and this conductive rubber + resistor kit: http://www.adafruit.com/products/519

I'm not sure how to connect everything [Uno to mp3/resistor to uno/speakers to everything] It's probably the most simple of processes but I've never done this before.

bribrode:
I’m not sure how to connect everything [Uno to mp3/resistor to uno/speakers to everything]
It’s probably the most simple of processes but I’ve never done this before.

Well I’ve never used this particular MP3 module (it isn’t in the Arduino shield form factor, not a problem but connecting everything would have been a bit easier). However, after a cursory look at it you’ll want to wire up the “-” lead on each speaker (you mention “speakers” so I assume you have at least two) to the “A_GND” pin on the MP3 module. Then you’ll wire up the “+” lead on the speaker you want to be the right side speaker to the “R” pin, and similarly the on the speaker you want to be the left side the “+” lead will be connected to “L”.

As far as how to exactly interface it with the Arduino, it looks like you can use either serial commands or a 6 bit parallel I/O. I would look at the documentation to decide which you want to use. If you use serial you would use the TX (transmitter) and RX (reciever) pins on the Arduino, but wire them up to the opposites on the respective boards (so transmitter of one board goes to the reciever on the other, and vice versa). The other method would be to wire up six Arduino I/O pins to the IO1 thru IO6, and send numbers representing each command by a combination of 1s and 0s on the six wires. In either case the commands will be in hexidecimal (or HEX) so that’s why they appear in the documentation using both numbers and letters.

The conductive rubber will have to be cut into however many pieces you will need for your final number of audio tracks. However, you might want to experiment a bit with it still in one piece. In any case, you will need to connect wire (not necessarily with solder, but it can help ensure a consistent electrical connection) to each alligator pin and have them at opposite ends of a strip of rubber. That of course means that you will need a pair of alligator clips for each segment used by the final device, but these should be easy enough to get either online or at a local hardware or hobby store. Since this application is really only concerned with if a string is pulled and you don’t really care to know exactly how hard, you can use either analog or digital inputs on the Arduino.

Analog would allow you to measure the change in resistance and therefore calculate a force. If you want to use this method, refer to the thermistor tutorial. This is because even though they are measuring different things, they are resistive sensors and both normally need a voltage divider when used as an analog input. In your case, for an analog input you will need to determine a threshold value that will determine when the audio track is played. In effect this value will determine how much the rubber has to be stretched to be considered “pulled”. Have your sketch check each input pin if the threshold has been reached or exceeded and then play the appropriate audio track.

You could also use a digital input pin. The easiest way is to still use a voltage divider similar to the analog example. Yet, in this case the voltage divider will be set so when the rubber is in a relaxed state the voltage will between 3.5 VDC and 5 VDC. Voltages above ~3 VDC on Arduino digital input pins are treated as HIGH. Because the resistance increases when the rubber is stretched, it will eventually increase the voltage drop when stretched and cause the pin to read as LOW. So you still have a threshold, but it is one determined by your hardware, not software. Then your sketch would need to detect if an input pin has changed from HIGH to LOW, and thus play the associated audio track.