Author Archives: huanw135

Final Project Documentation

Concept + Goals: 

  • Constructing an artificial, small-scale futuristic ecosystem under the scenario when synthetic biotic organisms are largely penetrated in human beings’ daily life.
  • This ecosystem will trigger interactions between human and simulated biotic organisms to raise a discussion of individual bio existence and the ecosystem at a large scale.
  • A system that humans are party to, but not sovereign over.

Intended audience: I imagine this piece living in the gallery, the structures in this piece are seen not as inanimate, fixed objects, but as living entities, capable of regeneration and growth. The intended audience should be someone who is interesting in immersive installation environment and synthetic form.

Precedents: 

A breath of life by Fraser Ross | Atelier

Muscle wire projects by Jie Qi

7K: new life form

Description of the project:

A.Sketch

Before going into the implementation stage, I created sketches to illustrate the possible project scale and appearance. (Fig1.1)The outlook of the installation should look organic enough to make people think of cells or life form etc. Transparent glass and the customized base are being considered as important elements in this project, for both how it looks like as well as the setup detail. In Fig1.2., this diagram shows how this installation will be set up, and the layout of the components including robotic plants, camera or sensor, and projector. The camera will be used to capture audiences movements and the projector will be used to create an appropriate visual outcome. Since this is an interactive installation, the main input will be audience’s movement, which will trigger the robotic plants to respond to it. Robotic plants will be influenced by human factor, but will still have the random movement like real plants.

Figure 1.1. Project appearance sketch

Figure 1.2. Project setup and layout

B. Technique

To generate a movement that is intriguing enough, the sensors in electronic components and multi-platforms are required. I want to connect Unity, Arduino, and Kinect these three platforms to complete the interaction. For each execution detail:  Kinect– using the infrared camera to detect audience’s body skeleton and find the x, y, z-axis. Unity– using the c# program to enable the trigger function when audiences touch the certain area  (there are five little yellow people models spread on the screen representing different location). When the models being triggered, Unity will send a byte to the serial monitor in Arduino. Arduino– in code, there is a processing message which will start to heat up the wire and rotate the motor, by typing “on” in the serial monitor, the function loop will start to run. To conclude, by connecting these three different platforms, I can achieve an indirect interaction without using a sensor. For the final setup, the audience will not see the unity interface so that they can just walk around, being captured by Kinect, and the robotic plants will move based on their movement without notice. The reason for putting all the technique together is to response the original idea for this project: a system that people can interact with in an indirect way.

C. Prototype and Playtest

Through making a physical prototype, the main material for making robotic plants is the radiant acrylic. This is an important design decision being made— the acrylic itself representing cheap and mass production like what we can see in CD or any plastic product. However, the shimmer visual effect makes the robotic plant look futuristic, and it also fits into the context of  “largely penetrate into our daily life”. I use laser cutting for customizing each plant, and also electronic components such as muscle wires, motors to create different movement.

Figure 1.3. the first physical prototype with radiant acrylic and stepper motor

After the very first prototype, I found out the movement of the motor is too stiff, and I need to find the other components that can create natural movement. The muscle wire is what I chose in the end. It is a unique type of wire that acts like the muscles in our bodies. Muscle Wire is an extremely thin wire made from Nitinol (a nickel-titanium alloy) that is known for its ability to contract when an electric current is applied. I incorporated this component to my project, and there are some interesting precedents created with muscle wires that I got the inspiration from. For example, A breath of life by Fraser Ross, using Flexinol, recycled electronic components, specimen jars, these “flower lamps” reside in a state of death until human interaction — a breath — brings them to life for a brief moment. The blowing is the appropriate interaction as trees and plants grow on carbon dioxide. Every living thing needs a home, plants change themselves to survive in their habitat.

Figure 1.4.”A Breath of Life by Fraser Ross.”, 2010. 

For my own creation with muscle wire, I tested out several prototypes to make a real-life look based on the shape of real plants, like a leaf, flower, and Venus flytraps (FIG 1.5). Using muscle wire is the most challenging part of this project, it’s really difficult to manage the right amount of electricity and there are countless wires to put together. However, after series of tests, I put all the components together and add the light effect to see the real set of the project and then conducted a primary playtest. At this stage, the primary project form and the aesthetics have already come out.

 muscle wire movement prototype- venus flytrap 

