leavesdrop

Made by Jacqueline Chien ·

A creative art piece that transforms the environment into the observer and the viewer into the observed.

Created: September 15th, 2015

0

Motivation

During a recent visit to the Phipps Conservatory and Botanical Gardens, I became intrigued with the idea that as people, we interact with our surrounding environment generally as if it were a static backdrop to our daily experiences.

Therefore I wanted to explore a scenario where instead the environment is the character experiencing us. Turning aspects from passive set pieces to active characters momentarily upsets the conventional relationship between humans and their immediate surroundings.

0

Design Choices

I decided to design a small flower installation because it would be both unobtrusive and can be featured both in an area full of actual plant life, or in most types of room as a simple decoration. Typically, flower arrangements go unnoticed fairly easily, so I wanted to create a way to draw attention through motion, noise, and lighting.

Colored lights make the flowers’ “emotions” less ambiguous. In their resting state, they reflect a calm blue and purple color. When the arrangement is startled or disturbed, the colors flip to red and yellow to show the flowers’ alarm and discontent.

0

A microphone is used to sense loud disturbances (more specifically, the abrupt opening or closing of a door) for the flowers to react to. As an aesthetic choice, I did not try to make the flowers as realistic as possible (e.g. using fake flower arrangements), to make them more eye-catching when they react. The flowers’ movement in response to sound mimics the same reaction people have to someone entering their space. For example, if a student is studying in a quiet room and a person walks into the room, his or her head will automatically turn towards the disturbance. To reproduce the same effect, the flowers swing to face the noise, startled. To further anthropomorphize the flowers, they quickly shudder as if shaking their heads in disapproval.

Overall, I wanted to design an art piece that made people conscious of the fact that they actively affect the environment they encounter.

0

Hardware

I used RGB LEDs for the flower lights. I purposefully chose insulated wire colors to not only reflect which pins they connected to on each LED, but also to generate an aesthetically pleasing rainbow pattern for the stem. I created five-petal origami flowers from white paper. The stem mounted on a servo with a 180 range of movement. The box encasing the hardware is made from balsa wood and wrapped in black paper to create contrast.

0

Software

The microphone input is subjected to a smoothing algorithm to filter out excess signals; the average input values (0-1023) are used to determine whether if a door is being opened or closed. I determined the rough threshold value to occur above ~250. An if-else statement controls the flowers’ resting state, color, and movement in response to values that occur above the threshold.

0
#include <Servo.h>

// servos 
Servo flwr1;

// servo positions
int startleCount = 0;
int blueCount = 0;

// RGB LEDs on PWN pins
const int flwrLED1R = 6;
const int flwrLED1G = 5;
const int flwrLED1B = 3;

const int flwrLED2R = 11;
const int flwrLED2G = 10;
const int flwrLED2B = 9;

// microphone
const int micPin = A0;

// smoothing
const int numReadings = 10;
int readings[numReadings];      // the readings from the analog input
int readIndex = 0;              // the index of the current reading
int total = 0;                  // the running total
int average = 0;                // the average
int mapAvg = 0;

void setup() {
  // attach servos to pins
  flwr1.attach(2);
  flwr1.write(0);

  // initialize LEDs to white
  pinMode(flwrLED1R, OUTPUT);
  analogWrite(flwrLED1R, 0);
  pinMode(flwrLED1G, OUTPUT);
  analogWrite(flwrLED1G, 0);
  pinMode(flwrLED1B, OUTPUT);
  analogWrite(flwrLED1B, 0);
  
  pinMode(flwrLED2R, OUTPUT);
  analogWrite(flwrLED2R, 0);
  pinMode(flwrLED2G, OUTPUT);
  analogWrite(flwrLED2G, 0);
  pinMode(flwrLED2B, OUTPUT);
  analogWrite(flwrLED2B, 0);

  // initialize microphone
  pinMode(micPin, INPUT);

  // initialize serial communication with computer:
  Serial.begin(9600);
  // initialize all the readings to 0:
  for (int thisReading = 0; thisReading < numReadings; thisReading++)
    readings[thisReading] = 0;
}

void loop() {
  // subtract the last reading:
  total = total - readings[readIndex];
  // read from the sensor:
  readings[readIndex] = analogRead(micPin);
  // add the reading to the total:
  total = total + readings[readIndex];
  // advance to the next position in the array:
  readIndex = readIndex + 1;

  // if we're at the end of the array...
  if (readIndex >= numReadings)
    // ...wrap around to the beginning:
    readIndex = 0;

  // calculate the average:
  average = total / numReadings;
  // send it to the computer as ASCII digits
  Serial.println(average);
  delay(1);        // delay in between reads for stability

  // map to values
  mapAvg = map(average, 0, 1023, 0, 255);

  // react to door opening or door slam
  if (average <= 200) {     
    // flwr1                     
    flwr1Color(255,0,0);

    // flwr2
    flwr2Color(0,255,0);

    // remove echo
    delay(175);

    startleCount = 0;
    
  } else {          
    // flwr1
    flwr1Color(0,0,255);

    //flwr2
    flwr2Color(0,255,255);

    if (startleCount != 1) {
      for (int i=0; i<=180; i+=1) {
        flwr1.write(i);
        delay(1);
      }

      delay(1000);
      flwr1.write(170);
      delay(150);
      flwr1.write(180);
      delay(125);
      flwr1.write(170);
      delay(125);
      flwr1.write(180);
      delay(125);
      flwr1.write(170);
      delay(125);
      flwr1.write(180);
      delay(125);

      for (int i=180; i>=0; i-=1) {
         flwr1.write(i);
         delay(20);
      }

      // reset
      startleCount = 1;
    }
    
  }

}

// control LED color
void flwr1Color (int r, int g, int b) {
    analogWrite(flwrLED1R, r);                    
    analogWrite(flwrLED1G, g);
    analogWrite(flwrLED1B, b);
  }

void flwr2Color (int r, int g, int b) {
    analogWrite(flwrLED2R, r);                    
    analogWrite(flwrLED2G, g);
    analogWrite(flwrLED2B, b);
  }
Click to Expand
0

Limitations

The overall installation is small and may not immediately attract attention, which would certainly render the display less effective. The microphone is not a particularly sensitive or accurate sensor, so I was limited to the presence or absence of a certain volume of sound. Also, the servo is not multi-directional, which limits the type of movement that can be produced and interpreted.

0

Considerations

A larger vision for this project’s goals would potentially involve an entire room or space with larger, more complex electronic flora and fauna that could actively respond to or essentially follow a person who enters and remains in the room. More sensors could be used (e.g. light, touch, infrared, etc.) to make the design more interactive and thought-provoking. Overall, providing more varied and visually assertive context would provide a much greater influence upon a person’s thoughts and behaviors.

0
0

Acknowledgements

Phipps Conservatory and Botanical Gardens

Video cast: Will Miao and Jacob Jorgensen

Sparkfun Project: Origami Paper Circuits

x
Share this Project

This project is only accessible by signed in users. Be considerate and think twice before sharing.


Found In
Courses

48-739 Making Things Interactive

· 0 members

Making Things Interactive (MTI) is a studio course based on physical prototyping and computing. You will develop novel sensing, interaction and display techniques through projects and short assignm...more


Skills
Tools
About

A creative art piece that transforms the environment into the observer and the viewer into the observed.