Introduction: Furby Hijack
I took control of a furby's body using a PIC16F877 microcomputer. Videos on last step.
The furby's in-built sensors and actuators:
tongue touch sensor,
belly touch sensor,
The furby's main (and only) motor was dead, so I added other motors.
Step 1: Skin the Bastard
Skin the furby (yank its skin up over the top of its head). You'll have to clip a ziptie at the base of the back of its skin first then you'll have to clip little stiches connecting the skin around the face area.
Once it's off you'll see connectors on the left and right of the furbies body, these are the wires connected to all the sensors. You should even see written next to some of the wire connections 'S1' 'S2' (sensor 1 and sensor 2, etc). Figure out which wires go where.
Above the furby's eyes:
-In the center is a light sensor (changes resistance in response to light)
-On one side of the light sensor is an IR emitter (like on your TV remote)
-On the other side is an IR receiver (like on your TV)
On the furby's sides:
-wires from the belly touch sensor
-wires from the speaker
-wires from the tongue touch sensor
-wires from the microphone
solder longer wires onto any sensor wires you want to connect to your PIC, label them.
Step 2: Connect the Sensors
To connect simple touch sensors to your PIC use the first circuit depicted below, the touch sensor is symbolized by the little black arrow (a touch sensor is a simple switch). Your PIC IO line will see low while the touch sensor is open (nonconductive) and will see high when the tocuh sensor is closed (conductive).
So if your touch sensor is 'normally open' (like the tongue and belly sensor on the furby) then you'll want to program your PIC to wait for a high on the IO line (a high signifies the touch sensor has been touched). If you touch sensor is 'normally closed' (like the springy bump sensors I made and will describe later), do the oposite obviously.
To connect a light sensor (a light sensors resistance changes according to the amount of light shining on it) use the second circuit. Connect it to the analog to digital converter (ADC) pin of your PIC. Mess with the potentiometer setting to get the voltage to a range that works with your program.
To connect a small speaker (like the 32ohm one on the furby) to the PIC use either the third or fourth circuit. I used the capacitor circuit initially, and it worked great, til I added motors to the PIC (later step), then for some reason the PIC was having trouble supplying the current needed for the speaker. So the fourth circuit (the one with the transistor) would be better to use cause it wouldn't tax the PIC's power output capabilities.
Step 3: Add Motors
The furby would have been boring just sitting there, unmoving, bleeping its speaker when sensors were activated, so I decided to add two 9v lego motors so that the furby could drive around while sampling its sensors.
To control motors from a PIC (or other microcontroller) one must use an H-bridge (http://en.wikipedia.org/wiki/H-bridge). You can build your own using transistors or you can buy an h-bridge IC.
I used an L293 H-Bridge IC to drive the motors, it's a nice small, simple IC. See the diagram below for how the IC works.
As you can see from the table below the diagram, all your PIC has to do to control the motor is to change the high/low states on the DIRA1 and DIRB1 pins to control motor A, and the DIRA2 and DIRB2 pins to control motor B.
Makesure to put a capacitor between the motors' power and ground. A different power supply (higher voltage) from the one that supplies your PIC must be used for the motors. However the grounds should be shared between the two power supplies.
Because motors can cause voltage spikes when turned on and off, make sure to put a capacitor between the motors power and ground. Also put a cap between the PIC power and ground.
Step 4: Add Bump Sensors
Make bump sensors. This step is necessary if your furby will be driving around like mine. These bump sensors will keep the furby from driving endlessly into a wall.
buy some papermate mechanical pencils (as in picture #1)
snap the tip off of one.
yank out the spring (picture #2)
Solder an insulated electrical wire to one end.
get some pipette tips (this is what I used but any number of things could be used) as in picture #3
Get a thin (should fit inside the spring) stiff metal rod. I used a thin metal rod from a broken umbrella I found on the street. Solder an insulated electrical wire to one end (picture #4).
Stick the nonsoldered rod end through the pipette so that about half an inch protrudes (picture #5)
Stick the pipette/rod into the spring and bend the metal rod so that its tip touches the spring around it, and glue the pipette/rod base the the base of the spring (picture #6).
You're done. NOTE: this is a 'normally closed' bump sensor, so your PIC program should be waiting for a 0 on its IO pin to signify a bump (unlike the tongue and belly touch sensors of the furby which signify a touch by a 1 on the PIC IO pin).
Step 5: Write the Code
You'll have to write a program for your PIC to utilize the sensors and everything previously described. You can read my PIC instructables to start learning about how to do this:
Intro to PIC microcontrollers:
MATLAB to PIC serial control:
IO Pin Interrupts
PIC Debugging Board
Step 6: Watch It Go!
Video of the furby on its maiden voyage:
To learn more about the basics of robotics buy this book:
It's the book I started with years ago, still the best starter book.
To learn about PIC microcontrollers here's a Great PIC Intro Book