Based on the feedback I got from playtest, there are two aspects needed to be improved: first, the movement of wire and plants are not that clear, the movement is sparse and too gentle to notice. Second, the layout of plants are not well-formalized, they looked like individuals rather than a whole ecosystem.

D. Finalise

Consider the setup for the exhibition, I made a customize stand to store projector and all the electronic components inside. One another important decision is that I used transparent acrylic to reveal the wires and the circuits of this projects because I want people to feel the technology behind this piece as if those wires are the origin of robotic plants. Also, the depth camera used to capture human beings’ movements are decorated with robotic plants in order to make it fit into the project.

Figure 1.5. decoration on the depth camera

Reflection

The criteria used to evaluate this project is mainly based on visitors’ behavior during the major major exhibition. The most frequent feedback I got from this project is that people enjoy its aesthetics, including lights and handcraft robotic plants. At the same time, people do feel want to interact with it and see what will happen, and they will want to dig more into the concept behind.  The whole interaction takes people for 3 mins on average. Most of the feedbacks are positive, but one thing I think should be improved is that some people will neglect the movement because it happens randomly and there is no clear light resource to light up each component. The future iteration of this project will be the reassessment of the project scale, maybe the large scale living system can provide a more immersive experience.

 

List of components:

  • Arduino Mega2560

(there are more pins on Mega which enables me to connect 6 muscle wires, 1LCD, 8 LED lights, and 1 stepper motor, the total number of pins in need is 34. )

a nice substitution for Kinect, lightweight, easy to set up, and compatible with Mac environment. I was supposed to use Kinect 2 to track people’s skeleton but my windows laptop broke the night before the exhibition, so I change unity to openframework and Kinect to depth camera to create the desired outcome.

I bought tons of them on sparkfun. There are different specs and I think 0.012″ looks good, not too thin or too thick.

  • tip120
  • 330-ohm resistor
  • 12v stepper motors
  • motor shield for stepper motor
  • 12v 6a power sourcex2 – each for heating up 3 muscle wires

Presentation slides and Process:

    

Additional resource: For this project, I tried to gather all the useful information about using muscle wires, and I put them all in a google doc

Code: Code in Arduino on the GitHub

WEEK12-Further Iteration

The goal of the project- Try the basic set up for final project form, and two robotic plants with different motion included. One is made with the stepper motor(Ferns) and the other one is muscle wire(Flytrap). In this iteration, I want to test the light and visual effect of this project as well as differentiate random and systematic movement of robotic plants. Also, one important implementation of this iteration is to add the interaction part, using Kinect and Unity to communicate with Arduino, audiences can interact with this set by walking around in the room.

Main components:

Arduino UNO

Xbox Kinect 2

0.012mm muscle wires

tip120

330-ohm resistor

12v stepper motors

motor shield for stepper motor

12v 6a power source

How it works:

For the demo can see the playtest video below. Kinect– using the infrared camera to detect audience’s body skeleton and find the x, y, z-axis. Unity– using the c# program to enable the trigger function when audiences touch the certain area  (there are five little yellow people models spread on the screen representing different location). When the models being triggered, Unity will send a byte to the serial monitor in Arduino. Arduino– in code, there is a processing message which will start to heat up the wire and rotate the motor, by typing “on” in the serial monitor, the function loop will start to run. To conclude, by connecting these three different platforms, I can achieve an indirect interaction without using a sensor. For the final setup, the audience will not see the unity interface so that they can just walk around, being captured by Kinect, and the robotic plants will move based on their movement without notice.

Circuit and CODE:

The following circuit includes the detail for connecting muscle wire correctly, note that there are two sides of muscle wires, one side should go to the middle leg of the transistor(TIP 120), and the other should go to the positive side, which is 12v 6a (+) in this circuit. The other two legs of transistor go separately to GND & resistor- Pin, the reason for pin leg output can actually control the transistor and open the circuit for electricity to go through the wire. Be very aware of the external power source, don’t connect it to Arduino unless you want to burn it. Just connect positive and negative side to breadboard like how you use 9V battery to power up the circuit.

CODE in Arduino:

#include <Stepper.h>

const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

String buf;
char c;
int flower=6;
int flower1=4;
int flower2=5;
int led = 2;

void setup() {
pinMode(flower,OUTPUT);
pinMode(led, OUTPUT);
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}

