Archive forNovember, 2007

Plant Pet

Whenever I grow my own plants, I always make them die. I don’t know why. Besides, whenever I come back to home, sometimes, without any talking, I want something that could give me a comfort. This is my beginning of this project.

I think people want to have an object to take care of and at the same time they want to be taken care of. Besides, I always think that this is similar to that people make an interaction- listening, thinking, and speaking. By having counterpart and reflecting by others, people can confirm who they are and get some energy to live.

I don’t want to make a living creature. but, through this plant, I want to people could get a consolation and relieve their loneliness and stress.

<Concept>

the Plant-Pet can be grown depended on how many times people take care of it.

Here are sensors that I have to make experiment.

1) Photocell/ Ultrasonic /Approximate sensor

2) Humidity / Thermistor sensor

<Another example of “a carebot”>

1)Gecko - a petrol-bot

2)Omo

This is a relational object by Kelly Doson. She call it “Omo”. This is “carebots” or “Companion robot.”

She said that Omo’s role is empathic and sometimes unexpected rather than normative. Omo breathes and senses the breathing of anyone interacting closely with it, matching—or seeking to lead—patterns of breathing. Omo does not always privilege soothing.

<drawing for the project>

This is the mechanism of umbrella

creeping plants /

Comments

Week7- pcomp lab

To control the DC motor, I used the H-bridge which have six transistors-two for switches, four for inner circuit. If pin 1 and 3 are open, pin 3 and 4 are closed. In other words, one is high, the other is low.

