Making Furniture Interactive

December 17, 2007

Kipum Lee Final Project

Filed under: Final Project,Kipum Lee — Kip @ 6:23 pm

Abstract:I am interested in how products communicate back to us in subtle ways. An exercise machine is something people invest in but many times, ends up not being used. If it has not been activated within a certain “grace period,” the machine sends the user an email asking for interaction.

Materials:Arduino microprocessorMacbook (for power)simple switchbreadboard22 gauge solid wires1 150 ohm resistorrubberbands or fishwire (to wrap around the exercise machine)1 mechanical exercise machine1 busy/lazy person who wants to work out but is in need of a reminder

Please watch the video to see the process and explanation:

For the full downloadable video file (55.9 mb): www.kipworks.com/mfi/kipumlee_mfi_finalproject.mov

For the downloadable poster that was used during the final presentation (1.1 mb): www.kipworks.com/mfi/kipumlee_Poster.pdf

Learnings:It was good to prototype on my own and take things outside of the conceptual world. Although it was difficult learning these new programs and how things actually work, I learned the basics of how to put things together and test out an idea. I hope to continue working with physical computing and study the subject more to get more proficient with the materials and coding.
(more…)

November 4, 2007

Kip & Jamin Final Proposal Presentation

Filed under: Final Project,Jamin Hegeman,Kipum Lee,Proposals — Kip @ 8:07 pm

Abstract:
The staff at the UPMC Neurosurgery Clinic have difficulty locating each other when they are in the room with a patient. Several tracking systems have been attempted, but all have failed because they require active engagement. We propose a more automated indicator of location using sensors to detect individuals and display location outside of the room using a display of information, most likely through ambient lights.

Kip & Jamin Final Proposal

October 27, 2007

Exercise 6: Kipum Lee, “Spin It!”

Filed under: Exercise 6: Motorized Mechanical Movement,Kipum Lee — Kip @ 11:49 pm

I started from scratch for Exercise 6. I built custom gears out of aluminum rods, nails, and aluminum wires. Also, the structure for the “toy” was built from foamcore and thumbtaks. I first tried to use a 3V DC motor, but it spinned too fast and lacked power. With the new geared motor, it definitely has more power to get the job done.

Instead of using a diode, I used an LED instead because functions the same way as a diode (hence the term, light-emitting diode). This was realized after a trip up to the code lab and through Mark’s advice.

It was a challenge trying to put together the motor with the rotational gears. Since the rotating axis/plastic has a unique shape, I had to figure out a way to fit the shape into my rotating aluminum apparatus. This was quite a challenge and involved a combination of wood, plastic and nails to get the right part made.

As of right now, a photosensor at the top of the toy is the switch that turns on and off the motor. I learned to constantly reiterate the parts and taking the right measurement for the parts was key to getting a smoothly working toy.

Aluminum Small Gears Gear Attachment LED as diode Battery PoweredPhotosensor

Code:

(more…)

October 23, 2007

Exercise 5: Kipum Lee

Filed under: Exercise 5: Mechanical Movement,Kipum Lee — Kip @ 12:12 am

I used a template of an eagle flapping its wings from ceracera. I was interested in using paper as a medium because of its delicacy and also because I thought it would save me some time. Ironically, folding the paper to make 3d objects with sufficient structural stability and strength required much cutting, folding, gluing, and assembling. It took a good 6-7 hours from printing to the final product:
Image and video hosting by TinyPicImage and video hosting by TinyPicImage and video hosting by TinyPic

I was trying to see how the template maker actually went about making the final piece. My conclusion is that he/she first makes it using his/her own creative judgment. Afterwards, the piece is taken apart and explained through reverse engineering. This is my conclusion because it would be very difficult to first make the template parts and then see how the final assemblage turns out. I’ve also seen on another website a japanese creator make an elephant out of paper, rip it apart carefully, tape the ripped pieces, and then scan each part to make the template accessible for everyone as well as for personal documentation so he can remake the elephant at a later time.

From a paper designer, injan.net (Example of Reverse Engineering):
Image and video hosting by TinyPicImage and video hosting by TinyPicImage and video hosting by TinyPicImage and video hosting by TinyPic

With the learning from the eagle, I went ahead and tried to play around with some other medium, this time aluminum pipes & wires, to start Exercise 6. I’ve started to make gears with these pipes, nails, and wires:
Image and video hosting by TinyPic

October 3, 2007

Kipum Lee’s Final 4 States

Filed under: Exercise 4: Four State Machines,Kipum Lee — Kip @ 11:57 pm

I have 3 sensors and 4 states.

1st State: One yellow LED is lit, w/ the light intensity proportional to the amount of light entering sensor 1 (on board).

