Tuesday, September 29, 2009

Heliotropic organics 1

1 meeting: finger, fabric(organic solar cell), organic bio
2 hex, dimension
3 program: if -> direct

Meeting 1:
After brainstorming and analyzing the given problem description, we planned to challenge the opening-closing characteristics of heliotropic field demonstrated by Karl in Digital Project. A finger structure was adopted and controlled by servo to realize the dynamics. Covered by elastic fabrics, fingers will stretch the fabric to show the opening, showing an organic plant (like flower) to open depending on how strong the sunlight is.

Meeting 2:
We made a change from 2 fingers to 3 fingers so that a hexagon unit can form, which is easily repeatable for large fields.
One "hand" of 3 fingers, powered by 1 servo with one LDR. 3 hands are located at 3 non-neighboring sides of a hexagon cell, which is controlled by an Arduino.

Programing:
Michelle and I tried "if-else" but it turned out to be more and more complicated due to the presence of threshold. By browsing the language library, a mapping function was found to perfectly match our need: to map the intensity of light to the angle of servo rotation.

Friday, September 25, 2009

Smartsurface: 3D Sun Tracker: Phaeton v1.0, v1.5 and v2.0

The task in second class and the week after that is to build a light-tracking system using Arduino. It is expected to detect and follow the motion of external light source like sun or flash light. Photoresistors and programming are essential part in this project.

Our team did a great job in class time. We designed such a system (verson 1.0)that works accurately in a 2D plane with the time constraint is 1 hour! Then in the following week we refined the design via verson 1.5 to verson 2.0.

In-class prototype:version 1.0

One week product: version 2.0:

courtesy: Zilin Wang

In this project, I learned that, the design process is more accurately describled as Rapid Prototyping->Tesing->Reprototype->Trouble shooting, rather than simplely Design->Final Product. Besides trouble shooting again and again, re-design the big picture is sometimes necessary, although kind of painful.
But I like the people in our team. They are nice to work with and willing to help. They have nice idea but not force you to accept.



The code we are using: one servo controls the XY motion and the one controls the ZX(or ZY depending on how the coordinate system is defined.)
4 LDRs comparing their values so than to decide which direction to move to. One comparision is done in one loop.
A fuction to stop reading/processing signal when the servo rotates to one end is introduced .

