Sam the Salamander got too cold outside, so….

How to make Sam or any other creature you wish to get to know really well (you’ll be spending a lot of time together).

Read about muscle wire and try it. This book was very helpful to me.
Look at the many projects made by Jie Qi and her crane tutorial. You can purchase a moving hand from musclewires.com just to practice and learn how the pros handle muscle wire.

hand from Susan Ettenheim on Vimeo.

Once you have the muscle wire and an idea, you need to pay close attention to the specs and use Ohms law to determine the length of wire and the voltage.

Muscle wire requires too much current for Arduino so you’ll need to use a relay.

Here are my notes that include some notes from Jie Qi about how to make the calculations. Be careful not to try random different batteries. You will damage the wire. These notes also include links to many videos of muscle wire projects including a great walking insect.

So now to get to my project:

This is Sam’s cousin. I met him in Massachusetts and followed him around. Sam is the story of a salamander (a red spotted newt) who got too cold outdoors and decided to live in the box with leaves for the winter. If you’re quiet and gentle, you can chat with him.

Bendsoft is a product that you can also get at musclewires.com. It is an approximately 2″ piece of 200 muscle wire, .008 diameter Flexinol wire that is mounted on non-compressing plastic (as opposed to styrofoam or a soft plastic).

I built a frame around it, keeping in mind the spaces needed for the wire to move as seen in the hand above.


I sewed, glued, taped many pieces of muscle wire to many surfaces and often as soon as they were attached, the motion was stopped. This time it finally worked. This is tissue paper.

 

Sam the orange shape moving from Susan Ettenheim on Vimeo.

Here’s the idea:

There’s a box. The user comes to the box and puts his or her hands on a button that activates the leaves to rustle.

rustling leaves from Susan Ettenheim on Vimeo.

Then there’s another button and the user is asked to very gently and quietly call Sam’s name and push Sam’s call button. Sam then looks up and engages with the visitor.

20121203 233426 from Susan Ettenheim on Vimeo.

What’s the plan?

The Arduino powers the relay. The electronics are really very simple. It’s a circuit with the two wires for the leaves so that they each rustle, creating a similar movement to the fingers on the hand. Then there is another circuit that makes another piece of muscle wire lift Sam’s head. The muscle wire in Sam’s neck is 200 Flexinol and the wire in the leaves is 150 but they are calculated to be a size that they can all work on 1 D battery, 1.5volts. The 150 wire has a manufacturer’s recommended current of 400mA and the 200 wire has a manufacturer’s recommended current of 610mA. The manufacturer’s specs tell you the linear resistance, ohms/meter. You can see in the doc referenced above how to calculate the proper length of wire.

It is very important that the wire only be pulsed enough to cause it to contract but not long enough to overheat. It is part of the family of SMA wires, shape memory alloys. The wire can actually be formed into shapes and it will return to the remembered shape as can be seen in this video from ThinkGeek.

The code in Arduino pulses the wire using a simple delay and HI/LOW.
The code will be posted in Github and added here. The post right before this post shows the code with problems unresolved.

What’s next?
-fix the variables in the code
-fix more code: if the relay goes high for 1.2 seconds, then off for 2,– (thank you Dustyn,   Joe, Peter, Vitor and so many people who have been teaching me the language of code and electronics).
digitalWrite(leavesPin2, HIGH);
delay(1200); // activate salamander wire for 1.2 s
digitalWrite(leavesPin2, LOW);
delay(2000); // rest
-fix the code to not run forever but create and if/else or move it to setup
-edit the sequencing of the code.

It’s not done, but then I’m not done learning either. Sam and I have a great relationship now. We have bonded through the experience and although the little salamander is just as tired but also just as happy as I am, we both want to see this through after we catch up on a little sleep.

 

Final project update

Where I am now:

This code:

void setup() {
pinMode(2, INPUT); // set the switch pin to be an input
//pinMode(7, INPUT); // set the switch pin to be an input for yellow
pinMode(3, OUTPUT); // set the red LED pin to be an output
pinMode(6, OUTPUT); // set the yellow LED pin to be an output

}

void loop() {
// read the switch input:
if (digitalRead(2) == HIGH) {
// if the switch is closed:
//digitalWrite(3, HIGH); // turn on the yellow LED
//digitalWrite(4, LOW); // turn off the red LED
}
else {
// if the switch is open:
//digitalWrite(3, LOW); // turn off the yellow LED
digitalWrite(6, HIGH); // turn on the red LED
}
}

Makes the light turn on when the button is pushed.
It looks like this:

picture will be here as soon as I can upload it

If I push the other button, the wire on Sam, the salamander activate and he picks up his head to say hello and look around.