void loop() {
while (Serial.available() > 0) {
c = Serial.read();
if (c == ‘\n’) {
processMessage();
buf = “”;
} else {
buf += c;
}
}
}

void processMessage() {
Serial.println(“processMessage”);
if (buf.equals(“on”)) {

//0.005″wire
digitalWrite(flower,HIGH);
digitalWrite(led,HIGH);
//
digitalWrite(flower1,HIGH);
digitalWrite(flower2,HIGH);
delay(3000);
digitalWrite(flower,LOW);
digitalWrite(led,LOW);
digitalWrite(flower1,LOW);
digitalWrite(flower2,LOW);
delay(8000);

for(int i=0;i<6;i++){
// step one revolution in one direction:
Serial.println(“clockwise”);
myStepper.step(stepsPerRevolution);
delay(500);

// step one revolution in the other direction:
Serial.println(“counterclockwise”);
myStepper.step(-stepsPerRevolution);
delay(500);
}

}
}

Problem encountered:

I spent a lot of time to caculate and test the right amount of electricity for the wire. Using the specs chart of wire and the formula of voltage caculation from computational craft class slides really help me alot.

 

For the playtest plan, I record a simple demo video to show the interaction. I would like to know people’s reaction toward the movement of plants, it’s interesting to look at or not. Also, I am curious about if they are aware of what interaction they are adding up to this system.

WEEK11-final project prototype

1. Physical object prototype with EL wire and 12v Stepper motor:

Using radiant acrylic as the main material, and then laser cutting the shape of robotic plants. To make it move I simply used a 12V stepper motor for a quiet and smooth rotation. There was a hole on the customized base of the plant which enables the plant to sit on the motor while rotating. To make it looked nice under the darkroom environment, I use EL wires to wrap the surface of the motor. Before using EL wire to create high contrast look, the plant looks like what showed below:

-Findings: After this prototype, I started to worry about how to create an interesting movement that will intrigue audiences.  Stepper motor is quiet enough for a subtle movement, but I definitely need something more organic or mysterious.

2. Muscle wire test: 

I bought a 1feet, 1mm muscle wire from Tinkersphere, and used 5a 10v power source to heat it up by attaching to the alligator clips. The movement of wire is vicious! I tried to build a circuit using photocell and Mosfet to heat up the wire based on the light amount received by the photocell. I found the reference from a book Arduino Wearables (Technology in Action) 1st ed. Edition, there is a chapter inside talking about shape memory wires. However, the circuit doesn’t work because of the insufficient electricity from the 9V battery. After a long run research, I found out the 1mm muscle wire is too thick to heat up without a large amount of electricity. After this prototype, I started to seek ideal components for my project including 0.012 mm muscle wires, tip 120 transistor, and 12v power source. The next step will be testing out the most stable circuit to generate the movement I want.

WEEK10-final project description and precedents

Final project description: 

  • I want to construct artificial, small-scale futuristic ecosystem under the scenario when synthetic biotic organisms are largely penetrated in human beings’ daily life.
  • This ecosystem will trigger interactions between human and simulated biotic organisms to raise a discussion of individual bio existence and the ecosystem at a large scale.
  • The interaction between audiences and this project should be indirect, which can echo the key concept for this project- A system that humans are party to, but not sovereign over.

Interaction/systems diagram:

Timeline with milestones: 

week 1 (4/3-4/8)- basic functionality

  • Communication between Arduino and  unity
  • Projection mapping visual test
  • Decision making: materials, project scales
  • Modeling the possible form of plants

week 2 (4/9-4/15)- Prototype

  • robotic plants prototype
  • project set up prototype
  • User test

week 3(4/16-4/22)- Iterations

  • modify the detail based on feedback
  • building circuits

week 4(4/23-4/30)-  Finalize

  • check the detailed implementation of project based on the exhibition place, equipment
  • troubleshooting physical computing part
  • polish the final project form

Precedents: 

EPIPHYTE CHAMBER by Philip Beesley

UNMAKEABLELOVE by Sarah Kenderdine & Jeffrey Shaw

petting zoo by minimaforms

sensory desserts by Erika Marthin 

 Synthetic Polleniser  by Michael Candy

 

WEEK5 light up led with ultrasonic sensor and photocell

The goal of this assignment:

Create a circuit with ultrasonic sensor and photocell to fulfill the following requirements:

  • If the environment is bright, the LED won’t light up.
  • If the environment is dark but the distance is far away, the LED won’t light up.
  • If the environment is dark and the distance is less than__, the LED will light up.

List of components:

  • arduino Uno
  • 220-ohm resistorx1 (led)
  • 10k resistorx1 (photocell)
  • photocellx1
  • ultrasonic sensorx1
  • wires and breadboard

How it works:

How photocell works is to change analog voltage based on the amount of light received by the sensor. As the light level increases, the analog voltage goes up even though the resistance goes down. For the ultrasonic sensor, using echo and trig pin to detect the soundwave and then calculate the distance between object. Put all together in this circuit, the photocell will detect the light amount in the environment at first, and if it’s bright enough (depend on each photocell, the number change dramatically because it’s super unstable) the led won’t light up. If the distance between the object(hand) and ultrasonic sensor is less than 10cm, the led will light up. However, even if you cover the whole photocell to make the environment dark, the led won’t light up because of the && function in code. You still need to be close enough to the distance sensor to make it work.

Circuit:

CODE in Arduino : 

const int trigPin = 13; //naming a constant value / giving a variable name / #define acts as a find and replace
const int echoPin = 12;
const int yellowLed = 8;
const int photocell = A0;
int light;

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //trigPin is sending out the signal
pinMode(echoPin, INPUT); //echoPin is retrieving information, therefore it is INPUT
pinMode(yellowLed, OUTPUT); //trigPin is sending out the signal
pinMode(photocell, INPUT); //echoPin is retrieving information, therefore it is INPUT

}

void loop() {
long duration, distance, light;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1; //Time it took for the echo to be received and divided in half then divided by the speed of sound

light = analogRead(photocell);

if(light < 700 && distance < 10){

// Serial.println(“work”);
digitalWrite(yellowLed, HIGH);
// wait for a second
}
else{
digitalWrite(yellowLed, LOW);
}
// Serial.print(distance);
// Serial.println(” cm”);

Serial.println(light);
// Serial.println(distance);

}

Problem:

The photocell is really unstable, I tried connecting two different photocells at first, and kept getting 1023 in my serial monitor. Only after I moved to somewhere really bright and opened up the third brand new photocell then I got the reasonable number from the serial monitor.

 

WEEK 8 MOTORS

This week is to explore different motors. The first part of the assignment is to shortly describe the differences between DC motors, servo motors, and stepper motors. Basically, the DC motor is the one good for continuous spinning. It runs at a high RPM (revolutions per minute) and can be used for something like fan and blender. Servo motor is easy to connect and can generate high performance. The advantage of the servo is to control the rotation degree from 0-180. Otherwise, if the rotation degree exceeds 180, it will turn counterclockwise. General usage for servos can be robotic arms while its movement is rude along with the noisy sound. Stepper motor is famous for its precise controllability of rotation angles. Unlike servo motor, it can go around 360 degrees with its fractional increments. Stepper motor is good for steady, precise and quite movement such as the mechanism of 3d printing machines.

For the self-exploration about motors, I choose DC motor to make a hand blender.

The goal of the project: Using the potentiometer to control the speed of DC motor and make a mini blender.

Components:

1) Arduino

2) D.C. motor

3) NPN transistor TIP120 X1

4) Rectifier Diode X1 (I used 1N4001)

5) 1* 220 ohms resistor

6) 10K Potentiometer

7) Breadboard

8) Jumper wires

How it works: 

Using the potentiometer( the adjustable resistor ) to change the speed of DC motor, as the value of potentiometer goes up, the motor will rotate faster.  Circuit sketch: connect 1N4001 to pin3 and potentiometer to a0.

Code:

Very simple code, remember to transfer the value of potentiometer from 0-1023 to 0-255 to fit the capability of the output pin. you can use map function but I just roughly divided it by 4.

Problem: the most difficult part is not about the circuit, but the blender itself. Because the rotation speed can be really fast, my handmade blender was thrown out by the motor after 3 sec and I have to tight the blender with iron wire to the motor for several times.

 

 

WEEK7-IR LED detector

The goal and description of this project:

instruction for wireless assignment is to choose one of the wireless topics covered in class and put it to practice for use in everyday life. I chose Infrared LED (IR) as the topic I want to explore. With the IR(Emitter) and Photodiode(Receiver), I can create a simple IR detector by change the amount of infrared light received by the photodiode with my hand or any barrier to light up the indicator led. This simple idea is widely used in our daily life, for example, alarm system to detect the intruder.

Components list:

  • arduino UNO x1
  • breadboardx1
  • photodiode x1
  • IR LED x1
  • LED x1
  • resistor 300ohm x2 (IR, LED)
  • resistor 10k x1 (photodiode)
  • wires

How it works:  

An IR sensor consists of two parts- the emitter circuit and the receiver circuit. This is collectively known as a photo-coupler or an optocoupler. The emitter is an IR LED and the detector is an IR photodiode. The IR photodiode is sensitive to the IR light emitted by an IR LED. The photodiodes resistance and output voltage change in proportion to the IR light received. This is the underlying working principle of the IR sensor.

The type of incidence can be direct incidence or indirect incidence. Indirect incidence, the IR LED is placed in front of a photodiode with no obstacle in between. In indirect incidence, both the diodes are placed side by side with an opaque object in front of the sensor. The light from the IR LED hits the opaque surface and reflects back to the photodiode. In this project, I found out the direct incidence is way more effective so I put emitter and receiver in front of each other.

circuit and code :

the code is very simple, using the boolean function to detect and light up detector LED

Troubleshooting:

note that photodiodes and emitter LED can look exactly the same (transparent led), don’t mess them up. Also, to get the best result, do put receiver and emitter as close as you can.

WEEK4-combination lock

Description of the project:

The goal of this assignment is to build your own combination locker with led and buttons. For me, I want a combination locker which can use keypad numbers as input and can be controlled by my cell phone. So I choose to use 1Sheeld module and it’s application to build my own combination locker.

List of components:

  • 1sheeld– a wireless shield which can easily attach to Arduino, with the customized application, you can use your cell phone to control Arduino.
  • Arduino Uno x1
  • Breadboardx1
  • 200-ohm resistor x1
  • Red led x1
  • jumper wires

How it works:

first of all, attach the 1sheeld to Arduino, and then connect LEDs to the pin assigned. After uploading the code to Arduino and 1sheeld. You can open up Bluetooth to search 1sheeld and connect to it. Then open the keypad shield in the 1sheeld application, enter the password you set to open the lock. In this project, I used red led to indicate “the locker is not opened”, and it was set it to be lighted up as default. When the user enters the right password, the red light should be turned off.

In the code part, using flag function (in here I put “iterations” to represent it ) to set your password. I set the password to “1220”, and every time you press the right keypad the flag will plus one. After fulfilling the 4 iterations (0~3), the red led should turn off.

Because of the flag function, the four-digit password should be checked each time, the wrong input such as “4593”, “2340” will not let the red light go off. See the following code for the details:

Any problems you encountered and/or solved:

My original intention is to use two different led lights, a red one for wrong and a green one for right. But no matter how hard I tried, 1 sheeld seems to not able control two LEDs at all. What I tried to debug including change all the components including the breadboard, LEDs, wires, and different pin. In the end, I only use one led to represent the lock status.

 

WEEK2-LED CIRCUIT

This week is the flashlight assignment which I start from connecting several LEDs with 9v battery and resistors. Then tried to use button and potentiometer to turn on and off of led lights. Attached are circuits and photo for these explorations.

WEEK1-Fish on Wheels

Fish on Wheels is a very interesting Pcomp project invented by Dutch design collective Studio Diip.  They added wheels and sensors to a fish tank so that its inhabitant can drive it by swimming in a certain direction. The tank itself was controlled by Arduino, and the main method used to detect fish’s movement is computer vision, with the camera on the top of the tank.

How it works – As the fish swims around the transparent tank, a webcam positioned above the water tracks its movements – detecting the contrast between the fish and the bottom of the tank – and relays them to the Arduino. Using programming to mimic the fish’s movements by driving the vehicle in the same direction.

Fish on Wheels by Studio Diip

Image source and related article from Dezeen

I like this project because there is a goodwill behind it – “Our pet fish have always been limited to their water holding area known as ‘the fish tank’,” said Studio Diip, “In an attempt to liberate fish all over the world, the first self-driving car for fish has been developed.” Overall, the method used in this project is really simple but the outcome is humorous and inspiring.