Four pins(4,5,12,13) in the middle of the H-bridge are for the ground. 1 and 9 pins are enable pins. 3 and 6 are for one motor. 11 and 14 are the other motor(H-bridge can control two motors. 2 and 7 is for the Arduino pin to control each H-bridge leg. Depending on the switch’s mode, the motor’s direction can be changed.

When I supplied the 12V power, I could smell something burning. One of the classmate said this was because of turning the direction quickly. Later I found that the motor’s power is for 6V based on the data instruction. According to the instruction, I used too much power.

<Transistor>

Transistos => electronic devices that control a large current from a smaller current. There are three connections referred as the base, the collector, and the emitter. By putting a small voltage and current on the base of a transistor, you allow a larger current to flow from the collector to the emitter. They function as amplifiers. There are two type of bipolar transistors : One is NPN, the other is PNP type. The NPN is equivalent a normally open switch and PNP is equivalent to a normally closed switch.   <from “Physical Computing”>

Program the microcontroller to run the motor through the H-bridge:

int switchPin = 2;    // switch input
int motor1Pin = 3;    // H-bridge leg 1
int motor2Pin = 4;    // H-bridge leg 2
int speedPin = 9;     // H-bridge enable pin
int ledPin = 13;      //LED 

void setup() {
  // set the switch as an input:
  pinMode(switchPin, INPUT); 

  // set all the other pins you're using as outputs:
  pinMode(motor1Pin, OUTPUT);
  pinMode(motor2Pin, OUTPUT);
  pinMode(speedPin, OUTPUT);
  pinMode(ledPin, OUTPUT);

  // set speedPin high so that motor can turn on:
  digitalWrite(speedPin, HIGH); 

  // blink the LED 3 times. This should happen only once.
  // if you see the LED blink three times, it means that the module
  // reset itself,. probably because the motor caused a brownout
  // or a short.
  blink(ledPin, 3, 100);
}

void loop() {
  // if the switch is high, motor will turn on one direction:
  if (digitalRead(switchPin) == HIGH) {
    digitalWrite(motor1Pin, LOW);   // set leg 1 of the H-bridge low
    digitalWrite(motor2Pin, HIGH);  // set leg 2 of the H-bridge high
  }
  // if the switch is low, motor will turn in the other direction:
  else {
    digitalWrite(motor1Pin, HIGH);  // set leg 1 of the H-bridge high
    digitalWrite(motor2Pin, LOW);   // set leg 2 of the H-bridge low
  }
}

/*
  blinks an LED
 */
void blink(int whatPin, int howManyTimes, int milliSecs) {
  int i = 0;
  for ( i = 0; i < howManyTimes; i++) {
    digitalWrite(whatPin, HIGH);
    delay(milliSecs/2);
    digitalWrite(whatPin, LOW);
    delay(milliSecs/2);
  }
}

Comments

Thermo Shoes - PROJECT

<< Final shoe work>>

When you change the speed like walking and running, people around the shoes can see the color changes. The principle of the shoes mechanism is that movement goes up the voltage and voltage heat the heater and then heater finally change the color outside of the shoes.

circuit with piezo sensor

circuit on the perfboard perfboard.jpgperfboardfront.jpg

<<Circuit>>

circuit2.jpg circuitwithleds.jpg

A heater needs at least 12V and lots of amperage. Therefore, we tried to use a transistor or relay(just making an experiment). Transistor can allow 5V to amplify 12V. ( similarly, a relay is an electrical switch that opens and closes under the of another electrical circuit using magnet)

<<materials>>

battery.jpg colorwith-magnet.jpg lilypad.jpg

We want to put all stuffs inside of the shoe but we need enough amperage for heater(left). So, we purchased 0.8amp battery. And, to facilitate attaching changing part to a shoe, we came up the idea of using magnet (middle). Lilypad is beautiful but when we connected all wires with conductive threads, we got loosened connection. That was a really problem!!

<< Thermochromic Paints>>

paint.jpg ink.jpg greentoyellow.jpg circuit1.jpg

Thermochromic paint is color paints that can make color changes when heat add. We contact the one of the company, MATSUI( www.matsui-color.com), and we asked 35(disappear minimum 36 degree Celsius) and 37 (disappear minimum degree 41 degree Celsius) paints to the company. For showing beautiful color, we mixed with acrylic paints.

<<Sensor experiments>>

sensorgraph.jpg We, Alex and I, had a problem in that we use the piezo buzzer sensor. It has a kind of own capacitor. So, whenever making one step, it makes a pick and slowly goes down. How we can check one step not the bunch of steps? Thus, we made a threshold between current step and last step to discard useless value.

code

const int piezoSensor = 0; // Analog pin connected to piezo sensor.
const int swooshHeatOutput = 8; //PWM pin used to regulate temperature of heating pad.
const int runningIndicatorLED = 7;
const int footstepValueThreshold = 175; //Minimum voltage signal spike to required to count as a footsep.
const int footstepTimeThreshold = 200; //Minimum footspeed (in millis) required to count as a footstep.
const int minimumRunSpeed = 450;

long currentPiezoSensorValue[2];
long lastPiezoSensorValue[2];
int currentFootstepValue;
int lastFootstepValue;
long currentFootstepTime;
long lastFootstepTime;
float averageFootSpeed;
long cummulativeFootSpeed;
long currentFootSpeed;
int footstepCount;
int running;

void setup() {
Serial.begin(9600);
lastPiezoSensorValue[0] = lastFootstepValue = currentPiezoSensorValue[0] = currentFootstepValue = analogRead(piezoSensor);
lastPiezoSensorValue[1] = lastFootstepTime = currentPiezoSensorValue[1] = currentFootstepTime = millis();
cummulativeFootSpeed = footstepCount = 0;
currentFootSpeed = averageFootSpeed = 3000;
pinMode(swooshHeatOutput, OUTPUT);
}

void loop() {

if (currentPiezoSensorValue[1] % 3000 == 0) {
averageFootSpeed = 2000;
cummulativeFootSpeed = 0;
footstepCount = 0;
}

lastPiezoSensorValue[0] = currentPiezoSensorValue[0];
lastPiezoSensorValue[1] = currentPiezoSensorValue[1];
currentPiezoSensorValue[0] = analogRead(piezoSensor);
currentPiezoSensorValue[1] = millis();

//running = constrain(averageFootSpeed, minimumRunSpeed, maximumRunSpeed);
if (averageFootSpeed <= minimumRunSpeed ) {
digitalWrite(swooshHeatOutput, HIGH);
digitalWrite(runningIndicatorLED, HIGH);
}
else {
digitalWrite(swooshHeatOutput, LOW);
digitalWrite(runningIndicatorLED, LOW);
}

/*if (averageFootSpeed > minimumRunSpeed) {
analogWrite(swooshHeatOutput, 0);
}
else if (averageFootSpeed <= minimumRunSpeed && averageFootSpeed > mediumRunSpeed ){
analogWrite(swooshHeatOutput, 85);
}
else if (averageFootSpeed <= mediumRunSpeed && averageFootSpeed > maximumRunSpeed ){
analogWrite(swooshHeatOutput, 128);
}
else if (averageFootSpeed <= maximumRunSpeed) {
analogWrite(swooshHeatOutput, 255);
}*/

if ( (currentPiezoSensorValue[0] - lastPiezoSensorValue[0]) > footstepValueThreshold) {
//Serial.println(currentPiezoSensorValue[0] - lastPiezoSensorValue[0]);
if ( (currentPiezoSensorValue[1] - lastFootstepTime) > footstepTimeThreshold) {
//Serial.println(currentPiezoSensorValue[1] - lastFootstepTime);

lastFootstepValue = currentFootstepValue;
lastFootstepTime = currentFootstepTime;
currentFootstepValue = currentPiezoSensorValue[0];
currentFootstepTime = currentPiezoSensorValue[1];
currentFootSpeed = currentFootstepTime - lastFootstepTime;

if (currentFootSpeed > footstepTimeThreshold) {
footstepCount += 1;
cummulativeFootSpeed = cummulativeFootSpeed + currentFootSpeed;
averageFootSpeed = cummulativeFootSpeed / footstepCount;
Serial.print(”Step: “);
Serial.print(footstepCount);
Serial.print(” “);
Serial.print(”Current Step: “);
Serial.print(currentFootstepValue);
Serial.print(” “);
Serial.print(”Last Step: “);
Serial.print(lastFootstepValue);
Serial.print(” “);
Serial.print(”Current Time: “);
Serial.print(currentFootstepTime);
Serial.print(” “);
Serial.print(”Last Time: “);
Serial.print(lastFootstepTime);
Serial.print(” “);
Serial.print(”Current Foot Speed: “);
Serial.print(currentFootSpeed);
Serial.print(” “);
Serial.print(”Average Foot Speed: “);
Serial.println(averageFootSpeed, DEC);
//Serial.print(currentPiezoSensorValue, DEC);
//Serial.println(”,”);
}
}
}
}
<<

<< Piezo sensor>>

After an experiment of an accelerometer sensor, we recognized that it is not easy because we had to make a standard which value is walking and which value is running based on acceleration. So, we decided to change a accelerometer sensor into piezo sensor.

What is the piezo sensor?

piezo-buzzer.jpg piezo.jpg A piezoelectric sensor is a device that uses the piezoelectric effect to measure pressure, acceleration, strain or force by converting them to an electrical signal.

It’s a charge amplifier as well. It’s an electronic amplifier which convert an input charge( stored on a capacitor, or significantly capacitive transducer) to a voltage output. -wikipedia

Comments