void loop()
{
for(posY = 0; posY <>
{ // in steps of 1 degree
Yaxis.write(posY); // tell servo to go to posYition in variable 'posY'
delay(15); // waits 15ms for the servo to reach the posYition
}

for(posY = 46; posY <>
{ // in steps of 1 degree
Yaxis.write(posY); // tell servo to go to posYition in variable 'posY'
delay(15); // waits 15ms for the servo to reach the posYition
}

for(posY = 136; posY <>
{ // in steps of 1 degree
Yaxis.write(posY); // tell servo to go to posYition in variable 'posY'
delay(15); // waits 15ms for the servo to reach the posYition
}

for(posY = 180; posY>=1; posY-=1) // goes from 180 degrees to 0 degrees
{
Yaxis.write(posY); // tell servo to go to posYition in variable 'posY'
delay(15); // waits 15ms for the servo to reach the posYition
}
}

Saturday, September 19, 2009

class2: sun tracker


This task is to build circuits to detect and follow the motion of flash light based on Arduino system.

Time is 1 hour.

The second class was successful in terms of making something work in such a short time. Brainstorming still started aiming at “perfect as expected” but the crucial thing was we only treated this process as an understanding of a big picture. One straight forward configuration was picked up without much more brainstorming. It’s not time to be too confident in our creativities so that spend much time on how to be cool.

Upon knowing only 1 hour was available, we all decided to lower expectation from 3D tracking of sunlight to only 2D. Then we quickly divided into small groups. A way of keeping helpful communication (not judged by amount) is ask question on input/output and interfaces of different groups.

Later on (about 25 min left), as guided by John, we found previous work in google, which was only able to track in-plane 1D motion of the light. Thanks to our unconfidence, we disassembled this design and switch to the model given online, which was not innovative at all but practical.

And always leave enough time for testing and trouble shooting, which is always ignored by saying “it will work as soon as we finish a few more steps.”

Three things I learned from first two classes are: Don’t be idealist , to google the problem before DIY and, to have an eye on interfaces.


Here is our device: It can detect the 1D motion of flashlight and rotate accordingly.

two senor on each side and a cardboard in between is to reduce the interference of the binary detection

We give credit to some online hackers of this idea and useful coding.

Arduino: M rocks!

0. Starting wires, circuits and LED




1. Two LEDs controled by two signal inputs from Arduino

2. Smart surface!


3. Go blue!


4. Ready for M-rock?




5. Codes: the hardest part is timing

// This program follows the song We will rock you by Queen.
int redPin = 12; // Red LED connected to digital pin 12
int bluePin = 11; //blue LED connected to digital pin 11

void setup() // run once, when the sketch starts
{
pinMode(redPin, OUTPUT); // sets the digital pin as output
pinMode(bluePin, OUTPUT); // sets the digital pin as output
}

void loop() // run over and over again
{
delay(300);
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(400);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(350);
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(400);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(350);

digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(400);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(350);
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(500);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(250);

digitalWrite(redPin, HIGH); // sets the red LED on
delay(200);
digitalWrite(redPin, LOW); // sets the red LED off
delay(350);
digitalWrite(redPin, HIGH); // sets the red LED on
delay(700);
digitalWrite(redPin, LOW); // sets the red LED off
delay(1500);
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(500);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(350);
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(500);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(350);

digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(400);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(350);
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(500);
digitalWrite(bluePin, LOW); // sets the blue LED off
delay(250);

digitalWrite(redPin, HIGH); // sets the red LED on
delay(200);
digitalWrite(redPin, LOW); // sets the red LED off
delay(350);
digitalWrite(redPin, HIGH); // sets the red LED on
delay(700);
digitalWrite(redPin, LOW); // sets the red LED off
delay(1000);
digitalWrite(redPin, HIGH); // sets the red LED on
digitalWrite(bluePin, HIGH); // sets the blue LED on
delay(700);
digitalWrite(redPin, LOW); // sets the red LED off
digitalWrite(bluePin, LOW); // sets the blue LED off
}

class1: transporting sand

The task is to transport sand (about half a bucket) through 3 spatial location by constructing efficient, robust, economical structure, using cardboard, tapes and other stuff.

Tish first class is a big lesson. We spent an hour in brainstorming and ended up with a decision that team members design and make their own structures to transport sands. Everybody is smart and unwilling to abandon his/her idea. In our case, the right way to make the final product work is not picking the best idea, but to work on either one of the possible one and solve upcoming problems. To some extent, it’s stubborn to stick to one’s idea. Finally no one actually achieve a working setup.

One key issue here is to understand expectation by teachers. We are used to solve problems that are carefully designed so that it’s within our ability. But it’s not the case in smartsurfaces and probably in real world. Ultimate expectations are always idealized: fully automation, accurate distribution of sands, fast transportation and so on. We did not give it a second thought because we are so confident.

This lesson is very meaningful in future and , to some extent, answer's Prof. Shtein's question: why we always don't have enough time. It's not time's fault, but ours.

Monday, September 14, 2009

Welcome to Where is my smart surface



This is Yuming(Jason) Jiang's official blog for Smartsurface project at the University of Michigan-Ann Arbor.

"Smartsurfaces offers a collaborative, project-based learning experience in which artists, designers, architects and engineers come together to build physical systems and structural surfaces that have the capability to adapt to information and environmental conditions."--Course description

As a material engineer, I am interested to power the system using solar energy with environmental, health and commercial considerations.

My job as a research assistant in Prof. Goldman group is mainly about semiconductor nano-materials, which are promising in next generation thermoelectric (heat to electricity)and solar devices. This course is a great opportunity to realize sustainable energy by nanotechnology.

A more arresting aspect of smartsurface is its multidisciplinary team setup. As I benefitted from a multidisciplinary entrepreneurship project before, collaboration with people of different background like architects and artists will drive me to jump out the limits of conventional engineering methods and inspire more crazy possibilities in system design. I am eager to learn how artists and architects see, understand, analyze and solve problems.