Shared:Group 2

From ip
Jump to: navigation, search

Interactive Guiding Map | Anne De Schepper & Shireen Xiaolin Ou

caption


Group Member: Anne De Schepper & Shireen Xiaolin Ou

Duration: 2 Weeks

Status: Prototype Model Making


What we do? | "problem statement"

caption

What we do?

At the entrance of science center, you are usually welcomed by several notice-boards about the location of a room and its events. We want to replace the dull boring boards with an interactive guiding system, where a colored ball would lead you the way to your destination.

For example, a red ball may represent "hyperbody-space"; so if you want to head to "hyperbody-space" yet you don't know the way, you can pick up a red ball and place it at the start of the guiding system. This system would slowly move the ball towards your room. All you need to do is following the track.

The following animation simulates how the system is going to work in the hallway.

0 (2).JPG0 (3).JPG


What are the inspirations | "previous approaches"

caption

What are the inspirations?

We are inspired by "InForm", an MIT Media Lab project. In this project, they used pins as actuators to control the shape of a surface. However, they do have the drawback of using too many electronic actuators, making massive and redundant linkages.

And the simple toy of "spijkerbed" comes to our mind. Only by changing the base environment for the pin art, we can achieve a variety of effects. Is it possible we can make use of this simple mechanism? The answer is a definite yes.

0 (4).JPG0 (5).JPG0 (6).JPG


How It Works | "machanism design"

caption

How It Works?

First, we change the shape of supporters of the pins, to change the shape of pin surface. For the supporters, we use X-Y coordinates to control its movement. In order to quantify the movement, we use a stick with spiral screws. By rotating the stick we can transform a motor into a linear actuator.

0 (7).JPG0 (8).JPG0 (9).JPG


Prototype Making | "model making"

caption

Finally, our design

Our design consists of 3 parts. The TOP part is made of: a metal pins’ surface, a height control stopper, and bottom caps. The BOTTOM part consists of 3 driving engines(motors), a “weird shape” affecting the pin surface, and the supporting structure. Another side box is attached to the main body of the design as well, where arduino and all wires are hidden.


0 (10).JPG0 (11).JPG0 (12).JPG


Videos


Codes

/* Sweep
  by BARRAGAN <http://barraganstudio.com>
  This example code is in the public domain.

  modified 8 Nov 2013
  by Scott Fitzgerald
  http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>
Servo myservoX;
Servo myservoY;  // create servo object to control a servo
// twelve servo objects can be created on most boards
int times = 3;

void setup() {
  myservoX.attach(9);
  myservoY.attach(10); // attaches the servo on pin 9 to the servo object
  Serial.begin(9600);
}


void loop() {


  // myservoX.write(180);
  //    delay(800);


  for (int wait = 0; wait < 3; wait++) {
    myservoX.write(90);
    myservoY.write(91);
    delay(800);
    Serial.println(3 - wait);
  }
  for (int b = 1; b < 4; b++) {


    if (b % 2 == 1) {
      myservoX.write(0);
      for (int c = 1; c < times * b; c++) {
        delay(600);

      }
      myservoX.write(90);

      myservoY.write(0);
      for (int c = 1; c < times * b; c++) {
        delay(600);

      }
      myservoY.write(90);
    }
    else {
      myservoX.write(180);
      for (int c = 1; c < times * b; c++) {
        delay(600);
      }

      myservoX.write(90);

      myservoY.write(180);
      for (int c = 1; c < times * b; c++) {
        delay(600);
      }

      myservoY.write(90);

    }


    myservoX.write(180);
    for (int c = 1; c < times * b/2; c++) {
      delay(600);
    }

    myservoX.write(90);

    myservoY.write(180);
    for (int c = 1; c < times * b/2; c++) {
      delay(600);
    }

    myservoY.write(90);

  }
  for (int wait = 0; wait < 8 ; wait++) {
    myservoX.write(90);
    delay(800);
    Serial.println("s" + (8 - wait));
  }

}

List of Material Used

  • 1. continuous motor x 3
  • 2. wood board x 3
  • 3. arduino uno x 1
  • 4. breadboard x 1
  • 5. wires & 3d printing materials


Code Sample|"voice recognizer"

what this sensor does is that it recognizes certain commands.

before the commands you will have to call the sensor by name to let it know it should be ready to work.

if you have not given settings to the sensor, you say "hi sensor" before your commands.

it can recognize commands under *voiceBuffer, and will repeat it after recognition.

#include <RGBdriver.h>
#include <SoftwareSerial.h>
#define SOFTSERIAL_RX_PIN  2
#define SOFTSERIAL_TX_PIN  3

SoftwareSerial softSerial(SOFTSERIAL_RX_PIN,SOFTSERIAL_TX_PIN);

const char *voiceBuffer[] =
{
    "Turn on the light",
    "Turn off the light",
    "Play music",
    "Pause",
    "Next",
    "Previous",
    "Up",
    "Down",
    "Turn on the TV",
    "Turn off the TV",
    "Increase temperature",
    "Decrease temperature",
    "What's the time",
    "Open the door",
    "Close the door",
    "Left",
    "Right",
    "Stop",
    "Start",
    "Mode 1",
    "Mode 2",
    "Go",
};

void setup()
{
    Serial.begin(9600);
    softSerial.begin(9600);
    softSerial.listen();
}

void loop()
{
    char cmd;

    if(softSerial.available())
    {
        cmd = softSerial.read();
        Serial.println(voiceBuffer[cmd - 1]);
    }
}