I just need to integrate the code (the muscle wire is activated by the circuit connected to the relay) so that  when you push the button, the muscle is activated for 1.2 seconds and then rests for 2 seconds and continues that cycle for 3 cycles and then turns off.

Here is the other Arduino code that is written but not integrated into the above code which is currently uploaded to the Arduino.

 

// constants won’t change. They’re used here to
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int samPin = 7; // the number of the wire pin
const int leavesPin = 8;
const int leavesPin2 = 9;

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:

pinMode(leavesPin2, INPUT);
/ pinMode(wirePin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(leavesPin2);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn wire on:
digitalWrite(leavesPin2, HIGH);
delay(1200); // activate salamander wire for 1.2 s
delay(2000); // rest
buttonState2 = digitalRead(buttonPin2);
if (buttonState2 == HIGH) {
//digitalWrite(leavesPin, HIGH);
}
delay(3000); // delay

}
else {
// turn wire off:
digitalWrite(ledPin, LOW);
}
}

 

// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button

void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the wire as an output:
pinMode(wirePin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}
void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);

// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
buttonPushCounter++;
Serial.println(“on”);
Serial.print(“number of button pushes: “);
Serial.println(buttonPushCounter);
}
else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);
}
}
// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;
// turns on the wire every four button pushes by
// checking the modulo of the button push counter.
// the modulo function gives you the remainder of
// the division of two numbers:
if (buttonPushCounter % 4 == 0) {
digitalWrite(wirePin, HIGH);
} else {
digitalWrite(wirePin, LOW);
}

}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1200); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(20000); // wait for a second

This code is rough in that the pin numbers are not necessarily correct and the end piece of code is just collaged onto the end for reference.

picture will be here as soon as I can upload it

All suggestions are welcome and appreciated.

*****************

–One man’s ceiling is another man’s floor…. just because languages don’t come easily to her, does it mean she can never speak French in France – or that she just needs a little more time in Paris… ;) — is basic computational thinking and basic electronics a basic literacy? — because she never read fast or easily, does that mean that she shouldn’t learn to read? — why does she see things easily that other people can’t see or never notice….

Thanks in advance for help!

Final Physical Computing Project update 11/28 plans

final project system plan
user comes to box and puts hand down on handprints on base
leaves rustle
user calls Sam and pushes his call button and he raises his body

Bringing all the pieces together – a wonderful thing when it works, a feeling of great anxiety until it does work and a feeling of excitement knowing that all the pieces are there and just ready…

1. The concept:  Three pieces of muscle wire make objects move, creating a sense of rustling and a creature living in the woods or at least in his own little environment that you as the visitor may enter for a short time to visit.

2. The electronics:
A 2″ piece of .008 (200) Flexinol actuator wire (90C°), mounted on a non-compressing strip of plastic is activated for 1.5 seconds with 1.5 volts. (Moving Sam, the salamander)
Two 3″ pieces (to be confirmed) of .006 (150) or .010 (250)

 

Stop Motion Animation



Sam is a dancing salamander. He lives in the country but gets cold so he decides to move to the city where life is warmer and more fun. The Quay Brothers show at MOMA inspired my desire to have a strong environment and a delicate but powerful character.

Midterm adventures with Muscle Wire

A few examples of our adventures:

Muscle Wire experiment from Susan Ettenheim on Vimeo.

Muscle Wire – another try :) from Susan Ettenheim on Vimeo.

When we posted to the ITP list to ask for advice about using muscle wire, everyone said to talk to Catarina. She was so generous meeting with us, shared many examples, connections to openmaterials.org, a fabulous resources and links to some great tutorials from MIT work using muscle wire. This really helped up focus our efforts since we had also been searching for plasma products. She wisely advised us to just get to know the materials first. We made all sorts of mistakes, heating it too much, using too much voltage, bending it too much, not having it tight enough, putting it on paper that was too heavy which led to rethinking and more experimenting. These two examples were our first try at closing a circuit and making it work.

Next, the sampler kit provided multiple weights, so I made tentacles of each to experiment, leading to questions of what LT vs HT meant. The sampler package from Jameco came with excellent instructions and then the Muscle Wire Projects book provided all sorts of experience and examples of the possibilities. It seemed that for our project the 100 and 150 weights worked best.

week6midterm150LT from Susan Ettenheim on Vimeo.

These experiments mounted the tentacles on a wire and wood structure and were a good opportunity to imagine more than one tentacle together. It was only then that a schematic drawing actually started to make sense and we could calculate and measure the length of wire to be used and the voltage required based on the manufacturer’s recommended current.

150HT from Susan Ettenheim on Vimeo.