2nd State: With the press of the red switch, the yellow LED starts to blink. Covering the other sensor on the yellow straw will bring the LED back to the 1st State.

3rd State: From the 2nd State, covering sensor 1 on the board will make it go to the 3rd State where the 3 red LED start to have a light show. Once again, covering the sensor on the yellow straw will bring the yellow LED back to the 1st State.

4th State: To go to the 4th State, simple press the red switch from the 3rd State. To go back to the 1st State, cover the sensor on the yellow straw.

Also, to go immediately to the 4th State from the 1st State, cover both photosensors (on yellow straw as well as the one on the board).

(more…)

September 19, 2007

Kipum Lee’s Exercise 3

Filed under: Exercise 3: Four States,Kipum Lee — Kip @ 1:11 am

Playing around with the photosensor, I made the sensitivity change the state of an orange LED from “sleep” to “arousal” by simply changing from “off” to a “fading in.” When more light was obstructed from the sensor, this triggered a blue LED (on the straw) to start blinking.

Another state I played around with is just LED’s lighting up in consecutive order. I’m not sure as to how I’m going to tie it into the other 3 states, but I’m just happy that they’re working for now.

CODE:
//Kipum Lee
//Exercise 3

int value = 0; // variable to keep the actual value
int ledpin = 9; // light connected to digital pin 9

int state = 1; // 1=sleep, 2=attract, 3=arousal, 4=reward

int ledMeter1 = 7;
int ledMeter2 = 5;
int ledMeter3 = 4;
int ledMeter4 = 3;

//for state 4
int potPin = 2; // select the input pin for the potentiometer
int val = 0; // variable to store the value coming from the sensor
int onoff = 0; // 0=fading off, 1=fading on, 2=blink
int state4Pin = 10;

void setup()
{
pinMode(ledpin, OUTPUT); // turns on LED in pin #9 PWM
pinMode(ledMeter1, OUTPUT); // turns on LED in pin #7
pinMode(ledMeter2, OUTPUT); // turns on LED in pin #5
pinMode(ledMeter3, OUTPUT); // turns on LED in pin #4
pinMode(ledMeter4, OUTPUT); // turns on LED in pin #3
pinMode(state4Pin, OUTPUT); // turns on LED in pin #10 PWM
}

void loop()
{
state = 4; // manually turning on state 4

if(state == 1) // if state 1 …
{
sleep(); // state 1 = sleep
}
else if (state == 2)
{
attract(); // state 2 = attract
}
else if (state == 3)
{
arouse(); // state 3 = arouse
}
else if (state == 4)
{
reward(); // state 4 = reward
}
}

//state: sleep = 1
void sleep()
{
for(value = 0 ; value =0; value-=5) // fade out (from max to min)
{
analogWrite(ledpin, value);
delay(30);
}
}

//state: attract = 2 // blinking
void attract()
{
for(int i=0; i< 3;i++)
{
analogWrite(ledpin, 255);
delay(300);
analogWrite(ledpin, 0);
delay(300);
}

}

//state: arouse = 3
void arouse()
{
digitalWrite(ledMeter1, HIGH);
delay(300);
digitalWrite(ledMeter2, HIGH);
delay(300);
digitalWrite(ledMeter3, HIGH);
delay(300);
digitalWrite(ledMeter4, HIGH);
delay(600);

digitalWrite(ledMeter4, LOW);
delay(300);
digitalWrite(ledMeter3, LOW);
delay(300);
digitalWrite(ledMeter2, LOW);
delay(300);
digitalWrite(ledMeter1, LOW);
delay(600);
}

