This document summarizes a project by two students to create an Arduino-powered toy to enhance play for cats. They hacked an existing ball track and stuffed bird toy to add sensors that trigger sounds and movement. Through prototyping and testing with their cats, they created a toy that wags the bird's tail when a ball passes a light sensor and makes chirping sounds when the ball presses a flex sensor. The students learned that rapid prototyping and leveraging existing knowledge were important to the project's success.
2. Our task
Hack a toy with Arduino
Create a ludic (playful) experience.
Enhance the existing toy experience.
Use two inputs and two outputs.
2
3. Cats love to play!
Even the grumpiest of cats likes feathers
Tardar Sauce, aka “Grumpy Cat”
http://www.grumpycats.com/tag/pokey/#.UnaVkBbFpyx
Used under educational fair use
3
4. Humans love their cats!
The Internet is full of cat photos and videos
Lil BUB
http://lilbub.com/image/62344630818
Used under educational fair use
Hamilton the Hipster Cat
http://instagram.com/p/eySFqWRLhA/
Used under educational fair use
Maru
Screenshot from http://youtu.be/TbiedguhyvM
Used under educational fair use
4
5. HCI is interested in pets too!
Animal-Computer Interaction
“Important recent research directly related to
Animal-Computer Interaction has focussed
upon companion animals and has mainly
sought to develop interactive technology that
aims to foster human-animal interaction while
benefitting both sides of the relationship.”
Mancini, C et al. “Animal-Computer
Interaction SIG” (2012). CHI ‘12 Proceedings
of the SIGCHI Conference on Human
Factors in Computing Systems.
“...[Owners] actively assume the role of
animals, and infer thoughts and feelings from
the animal’s perspective... [Projecting] human
capabilities onto pets makes them legitimate
participants in social interaction.”
Noz, F et al. “Cat Cat Revolution” (2011).
CHI ‘11 Proceedings of the SIGCHI
Conference on Human Factors in
Computing Systems.
5
6. Research: Toy ethnography
PetSmart, Bloomington, IN
We went to a pet shop to see what cat toys
already exist in the world.
We were able to explore and play with a
lot of different toys to test their movement,
weight, etc.
6
7. Insights
Cat toys are often colorful and festive,
reflecting light and making sounds.
7
8. Insights
Large numbers of cat toys involve some
human interaction with the pet, rather than
just watching.
8
9. Insights
A large number of cat toys are amusing for
humans just as much as cats (obviously cats
don’t smoke cigars!).
9
10. Research: Our (feline) users
Stephanie’s house, Bloomington, IN
We studied two cats to see how they like to
play, and which types of toys they love best.
10
11. Kalinka
A sassy but skittish 10-year-old lady who loves
playing with the ball track.
11
19. Our purrototype
Arduino CirCAT Board
Cats love to attack birds,
feathers, and any moving
objects!
This prototype combines
two toys (ball track and
stuffed bird) into one
playful, colorful toy.
19
20. How it works
Tail feather wagging
The ball in the track triggers a light sensor
When the ball’s shadow passes over the light
sensor, the servo motor (hidden in the box) wags
the bird’s tail feathers
20
21. How it works
Bird chirping
The ball in the track triggers the flex sensor
when it bounces against it
The piezo speaker hidden under the cardboard
wire cover makes “chirping” sounds when the flex
sensor triggers
21
23. The code
/*
Code adapted by Stephanie Louraine and Angelica Rosenzweig
from the Arduino Starter Kit example Project 6 - Light Theremin by Scott Fitzgerald
*/
}
}
// turn the LED off, signaling the end of the calibration period
digitalWrite(ledPin, LOW);
#include <Servo.h>
//servo
Servo myservo;
int val;
void loop() {
// light sensor read value
val = analogRead(5);
val = map(val, 0, 1023, 0, 179);
myservo.write(val);
// variable to hold sensor value for flexsensor
int sensorValue;
// variable to calibrate low value
int sensorLow = 1023;
// variable to calibrate high value
int sensorHigh = 0;
// LED pin
const int ledPin = 13;
int flexSensorPin = A0;
//read the input from flexsensor and store it in a variable
sensorValue = analogRead(flexSensorPin);
Serial.println(sensorValue);
// map the sensor values to a wide range of pitches
int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);
// Serial.println(pitch);
void setup() {
Serial.begin(9600);
if (sensorValue < 290){
// play a variable tone as output
tone(8, pitch, 20);
delay(200);
}
myservo.attach(12);
// Make the LED pin an output and turn it on
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
// calibrate flex sensor for the first five seconds after program runs
while (millis() < 5000) {
// record the maximum sensor value
sensorValue = analogRead(flexSensorPin);
if (sensorValue > sensorHigh) {
sensorHigh = sensorValue;
}
// record the minimum sensor value
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}
else{
noTone(8);
}
// wait for a moment
delay(100);
23
24. User testing
They liked it!
Both cats played with the
toy!
(Although shy Kalinka hid
from it at first.)
24
25. User testing
Humans can play too!
Humans can also get in
on the fun, bringing them
closer to their pets and
increasing enjoyment for
everyone.
25
26. Video
See the video of our user testing at:
http://vimeo.com/78488147
Scan to view on your phone!
26
27. Construction process
Making of the Arduino CirCAT Board
Following is a series of photos showing our
general process in working with Arduino and
our toys.
27
28. Trying the original toys
Examining the toys to see just how we can hack them
For our proof-of-concept
prototype, we chose to
use only a portion of the
available track, just to
make sure the sensors
were easily triggered.
28
29. Wiring the Arduino
Making the electronic components work
We used online tutorials
and the help of our fellow
classmates to determine
how to wire all of the
components.
29
30. Testing and more testing
Making sure it’s doing what we want it to do
Before building the actual
prototype, we had to
test each component
many times to make sure
the output was what we
expected.
30
31. Putting the hacked toy together
Hooking the sensors up to the toy
We used hot glue to affix
the toy together with our
various sensors and other
electronic components.
31
32. Covering the wires
Making sure the cats can’t chew through the wires
For safety of both our
cat users and our toy, we
covered the wires and
Arduino board using an
inexpensive cardboard
box that we decorated
with paw-print paper.
32
33. Reflection
Thinking about materials and our process
Originally we planned to add a feather that
shakes, and LEDs to attract the cats’ attention
depending on where the ball hit. We quickly
decided not to use LEDs as it did not add much
to the experience, and it would have gone
mostlyunnoticed by the cats.
We added a piezo speaker instead to buzz when
the ball pressed on it. While tuning the piezo, we
started calling the beeping “the bird chirp”, and
we tuned it to a noise that resembles a bird. As
we were setting the pieces in their final spots, we
realized we could integrate a toy bird easily.
33
34. Lessons learned
Things we’ll remember in the future
Prototyping is about playing
We eagerly iterated to improve our prototype
aesthetically as well as functionally. We believe
this was because we were having a lot of fun.
Playing with Arduino as we started was essential
to getting us excited about the technology, and
triggered ideas for possible applications.
Don’t rebuild the wheel (or code)
Rapid prototyping embraces the idea of proofof-concept. It is OK to reuse code and repurpose existing solutions to fit our concept. As
long as it illustrates the interaction and it works,
it’s fair game.
Tutorials, Youtube, and other people are key
Leverage existing knowledge for troubleshooting
and to gain insights as to why something might
not work.
34
35. Ideas for the future
Things we want to try out next!
We’d love to play around some more and try out
the following with Arduino:
• Something wearable (cat collar Arduino?)
• A cat tracker (to easily find where they’re
hiding)
• Embedding sensors in the house (ambient
detection)
• Something that we could use on a regular
basis (hacking or augmenting daily use items)
35