Step 1: Animatronic Cat Ears
I saw the demo video for the neurowear "necomimi" brain controlled cat ears and I thought they were pretty awesome. I'm just starting to learn electronics and I thought a fun project to start out would be making my own version. Sadly, I don't think I'm adept enough yet to take on making my own EEG and I don't think the EEG's that are available are very reasonably priced, so I settled for having a button input to control the cat ears.
I wanted to build something that wasn't too expensive and was easy enough to be done in a sitting or two. I picked out some cheap servo motors, some craft supplies, spent a weekend or two developing code to control the servo's from a microcontroller and after much trial and error, I built some kitty ears that I think are pretty decent.
Here's a video of my lovely assistant using the Kitty Ears:
Step 2: Tools and materials
Hot glue gun (and hot glue): I picked one up for under $5 at a local Michaels Craft store.
Dremel: $18.99 at Harbor Freight Tools (http://www.harborfreight.com/professional-4-speed-rotary-tool-kit-40457.html)
Drill: $18.99 at Harbor Freight Tools (http://www.harborfreight.com/3-8-eighth-inch-variable-speed-reversible-drill-3670.html)
AVR Programmer: USBtinyISP AVR Programmer Kit from adafruit.com $22.00 (http://www.adafruit.com/products/46)
Flex tubing: $2.88 from WalMart
ATTiny13: $1.09 from mouser.com (http://www.mouser.com/ProductDetail/Atmel/ATtiny13V-10PU/?qs=sGAEpiMZZMvu0Nwh4cA1wUVlLgw9m2DPt6IffusRY5Y%3d)
4x micro servo motors (hxt900 compatible): I found a few different places to get these. I've had good luck with hobbyking, but there's also dealextreme.com, suntek.com and ebay.
Proto Board: $3.19 from Radio Shack (http://www.radioshack.com/product/index.jsp?productId=2102846#)
Wire: Black and Red are good choices for colors
Pushbutton: I like the sub mini pc mount pushbuttons (4 for $1.00) (http://www.allelectronics.com/make-a-store/item/PB-126/SUB-MINI-PC-MOUNT-PUSHBUTTON/1.html)
1k resistor: (brown black red)
LiPo battery: Anything that will be able to supply 3A worth of current. Here's a good choice from hobbyking for $5.33:
LiPo battery charger: You might want to shop around on ebay, but Hobby King sells one that I've used and seems to do the job here: http://www.hobbyking.com/hobbyking/store/__8247__Turnigy_2S_3S_Balance_Charger_Direct_110_240v_Input.html ($11.44)
DC-DC regulator: $4.90 from hobby king (http://www.hobbyking.com/hobbyking/store/__10312__Turnigy_5A_8_26v_SBEC_for_Lipo_.html)
Stiff plastic headband: preferably black. I found one at a garage sale, but here's a cheap source I found for them online ($7.49 for 12) (http://factorydirectcraft.com/catalog/products/2346_1302_2533_2297-21165-1_black_plastic_headbands_12pcs.html)
Black fur, white fur and grizzly black fur cloth: I found these three at Joanns for about $5-10 a yard each
Glue for glue gun
Sheet of acrylic (1/8" should do): Picked one up for around $5 at the hardware store
Metal brackets: I used mailbox brackets that I picked up at the hardware store for $7 or so
Black insulating tape
Step 3: Mounting the base onto the headband
First we need to figure out where to put the ears on the headband and how to fasten them so they're firm. You should have received some arms with the servos you ordered. Pick out an arm that has a horizontal presence and a smaller vertical presence. We will fasten this via screws to the head band so that the servo responsible for the left/right twisting motion of the ear will be secured to it.
Once the arm is picked out, figure out where each ear should be placed on the head band. Drill out three holes for each ear, 6 total (3 on the left, 3 on the right). Make sure to position the holes in as straight a line as you can, using the arm holes as a guide to the approximate location of the holes in the headband. The line the holes lie on should be perpindicular to your face: i.e. they should run from ear to ear and not the other way. I found that 5/64" drill bit worked well as the hole produced was just bigger than the servo screws I was using.
Once the holes are drilled, fasten the servo arm to it. You can screw the servo into the arm through the middle screw of each arm to make sure things look right and the range of motion is preserved. If any of the screws that jut up from the bottom interfere with the motion of the servo just use the dremel to shave off the top portion of the screw.
Step 4: Constructing the servo arm
Next we will create the arms that attach to the base servos where the "back and forth" servos will be attached, which I will call the "top" servos. For a particular ear, the second, top, servo is attached to the base via a metal arm. The top servo will be attached to the arm via a plastic arm that came with the servos. You might need to cut an arm to fit onto the metal bracket so it doesn't jut out anywhere you don't want it to. We will be constructing the metal arm that the top servo is attached to from the mail box brackets.
The mail box brackets are much to long so they will need to be cut. To measure where to cut the metal mail box brackets, place the base servo on its side where at the base of the metal bracket, where it bends. Next, place the plastic servo arm in line with the metal bracket next to the base servo. Mark the top on the metal bracket and this is where we will need to cut. We need to make sure the top is pretty close to the end of the plastic servo arm as any excess will interfere with the back and forth motion of the second servo.
Do this for both of the metal brackets and cut them with your dremel. Once this is done, place the servo arm on the cut metal brackets. Mark two dots for each metal arm where the servo arms main screw hold is and where you want the supporting screw to go. Drill both of these holes in each of the metal brackets.
After you drill the holes for the servo arm, if you notice the corners are too sharp on the metal bracket, you might want to sand them down, either with sandpaper or a grinder.
Once you've drilled the holes in the metal bracket, it's time to glue them to the base servos. I find gorilla glue to be strong enough. You need to make sure that the second metal bracket is a mirror image of the the first when gluing it to the second base servo.
I had a hard time clamping them down with something that wouldn't stick to the end product so I just tried my best to position them with some clothesline clips so that the metal brackets dried with as much contact as possible to the base servo. You need to make absolutely sure that no glue creeps into the shaft of the servo as that will ruin any possible motion.
You can also replace the metal "L" brackets with anything that is strong enough. I tried some plastic bits that I found at a hardware store in the shape of an L, but they turned out to be not quite long enough. The only requirement is that they light enough and strong enough to be used as an arm so you might want to experiment with some other hardware bits to see if they work better.
Step 5: Constructing the top servo skeleton
Cut out a pattern in paper of what you want the front of the kitty ears to look like. Once this is done, trace that pattern twice into the sheet of acrylic and cut it out. I used the dremel for this and the edges were pretty rough so I had to use some sand paper to even them out.
Position each of the top servos on their respective acrylic ear cutouts so that they are as far down as possible without jutting out from the bottom. Make sure the shaft is horizonal relative to how the kitty ears will sit. Once satisfied with the position, glue them to the acrylic. Make sure that, just like the base servos, you glue the acrylic to the second one so that it's a mirror image of the first.
Step 6: Wiring the circuit
I like to cut out only what I need from the perf board and then work on that. I use 14-16 holes across (4 for the 8-pin ic + 6 for the two servos on a side + 2 for the button + 2-4 for power and ground).
You can see my wiring. It's a little messy, but it works. After the wiring is done, I like to use the multimeter to test for continuity to make sure everything is connected correctly.
I used right angle (0.1") headers for any connections to the circuit. This keeps the vertical size down and puts it onto the foot print of where the circuit will sit on the headband. I like to put the servo connections on the sides with the battery and power connections poking out of the back.
I like to cut out a small piece of perf board and connect the pushbutton to it. I attached long wires to it to make sure I would be able to comfortably be able to push the button even though it's connected to the circuit that will ultimately sit on my head.
In order to connect the female leads on the battery, the regulator and the circuit board, I had to make a few makeshift male to male connectors from pieces of perf board and resized headers.
You can also check the circuit diagram here at upverter: http://upverter.com/abetusk/2ff4634ff64db304/Kears/
Step 7: Programming the ATTiny13
Download the hex file for the kitty ears project from github and use avrdude (or whatever flavour of programmer you like) to program the ATTiny13. The ihex file can be found here: https://github.com/abetusk/kears/blob/master/kears.ihex.
Once it's programmed, I recommend pluggin in the power (battery through the regulator, of course), a button and a single motor to make sure everything is working as it should.
Go through each servo connection with the motor. For each posiion you should notice the servo motor wanting to be in a single position and fighting you if you try to change it. Pushing the button should also change the position of the motor.
If things aren't working, here are some common things I've found are wrong:
- Make sure continuity is correct for power, for ground, for the signal line from the micro to the signal line in the servo header.
- Make sure your battery is charged and that it's outputing somewhere in the 8-40V range. Make sure the regulator is outputting 5V.
- Make sure all connections are properly soldered on. If moving the board around, moving the servo or moving the power connection makes things jitter, this is a good indicator that a connection is coming loose or hasn't been soldered on well enough.
Whew! A lot of work, but as you'll see, things are starting to takeshape and we're more than half way finished!
Step 8: Calibrating the servos
The servos could be given to you in a any state or you could have moved them accidentally so it's best to position the servos while they're in 'home' position and so you know that they're not going to run into anything when they're moving.
Make sure the glue has dried for the base servos and the top servos. I like to shave off the excess gorilla glue that comes out. When you've made sure the glue has dried, mount the base servos onto the headband. Connect the top servos to the base servo's arm. Connect all the servos to the circuit board, making sure to get the position correct.
Depending on your servo, there will be different colors indicating which line out is power, which one is ground and which one is signal. servodatabase.com (http://www.servodatabase.com/) has a lot of information about the servos commonly encountered, including the HXT900 (http://www.servodatabase.com/servo/hextronik/hxt900) and the TG9e(http://www.servodatabase.com/servo/turnigy/tg9e). A useful resource I found was here(http://www.societyofrobots.com/actuators_servos.shtml) where they give some common colors and their meaning:
All servos have three wires:
Black or Brown is for ground.
Red is for power (~4.8-6V).
Yellow, Orange, or White is the signal wire (3-5V).
The programmed ATTiny13 expects the following arrangement (all positions as if we were wearing the kitty ears):
pin 5 (PB0) - bottom right
pin 2 (PB3) - top right
pin 6 (PB1) - bottom left
pin 7 (PB2) - top left
The datasheet for the ATTiny13 can be found here(http://www.atmel.com/Images/doc2535.pdf).
Once everything's connected, power on the circuit by attaching the battery to the regulator and the regulator to the circuit. While the circuit is on, position each of the servos so that they rest in the desired home position. The base servos should be facing forward and the top servos should have the acrylic in the same plane as your face.
Once they've been positioned, run through each of the preset motions to make sure they can move with the full range of motion without hitting the headband, the armiture or the other servos. This also serves as a final test to make sure the circuit is working properly and gives you the opportunity to debug anything that might have gone wrong up till this point.
The preset motions are as follows:
Press and hold - "Surprise"
Tap then press and hold - "Angry/Sad"
Tap three times - "Ear wink"
You might need to grind down the metal armiture around the edges where it's close to the top servos attached acrylic.
If the top servos motion hits the base servo during one of the preset motions, reposition the top servo forward a bit more so that its full range of backward motion is allowed.
Once the servos have been positioned, turn off the servo by disconnecting the regulator from the circuit.
Step 9: Sewing the skin
Next we will sew the outer cloth skin of the kitty ears.
Use the same pattern that you use to cut out the acrylic, trace it onto the white fur and cut it out. The other black fur pieces aren't as important to get their shapes right as they will be mostly following the white front ear piece.
I used a 5x8 index card with a diagonal cut into it for the back ears pattern. Make sure to have two pairs of mirror images of the back ear cut out of the black fur cloth. The under skirt for the ear needs to be approximately the length of the bottom ear and an inch or so in height.
Don't worry about getting the black cloth exactly right as we're going to cut it to size when it's positioned on the ears.
When sewing, use the traced pattern on the front white ear as a guide as this will be what's most visible when the ears are assembled. After you're done sewing make sure to cut the excess seam allowance on the inside.
Step 10: Gluing the backing for the top ears
This step isn't strictly necessary but I like to give the ears a little body, so I glue some foam to the back of the top ears.
First cut out the a small ridge on the bottom so that it fits snugly on the top of the top servo (behind the acrylic of course). Once you've positioned it, trace out the edge of the acrylic ear onto the foam and cut off the excess. Cut off the excess foam to give the ear top a little bit of a shape. Don't worry too much about this as it's going to be obscured by the folds of the cloth skin.
Use gorilla glue to glue it to the back of the acrylic front ears and wait till it dries.
Once it's dried, I like to run through the preset motions again to make sure the backing hasn't obstructed the range of the top servos. Depending on how thick you made the foam, there might be a little lip at the bottom that will interfere with the base servo. If it does, just slice off the portion of the foam that hits the base servo.
Step 11: Gluing the skin onto the skeleton
I'm still having trouble with this one so you're going to have to try and do what you think is best should the steps below not work for you.
After the glue has dried from the ear backing it's time to glue the skin onto the skeleton.
I've found that going from the top down works best. First glue the top half of the skin onto each of the ears using the hot glue gun. Once that's set and dry, I glue the top of the skirt to the base of the acrylic ear. Once that's dried, I tilt the top servo into the 'down' position and then cut off the excess bottom of the skirt and trim the sides and back making sure to err on the side of leaving to much.
Once it's trimmed and the ears are still in the 'down' position, I put a dot of glue onto the top of the base servo and attach the skin to it. You want to make sure there's a little give because if it's too tight the servo will be fighting against the cloth tension when in the down position. Once that's done, I go through and glue the sides and back of the ear onto the metal arm bracket or the base servo itself. You just have to make sure not to get any glue in the shaft of the servo as that will obstruct movement.
In all of the gluing, you want to make sure that there's enough give of the fabric for the servos. If the fabric is wrapped too tight, the servos will be fighting against it when moving. I'm still having trouble with this step and the end product usually has a few positions where the servos are annoyed at not being in their final position.
At any rate, once the skin is attached and the glue has dried, you should run through the motion to make sure things still look alright.
Step 12: Final assembly
At this point the kitty ears are almost done. All that's left is to attach the circuit to the top of the headband (I use electrical tape for this), wrap the headband in some fur to cover up the circuitry and put the wire in some housing.
To start off I wrap the circuit in electrical tape and attach it to the top of the headband. You just need to make sure the button connection or wire and the power connection come out the back.
Once the circuit is in place I put grizzly fur on the top as it has a little body and looks a bit nicer. I hot glue on the front half of the grizzly fur to the bottom front of the headband. I then hot glue a strip of velcro to the other end of the grizzly fur. I glue the mate of the velcro to the bottom of the headband. This will allow easy access to the circuitry, should I ever need it. Cut a hole through the back of the grizzly fur so that you can access the power and button connections and/or wires.
Then hot glue the shorter fur to the sides and front portions of the head band that still show the plastic.
Insert the wire coming out of the back of the kitty ears into the flex tubing.
I like to attach a power button in between the regulator and the battery for convenience, but that's of course not necessary. Find some housing (I use tick tack boxes) to put the battery and regulator in so that you can put it in your pocket and you're ready to show off your kitty ears!
And there you have it, kitty ears!
I've mentioned it before, but I'll mention it here again: The three preset motions are
Press and hold - "Surprise"
Tap then press and hold - "Angry/Sad"
Tap three times - "Ear wink"
For those of you brave enough to follow this instructable all the way to the end, here's another video of my lovely assistant using them:
And here's another of an initial prototype:
Good luck and have fun!
License: General Public License.