//state: reward = 4
void reward() {
val = analogRead(potPin); // read the value from the sensor
if(val < 90 && onoff == 0) { //turns on LED when light is off. change to make it turn on with light
for(value = 0 ; value = 100 && onoff == 1) { // “&&” means all these have to be true
for(value = 255; value >=0; value-=15) // fade out (from max to min in multiples of 15)
{
analogWrite(ledpin, value);
delay(20); // waits for 20 milli seconds to see the dimming effect
}
onoff = 0; // 0 = turns off LED
}
else if (val < 30 && onoff == 1) {
for(int i=0; i< 3;i++)
{
analogWrite(state4Pin, 255);
delay(300);
analogWrite(state4Pin, 0);
delay(300);
}
onoff = 1;
}
}

September 11, 2007

Kipum Lee’s Exercise 2:

Filed under: Exercise 2: Add a Switch,Kipum Lee — Kip @ 10:08 pm

Candle | LED Switch
How the candle switch works:
As the candle’s wax burns, the paper clip, connected to ground, sinks lower and lower, finally touching the base of the candle (aluminum) which connects to to the other candle, turning the LED on the other candle. This is one way to compare the two types of “lights” as well as having a feedback mechanism, letting someone know when all the wax has been burned.

Photosensing LED:

Photosensing LED’s with a quick fade in/out:

Code was modified from an arduino tutorial with the help of fellow classmate, Jamin Hegeman:
/*
* AnalogInput
* by DojoDave
*
* Turns on and off a light emitting diode(LED) connected to digital
* pin 13. The amount of time the LED will be on and off depends on
* the value obtained by analogRead(). In the easiest case we connect
* a potentiometer to analog pin 2.
*
* http://www.arduino.cc/en/Tutorial/AnalogInput
*/

int potPin = 2; // select the input pin for the potentiometer
int ledPin = 9; // select the pin for the LED
int val = 0; // variable to store the value coming from the sensor
int value = 0; //variable to keep the actual value
int state = 0; //state variable. 0 = off.

void setup() {
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
Serial.begin(9600);
}

void loop() {
val = analogRead(potPin); // read the value from the sensor
if(val < 90 && state == 0) { //turns on LED when light is off. change to make it turn on with light

//digitalWrite(ledPin, HIGH); // turn the ledPin on
for(value = 0 ; value = 100 && state == 1) {
//digitalWrite(ledPin, LOW); // turn the ledPin off
for(value = 255; value >=0; value-=10) // fade out (from max to min)
{
analogWrite(ledPin, value);
delay(5);
}
state = 0;
}
//delay(val); // stop the program for some time
Serial.println(val);
}

September 5, 2007

Kipum Lee’s Exercise 1:

Filed under: Examples,Exercise 1: What Is?,Kipum Lee — Kip @ 10:02 pm

Grass Chair
A “Grass Chair” you can purchase. There are no sensors or electrical components, but it can be an interesting experience.

Interactive Toilet Seat
Might be a fun lavoratory experience, especially in the dark.

Not So White Wall
“Not So White Wall,” Interactive Wallpaper. Thermal Display Wallpaper for Prada. A Masters Thesis project of Dario Buzzini when he was at Interaction Design Institute at Ivrea. You can read emails or SMS and also view images taken with your mobile phone camera.

Millenium Park the “Bean”
Narcissus
Two pictures from my summer in Chicago. This is a picture of the $12 mil “bean” in downtown Chicago. I took a shot of a little boy interacting with it. This is an example of a massive piece of artifact with no defined purpose, yet has captivated many visitors and invited a form of interaction.

Spewing water
Another picture I took this summer. In the same Millenium Park in Chicago, two sets of interactive walls that have animated human faces which spew out water in interval times. It is great to watch people just come and play in this small arena.

September 4, 2007

Kipum Lee’s Straw Lights

Filed under: Exercise 0: Make A Lamp,Kipum Lee — Kip @ 11:23 pm

First, I started off by playing with the arduino microprocessor and then manipulating some basic tutorial code.
Although I had a working code that slightly manipulated the tutorial code, today’s lesson from Mark was very helpful in understanding (at least vaguely) each line of the code.

Playing around with the delay as well as the three deltas, I got a red light that flickers very fast, a blue that pulsates similar to the heartbeat of someone who has just exercised, and a green that is slower, with the fading ins and outs a bit more noticable.

Click Image to Enlarge:
Making Just the Blue LED Work

This is a shot of all three LED’s working

Arduino & Breadboard

Code:
// Fading 3 LED’s
// 3 PARTS FOR EVERY ARDUINO PROGRAM: DECLARATION, SETUP, & LOOP
// a FADING LED program that uses a count-down timer to gradually dim and brigten an LED.
// modified MDG

// 4 variables
int timer_red = 255;
int timer_blue = 255;
int timer_green = 255;

int delta_red = 20; // Three deltas (amount to dim or brighten).
int delta_blue = 6;
int delta_green = 2;

int brightness_red = 0;
int brightness_blue = 0;
int brightness_green = 0;

int redledpin = 9; // LED’s connect to the three PWM pins on Arduino.
int blueledpin = 10;
int greenledpin = 11;

void setup()
{
//nothing for setup
}

void loop()
{
analogWrite (redledpin, brightness_red);
analogWrite (blueledpin, brightness_blue);
analogWrite (greenledpin, brightness_green);

delay (5);

brightness_red = brightness_red + delta_red;
brightness_blue = brightness_blue + delta_blue;
brightness_green = brightness_green + delta_green;

timer_red = timer_red – 1;
timer_blue = timer_blue – 1;
timer_green = timer_green – 1;

if (timer_red <= 0)
{timer_red = 255;
delta_red = delta_red * -1;
}

if (timer_blue <= 0)
{timer_blue = 255;
delta_blue = delta_blue * -1;
}

if (timer_green <= 0)
{timer_green = 255;
delta_green = delta_green * -1;
}

}

Create a free website or blog at WordPress.com.