Connected Playground

Made by Kristie Lord, miranda1 and Manav Trivedi

This project is intended to encourage kids to play more on the playground to get the character to become happy.

Created: December 13th, 2019

0

See video of it in action here: https://vimeo.com/379379412

0

Design Considerations

Working with children

-Safety and privacy concerns with IoT

-Identifying what will engage kids with our product

-Needs to be easy to use

Working with parents

-Must be easy for them to use

-They want their children to play outside and escape technology

-Concerned with whereabouts and wellbeing of their children

Working around passerby

-Many runners and others use the space

-Product must be unobtrusive for them

-If they do interact with our product, must not disrupt its intended function

0

Our Idea

Lit up character that evolves with use of park equipment

-Designed for children as they are the intended users of the space

-Uses technology to gamify the park

Rewards use of park equipment

-New, positive visual stimulus within the playground

-Could be altered to display more characters, or more complex animations

Powered by sensors around the playground

-Unobtrusive and passively discovered

-Modular for spaces beyond Anderson Playground if scaled

Lit sign will be placed in the ground at a central location

-3 Characters, each with their own simple ‘animation’

-Change from sad to neutral to happy emotion as playground is used more

-Will light up different colors to further convey emotion

0

Design Process:

0

 Black box is L10" W8" H12", interior box was L7.5" (approx.) W6.25" and H10" (including clear acrylic panels)

0
#include <neopixel.h>

#define PIXEL_PIN D2
#define PIXEL_COUNT 50
#define INC_BRIGHT 25
#define TIMER_MAX 4
#define PIXEL_TYPE WS2812

Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);

bool flash = false;
int brightness1 = 0;
int brightness2 = 0;
int brightness3 = 0;

uint32_t c;
uint32_t white = strip.Color(255,255,255);
uint32_t red = strip.Color(255,0,0);
uint32_t yellow = strip.Color(255,255,0);
uint32_t green = strip.Color(0,255,0);
uint32_t black = strip.Color(0,0,0);

int IR = D3;
int detectionIR = HIGH;
int countIR = 0;
int timerIR = TIMER_MAX;

int accel = A2;
int detectionAC;
int countAC = 0;
int timerAC = TIMER_MAX;
int rest = 0;

int stage = 1;
int light = 1;

/*****************************************************************************/

void detectIR() {
  detectionIR = digitalRead(IR);

  if (detectionIR == LOW && countIR <= 25) countIR++;
  else if (timerIR > 0) timerIR--;
  else if (countAC > 0) {
    timerIR = TIMER_MAX;
    countIR--;
  }
}

void detectMotion() {
  detectionAC = analogRead(accel) - rest;

  if(detectionAC > 102 && countAC <= 15) countAC++;
  else if (timerAC > 0) timerAC--;
  else if (countAC > 0) {
    timerAC = TIMER_MAX;
    countAC--;
  }
}

void setStage() {
  if (countIR >= 20 && countAC >= 10) stage = 3;
  else if (countIR > 10 && countAC >= 5) stage = 2;
  else stage = 1;

  light = (flash) ? 2*stage : 2*stage-1;
}

/*****************************************************************************/

void changePixels1() {
    for(int i = 0; i < strip.numPixels(); i++) {
        if (stage == 1) {
            c = strip.Color(brightness1, 0, 0);
            brightness1 = brightness1 + INC_BRIGHT;
        } else if (stage == 2) {
            c = strip.Color(0, 0, brightness2);
            brightness2 = brightness2 + INC_BRIGHT;
        } else {
            c = strip.Color(0, brightness3, 0);
            brightness3 = brightness3 + INC_BRIGHT;
        }
       
        strip.setPixelColor(i, c); // set a color
    }

    strip.show();
}

void changePixels2() {
    for(int i = 0 ; i < strip.numPixels(); i++){
        if (light == 1 && i < 5) strip.setPixelColor(i, red);
        else if (light == 2 && i > 7  && i < 13) strip.setPixelColor(i, red);
        else if (light == 3 && i > 14 && i < 21) strip.setPixelColor(i, yellow);
        else if (light == 4 && i > 23 && i < 29) strip.setPixelColor(i, yellow);
        else if (light == 5 && i > 30 && i < 37) strip.setPixelColor(i, green);
        else if (light == 6 && i > 39 && i < 45) strip.setPixelColor(i, green);
        else strip.setPixelColor(i, black);
        
        displayState();
    }

    strip.show();
}

/*****************************************************************************/

void setup() {
  strip.begin();
  strip.show();

  pinMode(IR, INPUT);
  pinMode(accel, INPUT);
  
  rest = analogRead(accel);
}

void loop() {
    detectIR();
    detectMotion();
    setStage();
    changePixels2();

    flash = !flash;
    delay(500);
}
Click to Expand
0

Storyboard

x
Share this Project

Courses

49313 Designing for the Internet of Things

· 11 members

Thermostats, locks, power sockets, and lights are all being imbued with smarts making them increasingly aware and responsive to their environment and users. This course will chart the emergence of ...more


About

This project is intended to encourage kids to play more on the playground to get the character to become happy.