Playful Experience Design Through Interactive and Wireless Techniques ------------------------------------//
Design and Technology // MFA // Fall 2008 // Parsons The New School for Design. ------------------------// Instructor: Yury Gitman
After solving the movement issue of servo, I started thinking about how to put all these electronic parts into my plush toy. First, I moved one of power supplies to mini breadboard and attached it on the Arduino board. Here I simply used both hot glue and tape.
Toys were having fun to hang out together! Matt's toy (with accessories made by Hsiang Ju and me) + Hsiang Ju's duck
The box made of cardboard was used to protect the circuit and provide a platform for servo to stand. Two batteries would be legs of the toy.
Everyone was working hard =)
I started sewing the skin of my toy. It's a lot of work, trust me.
My toy's head.
I got a plastic clown nose from Halloween Adventure, ha ha, and I used it as the head part, just the perfect size. Servo’s fan was attached on the plastic ball by hot glue, and the same, connected the plastic ball and the fur head skin. So toy’s head would turn to specific angles that I set when motor was triggered.
However, I made a mistake here. Without making sure where eyes would be, I hot glued the head skin with the plastic red ball. When I wanted to sew the IR sensor on its head, I found it’s hard to separate the fabric from the ball. Since I couldn’t mount the IR sensor at the right place, toy’s eyes were much lower than I originally expected.
Putting on its skin continuously.
Final review document
the testing video is on the way. to be continued...
Do you often have guests over and wonder what they're doing when you're not looking? Perhaps, they're getting too comfortable and have stopped asking before they open your drawers in the kitchen, bathroom, bedroom, etc. to get what they need?
Hello, How May I Help You? is an adorable and friendly solution for such people like you. Simply place the doll into a drawer of your choice, and turn on the switch before guests arrive. If they snoop into your drawer, the doll will "greet" them with a message when it opens.
Do you keep forgetting things everytime you change your purse? Now there's an easy way to remember everything you need to bring with you. It's called Bchito.
Bchito is small and can be used with any purse. It's also available in different presentations to combine it with your outfit...and you'll remember everything!
It will help you remind the basics you need to bring with you on certain moments; work, an interview, a date, a gathering with friends, grocery shopping....
But wait! There's more. Bchito is also handy outside of your purse in those moments when you can't find what your looking for. Just place it outside of your purse and it will help you identify the items you need and seems impossible to find in your home.
"The Love Lamp (ohhh yeah!)" sets the mood for love....everytime!
A pair of unassuming jeans hang from the lamp waiting to set the mood.
Here's how it works: 1. turn on the lamp by flipping the switch on the condom box 2. unzip the pants slowly 3. watch the light turn from white to red 4. listen to the sweet, sweet sounds of Marvin Gaye "Let's Get It On" 5. get it on...
This is a modified rubber duck not only giving you a company when you are taking a bath but also watching the bath water for you. You can save time and energy while waiting for the bath to do other things, because the bath ducky will inform you when the water is full.
Do you spend too much time sitting in front of your computer? Do you
waste time checking your email over and over instead of going out and
having a life? Compy is for you!
Compy clips to your laptop screen, and he sits patiently. He will use his infrared sensor to detect when you are in front of your computer, and if you're there for 30 minutes, he will alert you! Don't worry, if you walk away from your laptop, Compy knows and will restart his timer when you come back. He's always happy to keep an eye on you!
Finally, Compy is up and working! Here are some photos of his guts, and his code is below!
Compy's front
I added googly eyes and a pipe cleaner bow-tie to give him a little craft charm.
Compy's Back
His battery pack is attached on the back.
Compy with his Battery Pack removed
The battery pack is attached with velcro. The chip clip which holds Compy onto a laptop is hot glued.
Compy's Guts
I used an Arduino Mini, and had to put that in a little acrylic box from the Container Store separate from another acrylic box containing the speaker and the IR sensor.
Code is below!
PING is a smart trash/recycling bin that tracks your trash activity and reports it online. His aim is to help you develop better recycling habits by collaborating with others.
PING is part of a larger concept that asks the question: "If objects had a voice, what would they say about us and how would we respond?" PING's 'voice' is able to tell users about their trash habits and connects them with other PING users online to allow opportunity for collaboration toward a more sustainable world. PING does this by tracking each time you throw an item in either its waste or recycling compartment and reports this activity online as well as communicating directly with the users through its own illuminating lights. Future iterations of PING will also include a way for the bin to measure weight of the trash, how often the bin gets filled up, and will be able to remind users of trash day so they'll remember to put the trash out. All this data collected will connect to much larger ideas online. For instance, knowing how much paper people recycle can help us calculate how many trees each individual is saving, etc. - allowing each person to feel a bit of accountability and reward for their recycling efforts and help them know that they do in fact play an important part. View a demo video:
PING was created by Katrina Bekessy. Katrina would love to hear any thoughts/opinions/feedback you might have about this project. If you'd like to learn more about it or share your thoughts, please contact Katrina at kmbekessy[at]gmail[dotcom].
Do your cats get bored with their toys after only a few minutes? Do they miss you when you aren't at home? Cedric the Catertainer is the new cat toy for the lonely, bored, and fickle cat. He demands to be played with. If your cat hasn't been playing with him for a while he will start to taunt your cat, making fun and intriguing sounds. If your cat gets too close, Cedric will start to shake in fear and his eyes will light up. Add a little catnip to his fur and your cat will go crazy. Best. Cat Toy. Ever.
Do you often forget to take your vitamins? We all know they are good
for you but its so easy to forget! Using both light and customizable
sound, vMind will encourage and remind you to take your daily vitamins.
vMind uses both light and sound to ensure you remember your daily vitamin. You can customize vMind with your own encouraging message, favorite song, or silly phrase! When you pick up your vitamin bottle you will hear your own personal recording and the light will turn bright green. As you set the bottle down the light will fade from green to red over a 24 hour period. The next day, when its red, you will remember that you need to take your vitamins!
The circuit inside the Catertainer has been miniaturized. Check it out!
It doesn't get much more compact than that. There's a switch to turn the bad boy on, and a button the side of the container to trigger the sound clips for exhibition purposes. Next step... fur!
The Parsons "Making Interactive Toys" MFA Class is having public demonstration/presentations of their projects. This class explores playful experience-design with interaction and wireless techniques. They've made "smart" objects the engages users playfully, or into play itself. Their prototypes are documented in this blog.
Date: Dec 16th / 6:30pm-8:30
Formal Critique is 6:30-7:30pm, General Playtesting 7:30-8:30pm
Time: Formal presentation and critique will be at 6:30-7:30pm. Each student will present their work. General free-from play-testing anyone attending is 7:30-8:30pm
Location: 2 W 13th St., 10th Floor [Main Lab, Far Corner] New York, NY 10011 http://cdt.parsons.edu/
So I got the code and circuitry to all work correctly for my "Let's Get It On" Lamp. I am so excited to get it working on the reals.
Yet, i'm still havin some issues with the pants circuitry. Sometimes the fly signal works, others it doesn't.
*Side note: there pants have enough batteries in them to melt through the crotch. This concerns me a bit and it could probably be wired in a more optimal way, with less batteries, but I need a break from this. FYI: Not for actual wearing!
/////-------------------------------------------------CODE-----------------------------------------------------///// /* * BlinkColorFader -- Example of how to select color & brightness * with two pots * * For more info on how to use pots and analog inputs see: * http://www.arduino.cc/en/Tutorial/AnalogInput * * BlinkM connections to Arduino * PWR - -- gnd -- black -- Gnd * PWR + -- +5V -- red -- 5V * I2C d -- SDA -- green -- Analog In 4 * I2C c -- SCK -- blue -- Analog In 5 * * Note: This sketch sends to the I2C "broadcast" address of 0, * so all BlinkMs on the I2C bus will respond. */
#include "Wire.h" #include "BlinkM_funcs.h"
//address for BlinkM #define blinkm_addr 0x00
// INPUT: Potentiometer should be connected to 5V and GND int potPin = 0; // Potentiometer output connected to analog pin 0 #define potPin 0 // analog in pins from zipper signal to control LED fade color: white to red #define ARRAY_SIZE 5 //this is the array size int potNums[ARRAY_SIZE]; //this reads AND stores 10 numbers from the potentiometer input. int pot_val; //potentiometer value from zipper position on jeans
// OUTPUT: Use digital pins 9-11, the Pulse-width Modulation (PWM) pins // LED's cathodes should be connected to digital GND int pPin = 7; //PLAY, conncected to pin8
// Program variables int currentPlace = 0; //this is the total value int placeHolder = 0; //placehoder for each spot in the array int ave = 0; //average pot input numbers (normalize/smooth the input signal)
//SETUP void setup() { BlinkM_beginWithPower(); BlinkM_stopScript(blinkm_addr); // turn off startup script Serial.begin(9600); // ...set up the serial ouput in 0004 format
for (int i = 0; ARRAY_SIZE < 5; i++) { potNums[i] = 0; //fills all values in the array to 0 } pinMode(pPin, OUTPUT); }
// MAIN void loop() { currentPlace -= potNums[placeHolder]; //subtract the last reading from array potNums[placeHolder] = analogRead(potPin); // read the potentiometer value at the input pin currentPlace += potNums[placeHolder]; //add to the array placeHolder++; //add 1 to the placeHolder each loop
if(placeHolder >= ARRAY_SIZE) { placeHolder = 0; //if the placeHolder goes thru the whole array, } //then loop back to the 1st spot in the array
ave = currentPlace/ARRAY_SIZE; //calc the average //Serial.println(ave); // send it to the computer (as ASCII digits)
pot_val = analogRead(potPin); // read the hue pot //Serial.println(pot_val);
//light should fade from white when zipper is up to red when zipper is down BlinkM_fadeToRGB( blinkm_addr, 255, int(pot_val/3.5), int(pot_val/3.5)); // adjust the green and blue to decrease with pot values
if (ave > 600) // Upper third of potentiometer"s range (600) { digitalWrite(pPin, HIGH); //keep digital pin open if zipper is near top }
else if (ave >= 200 && ave <= 500) // Middle third of potentiometer's range (100 - 150) { digitalWrite(pPin, HIGH); //keep digital pin open if zipper is in middle }
else if (ave < 100) // Lowest third of the potentiometer's range (50 - 100)/turn on music here (< 100) { digitalWrite(pPin, LOW); //put digital pin to GROUND if zipper is at bottom }
I just be reminded of Meiwa Denki. Maybe you all already knew them. But they are so awesome that I think I have to post here for you guys, just for reference.
They made a lot of instruments and toys( like knockman family toys) ... and also some funny design tools.
I guess the fallowing design from their Nonsense Toy Work shop is very useful for us in this particular time...(you can jump to the demonstration part if you don't know Japanese) :D
So, yeah, I figured out what the problems were and finally made the servo work as the way I want! Hooray! When the toy detects me (using sensor), it would turn its head and stay at that position until it detects me again and turns its head.
Servo myservo; //create servo object to control a servo int sensor = 0; // analog pin used to connect the sensor int motorPin=11; int val; // variable to read the value from the analog pin boolean status=0; //status of detecting int counter=0;
Serial.begin(9600); // set up Serial library at 9600 bps pinMode(sensor, INPUT); //pinMode(relay, OUTPUT); pinMode(motorPin, OUTPUT); myservo.setMaximumPulse(2000); myservo.setMinimumPulse(700);
Serial.print("Ready\n"); }//end of setup
int getSensor() { val = analogRead(sensor); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
val=max(val,5); val=min(val,180);
return val; } //end of getSensor
void myRefresh(int delayTime){ for(int i=0; i < delayTime/20; i++){ //delay is the total ms delay we want, 20 is the delay per iteration of the loop Servo::refresh(); delay(20); } }
int move0(){ Serial.print("servo position 0\n"); myservo.write(0); //Servo::refresh(); myRefresh(100); }//end of move0
int move90(){ Serial.print("servo position 90\n"); myservo.write(90); //Servo::refresh(); myRefresh(100); }//end of move90
int move180(){ Serial.print("servo position 180\n"); myservo.write(180); //Servo::refresh(); myRefresh(100); }//end of move180
I defined a function myRefresh() to make sure the servo would be refreshed every 20ms. Then I added 3 moving functions with different angles. The tricky part was that how to make servo stop and turn to reverse direction when the sensor detects someone again. By using 2 variables counter and status, I made servo turn to position 180 when the counter is even and turn to position 0 when it is odd.
In this week, I'll try to put the prototype that I have so far into the body of my plush prototype. The focus of the testing this week will be: - redesign the character for prototyping (make it big enough to put all my electronics) - building/ sewing the plush toy - make the toy's head move! Think about materials, the skeleton, connections... etc.
Here's the code: // Input settings int analogPin = 3; // ir sensor connected to analog pin 3 int val = 0; // variable to store the read value
// Digital pin settings int aOut = 9; // Play pin connected to digital pin 9
// Variables int aVal = 0; // Variables to store the input from the ir sensor
int DEBUG = 1; // Set to 1 to turn on debugging output
int average[100]; // Averaging Code setting byte counter = 0;
void setup() { pinMode(aOut, OUTPUT); // sets the pin as output
if (DEBUG) {
Serial.begin(9600); // Open serial communication for reporting } }
//Main program void loop(){ val = analogRead(analogPin);
//Averaging Code start average[counter] = val; byte c; int total = 0; for(c = 0;c<100;c++){ total += average[c]; } int averaged = total / 100; Serial.println(averaged); counter = (counter + 1) % 100; //Averaging Code. modified from Dave Millis example
if(val < 300){ analogWrite(aOut, 0); delay(1500); analogWrite(aOut, 255); delay(100); } else{ analogWrite(aOut, 255); } if (DEBUG) { // if we want to read the output DEBUG+=1; if(DEBUG>100){ //print every hunderd loops DEBUG = 1; // reset the counter Serial.print(val); }} }
And here is the new win bound recorder which is smaller, more solid, and works as well as the old one. It sounds actually better because I got a bigger speaker for it.
I've scrapped the Winbond, which is both good and bad. The Winbond would have been great for making bird sounds, but the Arduino Mini is so much more compact and easy to work with. It makes sound too, but the computery noises it makes are not very bird-like. In fact, they're just downright annoying.
I'm using the Play Melody code from an Arduino tutorial to get started. I had to add a couple of extra octaves (by halving the frequency of each tone for each octave), and now I'm working on getting the melody to play at the appropriate time.
Right now my code will play a little ditty after 15 seconds if someone is not in front of the IR sensor. I need more parameters, but it's not bad for a proof of concept. Consider is an implementation prototype.
Here is my arudino mini, hooked up to the arduino as a usb connector. Also featured within the mess of wires is an IR sensor, a speaker (bigger than the one I'll end up using, actually), and some fine LEDS to help me figure out what's going on when). The Red LED comes on when the IR is on and reading something is close, and Yellow LED comes on when the IR is reading that nothing is in front of it anymore.
A Close Up
This is just a close up shot of the Arduino Mini, connected to things. I'll be taking it off of the bread board as soon as I'm happy with my code. Until then, it stays, which unfortunately is holding me back from making Birdie look and feel prototypes.
These are the parts of the vMind prototype! It consists of a mat switch - connected to a toggle switch -- that activates an mp3 player/recorder. The device can be recorded onto and custom messages will be played. The vitamin bottle goes on top of this device, when the matswitch is depressed, no sound comes from it (because of the toggle switch). However, when nothing is on it, the music/sounds will play! This encourages people to pick up the vitamin bottle and take their vitamins so they can hear the jams! There is also an LED interface, controlled by a proximity sensor. The lights blink when you are near it, to bring your attention to it.
Problems: The mat-switch is not that reliable. I need to get a capacitive touch sensor I believe, this will make it more secure. Also, there are some snags in the LED interface, still working on making that function properly. I need to try to get it to be just one battery or simplify the interface...are the LEDs necessary?
Anyway, here is a lovely diagram of how I'm hookin' things up.
You don't actually need the Arduino Mini USB adapter to get things cooking, you can use a regular Arduino, as shown above, if you already have one. Just be sure to remove the Atmel ATmega168 so you can connect the reset pin from the mini to the Arduino (see what I mean below). Without this, data will not transfer. Arduino Mini Arduino Mini USB Adapter or Arduino Superbright LEDS 8 ohm speaker IR Sensor
Okay, here is a photo of the Arduino without the Atmel chip.
Yes, that chip does come off! Just don't pry it off too violently, or you'll bend the pins. Mmkay?
In response to Katrina's great tip about the multiplexer I thought I would pass this little trick on as well.
With only a few simple lines of code you too can use your digital inputs to read analog data. Below is the function. Just copy and paste the code before your void loop(), then call it with digiAnalog(pin). It's pretty easy. Continue reading to see the code:
So here's what I've got going so far...it doesn't look like much right now, but it will make a huge difference once I actually have it all set up in the real trash bin I intend to use. Right now I'm just trying to get everything to work.
I've go the IR sensors detecting which bin (recycling or waste) was used, and the Winbond chip changes tracks and plays back the appropriate sound depending which side was just used. I'm having a bit of a problem with the Windbond chip, though. When it needs to change tracks it won't play back the sound after it has moved forward. It'll only play the sound the next time that side of the bin is used. I can't figure out how to fix it in my code, but I don't think it's a huge problem...just strange. My code is posted at the end of this blog post.
I also have the Arduino counting how many times each side has been used. A green or yellow LED will light up when one side is used more than the other (green = you've recycled more, yellow = you've wasted more).
Alos, I assembled my XBee transceivers. It took FOREVER to solder everything - I even got injured in the process (one of the pins got shoved under my fingernail...awesome.). I haven't set them up to work yet...but that's going to happen in the next day or two. For now, all data from the bin can be seen through the serial reader in Arduino. I've posted a screenshot of it below.
Lastly, I started playing with some big FSR's to use as a rough scale/weight measurement for now. Next task for me is to figure how I'm going to normalize their numbers in my code...I have no clue how I'm going to do that...
Here's some pics:
The inside of my 'bin'...not pretty, but semi-functional at least!
Had to show off my awesome soldering job...male and female header pins all in a row, just so I can mount a silly XBee on it.
Screen shot of Arduino serial reader showing my bin data...with some lovely notes included in red.
-getting my Windbond chip to change tracks and play back the sound right after -normalizing my FSR inputs to numbers that actually mean something -keeping the stupid IR sensors consistent. Everytime I turn them on they start with different readings than before
Next things I need to do:
-include FSR's and photoresistor (for lid of bin) with rest of my circuit using a multiplexer -get XBee's to send bin data to computer wirelessly -build working circuit into actual trashbin -refine code to make readings more accurate
Am in way over my head? Yes, yes I am...
Here's my long Arduino code thus far. I'm sure it could be written much more succinctly/efficiently...
Recent Comments