Physical Computing Week 2 doing the lab again

Taking a little time, I decided to work through the beginning labs again.
Super basic but satisfying to work through….

Getting up a tiny bit of confidence, I also sorted and noted the values of the resistors and hopefully am getting a little beyond just matching the colors! It’s great when Ohms law starts to make sense.

week2 code analog in pot led dims from Susan Ettenheim on Vimeo.

week2 analog in pot led dims from Susan Ettenheim on Vimeo.

analog in with arduino

const int ledPin = 9;
int analogValue = 0;
int brightness = 0;

void setup() {
Serial.begin (9600);
pinMode (ledPin, OUTPUT);
}

void loop() {
analogValue = analogRead(A0);
brightness = analogValue /4;
analogWrite (ledPin, brightness);
Serial.println(brightness);
}

When you turn the potentiometer, the LED dims or gets brighter
The potentiometer is the variable resistor, an analog input which controls the LED.
A variable returned by the potentiometer and a variable to hold the brightness value is established. A global constant gives the LED’s pin number a name. As you turn the potentiometer, the LED dims.

Physical Computing Week 3

This week we covered Digital and Analog input. The servo lab and the tone lab were a great combo.

 

week3 servo from Susan Ettenheim on Vimeo.

 

week3tonelab from Susan Ettenheim on Vimeo.

I found the tone lab interesting because by reading the values and changing the mapping, the result of the differing tones was really obvious and made the concept of mapping very concrete.

In the readings this week, this was by far the most powerful sentence, “Interactive work is different. The thing you build, whether it’s a device or a whole environment, is just the beginning of a conversation with the people who experience your work.” Since the beginning of Macromedia’s Director, I have been wanting to interact with my art. Stories developed naturally from the moving parts. As a printmaker, there is a built in give and take about making art. You push the burin along the copper, the sharp, thin strip of metal comes up and curls and then you twist and turn, both the copper plate and your body… Even the act of inking a plate is a physical dance. Somehow, it has always been disappointing to hang a print. When I look at at Goya or a Rembrandt, I can smell the ink, see the moving, graceful hand of the inker, but can most people? Now that I’m finally confronting my desire to make my pieces of art as exciting as I have always found opera to be… what exactly does that look like? … the beginning of a conversation… yes…

Physical Computing Midterm

Here’s a little gallery of intriguing pictures from out midterm project which I’m really very excited about. The first image is using the light to test the connections with the relay board. The chart is the manufacturer’s recommendations for using muscle wire. When I’ve done a little more testing, I will publish more results, hopefully helping others who want to play with this great material. Thank you so much to Catarina, openmaterials.org/catarina for getting us started!

Over the course of this project, I’ve learned how to measure the wire resistance and finally Ohms Law really is making sense. The initial trials with the 9 volt battery were just frying the wire and causing smoke and expense. When we calculated the actual resistance and considered the manufacturer’s recommendation, as you can see on the drawings, the two double A batteries were just great.

I’ll try to get another video because the wire was twisting beautifully with the 2 double A batteries. I even understand now that if a tentacle of the creature for the project is longer, the resistance will need to be calculated again based on the longer wire, although I don’t think a small change will cause a big difference.

The other images show the double series in parallel, which works nicely with a 6volt battery set up – so we ordered a holder for 4 D batteries. The last image is the plan for the LED lights which don’t need to go through the relay since the current does not need to be that high.

This is a messy working document but it does document our process, resources, links and ideas. Maybe it can be helpful to you…

Physical Computing Week 7 H Bridge Lab and Motors and Making Things readings

This week I actually printed the chapters from Dustyn’s book and carried them around. The readings really put me in touch with my childhood and growing up in a family where on any given afternoon or weekend day, the drill would come out and a project would be started. On a sick day, a treat could be anything from rewinding the sewing ribbons on the spools to resorting the screws in the little drawers. Not long before my Dad passed away a few years ago, we sat together with a screw gauge carefully measuring and resorting all sorts of screws. He would be very happy at ITP and ITPers would find his garage a gold mine. He hated for things to be thrown away so he spent endless hours taking apart broken things and sorting the metals and motors. As he became more frail, I would drive to the recycling place and he would stay in the car as I lugged the boxes of wires and carefully sorted metals to each scale. It was actually exciting to read about tension, buckling, stress, torsion, shear and so on in the context of my own projects since this is what he had talked about as he built things for me all those years growing up.

The lab this week was fun, definitely the most complicated wiring but also a very satisfying and concrete result when the button made the motor turn the opposite direction. My mind is full of a million ideas of how to use this in the future…

20121024 192108 from Susan Ettenheim on Vimeo.