Computational Design Lab

Energy Harvesting Playground

Energy harvesting playground is a tangible interaction playground for kids and adults to have fun together and to harvest human energy. There are four features in energy harvesting playground, each of them has different functions and components as following:

1. Self-Sufficient Power Supply
While biking and seesawing, human energy can be turned into electric power by the bike wheel and the flywheel on seesaw through two motor generators. The flywheel mechanical structure keeps the wheel spining continuously. Then the power will be used to charge batteries.

2. Wheel Animation
While biking and seesawing, the animation wheel is powered up and rotates . People can watch the wheel animation through a small hole.

3. BlinkM Bike Light
Two blinkM LEDs are installed on the bike. Arduino changes the color of BlinkM LEDs according to the value of photoresiter when people bike.

4. Light Color Changing and Blinking
First, the arduino microcontroller under the seesaw controls the color of LED strips according to the input value of the accelerometer installed on the middle of the seesaw. Second, when people bike and the tape light barrier on the bike wheel blocks the photoresister on the bike frame, arduino blinks the LED strips according to the changes of sensor value.

//set pins
int accInputPin = 5; int sleepPin = 0;
int photocellInputPin = 4;
int R_pin = 6; int G_pin = 3; int B_pin = 5;
int nowR = 255; int nowG = 255; int nowB = 255;
//photoresister sensor is blocked or not
int isBlocked = 0;
//the block threshold of photoresister
int blockThreshold = 250; char color = ' ';

void setup(){
  pinMode(accInputPin, INPUT);
  pinMode(sleepPin, OUTPUT);
  pinMode(R_pin, OUTPUT);
  pinMode(G_pin, OUTPUT);
  pinMode(B_pin, OUTPUT);

int updateSpeed(int Threshold){
  int photocell = analogRead(photocellInputPin);
  if(isBlocked==0 && photocellThreshold){
    isBlocked=0; fadeLEDstrip(color); }}

void loop(){
  moveLED(345); updateSpeed(200);}

void moveLED(int mean){
  int min = mean - 30;
  int max = mean + 30;
  int accValue = analogRead(accInputPin);
  if(accValue>max && color!='G'){
    color = 'G'; analogWrite(G_pin,nowG);
    analogWrite(R_pin,0); analogWrite(B_pin,0);}
  else if(accValue>=min && accValue<=max && color!='B'){     color = 'B'; analogWrite(B_pin,nowB);     analogWrite(G_pin,0); analogWrite(R_pin,0);}} void fadeLEDstrip(char nowColor){   if(nowColor == 'R'){     if(nowR == 255) nowR = nowR - 200;     else nowR = 255;     analogWrite(R_pin,nowR);}   if(nowColor == 'G'){     if(nowG == 255) nowG = nowG - 200;     else nowG = 255;     analogWrite(G_pin,nowG);}   if(nowColor == 'B'){     if(nowB == 255) nowB = nowB - 200;     else nowB = 255;     analogWrite(B_pin,nowB);}}

Thanks to the group members:

Deren Guler:
Held exhibition
Sel-sufficient power design
Provide bike and seesaw
Animation wheel
Seesaw painting

Yen-Chia Hsu:
LED strips circuit design
Biking detection circuit design
Seesaw painting
Project documentation

Zack Jacobson-Weaver:
Mechanical structure design
(to turn human energy into electric power)
flywheel design

Tobias Sonne:
BlinkM LED bike light appearance design
BlinkM LED bike light circuit design
Music programming
(play different music tracks while biking)

Sharon Winter:
Idea sharing and idea classifying
Animation wheel
Assembly help

Prof. Mark D. Gross:
Project Advisor

Energy Harvesting Playground PDF Version Documentation

Author: Yen-Chia Hsu
Category: Work In Progress