loading
Picture of Animatronic Eyes
This instructable shows how I made a set of eyes for an animatronic robot character. They only move from side to side, but have working eyelids. (18+)

I actually modified a manually controlled set of DIY puppet eyes, to use servos. Hence, I originally performed the steps in a drastically different order. In this instructable, I try to present the steps more logically.

The eyes were made with the following:
  • model plane plywood (3mm)
  • 2 mini RC servos,
  • 1 standard RC servo (another mini would work)
  • scrap styrene,
  • epoxy,
  • glue,
  • paper clip,
  • small screws
 
Remove these adsRemove these ads by Signing Up

Step 1:

Here is an example of how they work. I control them from my laptop with an SSC-32 controller from Lynxmotion, seen to the right of the eyes.

Step 2: Make base

Picture of Make base
I used a piece of 3mm plywood, approximately 3 inches square to make the base for the eyes (the sketch is not necessarily to scale).
There are two pieces of stripwood glued to the bottom (which can be seen as "bumps" on the bottom edge and in the picture in step 6) that are 1/4" square by the length of the base. They are separated by the width of the mini RC servo cases and are used to screw the servos to the base.

Note the two 1/2" square posts mounted to one side. They will be used to mount the servo that controls the eyelids. They are separated by the width of the RC servo case, are the height of the case and are installed so that the servo arm will be in a direct line with the control arm of the eyelids (See step 2). The eylid pivot point and the large holes are actually made in a separate step.

Step 3: Make eyelids pivot point

Picture of Make eyelids pivot point
We will need a pivot mount for the eyelids. Cut from .060" styrene plastic strip 1/2" wide, to the height desired. Real specific about the height, eh? Here's how we determine the height. Place a ping pong ball on the eye plate. Measure from the eye base to the center of the ball. Add the height that the servo axle protrudes from it's case.

Make a mark on the 1/2" strip this distance from the end. From this mark, add 1/4" and cut the strip to length; make two such strips. Centered at the mark you just made, drill a hole slightly larger than the styrene rod.

Then, from each side of the hole, slightly towards the center, cut a line to the end of the strip. repeat on the other side. This should result in a channel to the hole, slightly narrower than the rod, so that when the rod is snapped in from above, it will be held within the hole by the smaller channel. Look at the sketch! And remember to make two of these (you should drill the center hole in both at the same time). mark the front edges so that this hole remains aligned when assembling.

Now that the sides are made, cut several pieces of the strip about 1/4" below the center of the hole. You will need about six, depending on your desired eye spacing. Glue these strips together in a block and then attach the pivot sides to either end. Make sure the front edges you marked earlier are both on the front. You can also use a solid piece of styrene or wood as well. Coat this assembly with a layer of epoxy, except for its bottom.

Place the assembly between the eyes on the eye base, centered side to side as well as front to back on the eye centerline drawn in the last step. Mount this assembly on a small square of plywood, to lift the eyelid above the eyes and make it easy to mount. Drill a hole in the base for a small screw and drill a corresponding pilot hole in the pivot point assembly. Use a small screw to mount it to the base. I like to make my assemblies so that they can be taken apart.

Step 4: Make eyelids

Picture of Make eyelids
lid-2.png
lid-3.png
The eyelids are made from the round end of plastic Easter eggs; they fit comfortably over Ping Pong balls. Also, an old piece of T-shaped plastic sprue from a model kit was used as the axle for the eyelids. A straight cylindrical plastic rod can also be used.
On one edge of each ball, a hole was drilled and reamed to fit tightly on the plastic sprue. Then, close to the holes but not too close, a wedge shape was trimmed from the hemisphere to make the eyelids. Note the sketch shows a segment that is actually too large; the picture in step 7 is more accurate.

The two halves are then positioned on the rod (the sprue or styrene) and arranged so that they are inline. Mine are spaced approximately 7/8" apart; you will have to leave room for a pivot mount.
Initially, a drop of super glue was used to keep alignment. Note that the separation on the sprue/rod and the width of the pivot mount determines the eye spacing.

Once the super-glue has set, the assembly was spray painted black on all sides. Once the paint has had time to cure, mix up a batch of epoxy and coat the lids (only! not the connecting rod) with epoxy. First the top half, then turn the assembly over and epoxy the sprue connection points with more epoxy.

Once the epoxy has dried, it is time to make the lever for operating the eyes. Straighten a large paper clip. Then, heat the end of the wire and carefully press it into the pivot rod/sprue directly in the middle between the eyes. It should melt into place. Hold it still, while it cools and the styrene becomes firm enough to hold the wire. A drop of super-glue and/or a coating of epoxy will also hold it in place.

Step 5: Make eyes

Picture of Make eyes
eye2.png

The eyes are made from Ping Pong balls. First, a small (1/16") hole was drilled from top to bottom. I have a drill press and the ball fit into the circular hole of my baseplate. I had carefully centered the baseplate hole, so that the resulting pair of holes in the ball were radially aligned. The hole is used to screw the "eye" to the mini servo. After both holes were drilled, then I drilled the top hole larger to a 1/4" opening. This larger hole is to allow screwdriver access to the bottom of the ball.

I then used a circle template and chose a hole approximately 1/2 the size of the ball. I positioned the template so that it was as close as I could place it parallel to the axis of the two holes drilled earlier. I traced the hole and then carefully using a razor blade knife, cut the circle out of the side of the ball. Once the cut was complete, I laid a sheet of sandpaper on a smooth surface, and rubbed the cut edges of the ball over it to smooth any rough edges remaining. This large hol is used for access, when mounting the eyes to their servos.

The circle template was then used to draw a smaller circle for the iris directly opposite the large hole. positioning it higher and lower on the ball is possible for various looks, but the distance from each side to the outer circumference of the large hole in the back should be equal.

Step 6: Mount eyes

Picture of Mount eyes
Mark the position of the RC servo axle where it falls when the servo is mounted between the two pieces of strip wood. Make this mark at one end of the base, nowhere specifically along its length (it doesn;t matter - yet). Then repeat this process along the edge, on either side of the pivot mount and the far side. Draw lines between the marks. Note that a servo's axle is closer to one end; make sure this side is at the front when making your marks.

Mount the servos with screws from the bottom of the plate. My mini servo had a round protuberence where the xle exitted that determined the size of the hole I was about to drill (next paragraph).

The holes to be drilled for the servo axles will be placed along this line, equidistant from the center. Whatever distance from the center you choose is determined by the spacing of the eyelids, as constructed in step 3. Mine are somewhere close to 7/8". Fiddle by placing the eyes on the base beside the eyelids. You should really read ahead to the next step, because you are going to have to leave room for the eyelid pivot mount, which will be between 1/2" and 5/8" wide.

The two RC servos were screwed to the base plate wood strips, such that their axle protruded through the two holes drilled in step 1. A servo mounting screw was placed in the small hole and a screwdriver inserted to the larger hole directly above it to hold it in place while the eye was placed over the servo. Then, a few quick turns will tighten the orb to the servo. This connection does not need to stand a lot of torque, so hand tightening and no adhesives are all that is needed. Position the irises so that both are facing forward.

Step 7: Mount eyelids

Picture of Mount eyelids
lidmount.png
First, screw an RC servo to the two mounting posts on the eye base from step 1. The axle should be towards the rear. Use the long, adjustable servo arm.

Cut a 1/4" x 3" (approximately) piece of plywood to use as a crank arm. Attach it to the servo arm with small screws and nuts. On the other end, drill a 1/16" hole.

This is where a bit of fiddling about occurs. Bend the eyelid pivot lever (the piece of paper clip) up at a slight angle; measure about where it crosses the crank arm and bend it 90 degrees in the direction of the arm and trim it to 1/2" of the bend.

Insert the end of the lever through the crank arm and gently bend the remainder of the lever back parallel to itself.

Note in the picture that there is another wood post. I found that the rotation of the servo sometimes went too far and the crank was unable to return and open the eyelids. This post serves as an end stop.

As your sizes may vary (as mine did through several prototypes), I cannot be more specific about this process. It really takes a bit of tinkering.

Step 8: Test the servos

Picture of Test the servos
PenguinEyes.png
I use an SSC-32 (serial servo controller - 32 channel) from Lynxmotion (http://www.lynxmotion.com ) to control my servos. Lynxmotion has a USB to serial converter that works well with their products.

Additionally, they have a downloadable free terminal program (LynxTerm) that you can use while testing and fiddling with the servo alignment.

The first step in aligning the servos is to set the two micro servos to their centered position. Then gently turn the eyes so that the irises are facing forward.

Aligning the servo arm, crank arm and pivot lever will take a little more effort. Note the relative angles and positions of these three elements in the attached picture. You can adjust from the servo arm by loosening and reattaching the servo arm with it's screw.
Lynxmotion also have a forum that provides excellent support, which is linked to from their main site. You can see my project there under "Projects | Peter Penguin"  http://www.lynxmotion.net/viewtopic.php?f=20&t=5948  or on YouTube, djl02184's channel.

Step 9: Coding the SSC-32

Picture of Coding the SSC-32
The code is based on the Lynxmotion SSC-32 controller. This Instructable used a DOS .CMD file to send commands to the servo controller. I used an Excel spreadsheet to map action descriptions to the SSC-32 commands, then, in another sheet, used these descriptions to "script" and look up the appropriate "codes" to construct the DOS command. The results were cut and pasted into a .CMD file which was then run to produce the result you see in the video. "delay" is another DOS script that provides delays in units of 10ms by looping and counting the number of loops.

Servo channel #0 is the left eye; channel #1 is the right eye. Servo channel #2 are the eyelids. This particular script below does not control the mouth. The values for the servos were determined via experimentation with the LynxTerm program.

The .CMD file commands for just the eyes are listed below:

@echo off& if defined debug @echo on
rem Initialize eyes to 'home' position
rem Control script starts after pause
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo Open eyes&@echo #2P600 > COM4:
@echo pause&@pause
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look left&@echo #0P2000 #1P2000 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 0.02secs.& @call delay 0.02
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 0.10secs.& @call delay 0.10
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 0.02secs.& @call delay 0.02
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 0.10secs.& @call delay 0.10
@echo Look left slowly&@echo #0P2000 #1P2000 T1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Blink eyes&@echo #2P1050 > COM4:
@echo delay 0.01secs.& @call delay 0.01
@echo Open eyes&@echo #2P600 > COM4:
@echo delay 0.20secs.& @call delay 0.20
@echo Blink eyes&@echo #2P1050 > COM4:
@echo delay 0.01secs.& @call delay 0.01
@echo Open eyes&@echo #2P600 > COM4:
@echo delay 0.20secs.& @call delay 0.20
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 0.50secs.& @call delay 0.50
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 0.02secs.& @call delay 0.02
@echo Squint eyes slowly&@echo #2P1050 T2000 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look right slowly&@echo #0P1100 #1P1100 T1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look left slowly&@echo #0P2000 #1P2000 T1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Open eyes&@echo #2P600 > COM4:
@echo delay 0.03secs.& @call delay 0.03
@echo Cross-eyed&@echo #0P2000 #1P1100 > COM4:
@echo pause&@pause

Step 10: Animatronic in Action

Here is a video of the completed project (sans skin; we're working on that).

Details of the torso construction can be found at Animatronic Penguin Torso

D

GrantLevy4 years ago
Couldn't this project be adapted to work with an RF joystick controller? I'm puppeteer and this intrigues me!
djsfantasi (author)  GrantLevy4 years ago
Most definitely! Not an RC hobbyist, but I see no reason why it couldn't be adapted. Especially simple if all you are talking about are the eyes.

The entire penguin is another matter. I see that requiring a dedicated microprocessor onboard the puppet to interpret the RF Joystick controller commands and map them to the puppet's actions. Fortunately, these microprocessors are small...

The robotics forum I mention in the instructable has many ideas for this area. There is an entire sub-forum dedicated to remote control that discusses these approaches.
makermike4 years ago
Great instructable! Lots of details and good explanations. I'll have to remember this for my next Halloween prop!
What a neat project... thanks for sharing... nice end expression (re: vid)
kelseymh4 years ago
Great project! The video is nicely done, showing most of the range of both the eyes and the beak.
john1010142 months ago
Gabi29143 months ago
Hey I have a question. I'm thinking of making a robot myself and I'm wondering: where would you be able to purchase the servos?
djsfantasi (author)  Gabi29143 months ago
There are many places online: ServoCity, Robotshop, Pololu, and HobbyKing.
MoonPaw33336 months ago

I am making an animatronic and the eyes are 80mm plastic ornaments while the lids are half of 100mm ornaments would this tutorial still work on them?

djsfantasi (author)  MoonPaw33335 months ago
Sure! You'd have to adjust some measurements, but the concept will still apply. You would have close to a 3/4" gap between the eyes and the eyelid. But with a little over 3" eyeball, it might look OK.
you should put a skin around it, that would look SICK. very cool stuff
djsfantasi (author)  Wingmaster7004 years ago
We're working on the body...
djsfantasi (author)  djsfantasi1 year ago
Three years later, and I may have a lead on making a body. Could be a new Instructable on creating a fabric skin for an animatronic cartoon character?
J-Five3 years ago
I SEE YOU!!!!
MovieMaker3 years ago
Very Good, But, where is the code?

Thanks,

djsfantasi (author)  MovieMaker3 years ago
The code is based on the Lynxmotion SSC-32 controller. This Instructable used a DOS .CMD file to send commands to the servo controller. I used an Excel spreadsheet to map action descriptions to the SSC-32 commands, then, in another sheet, used these descriptions to "script" and look up the appropriate codes and construct the DOS command. The results were cut and pasted into a .CMD file which was then run to produce the result you see in the video. "delay" is another DOS script that provides delays in units of 10ms by looping and counting the number of loops. Servo channel #0 is the left eye; channel #1 is the right eye. Servo channel #2 are the eyelids. This particular script below does not control the mouth; the .CMD file commands for just the eyes are listed below:

@echo off& if defined debug @echo on
rem Initialize eyes to 'home' position
rem Control script starts after pause
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo Open eyes&@echo #2P600 > COM4:
@echo pause&@pause
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look left&@echo #0P2000 #1P2000 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 0.02secs.& @call delay 0.02
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 0.10secs.& @call delay 0.10
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 0.02secs.& @call delay 0.02
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 0.10secs.& @call delay 0.10
@echo Look left slowly&@echo #0P2000 #1P2000 T1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Blink eyes&@echo #2P1050 > COM4:
@echo delay 0.01secs.& @call delay 0.01
@echo Open eyes&@echo #2P600 > COM4:
@echo delay 0.20secs.& @call delay 0.20
@echo Blink eyes&@echo #2P1050 > COM4:
@echo delay 0.01secs.& @call delay 0.01
@echo Open eyes&@echo #2P600 > COM4:
@echo delay 0.20secs.& @call delay 0.20
@echo Look right&@echo #0P1100 #1P1100 > COM4:
@echo delay 0.50secs.& @call delay 0.50
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 0.02secs.& @call delay 0.02
@echo Squint eyes slowly&@echo #2P1050 T2000 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look right slowly&@echo #0P1100 #1P1100 T1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look left slowly&@echo #0P2000 #1P2000 T1500 > COM4:
@echo delay 2.00secs.& @call delay 2.00
@echo Look ahead&@echo #0P1500 #1P1500 > COM4:
@echo delay 1.00secs.& @call delay 1.00
@echo Open eyes&@echo #2P600 > COM4:
@echo delay 0.03secs.& @call delay 0.03
@echo Cross-eyed&@echo #0P2000 #1P1100 > COM4:
@echo pause&@pause
Thanks for the Reply.

:-)
the video reminds me of a dolphin because of the sound it makes
djsfantasi (author) 4 years ago
The Epilog Challenge and the National Robotics Week Robot Contest are open for voting. I would appreciate your votes for my entries "Animatronic Penguin Torso" and "Animatronic Eyes".
Thank you, dj
djsures4 years ago
Neat little idea! I might have to borrow this for one of my next robots! Thanx for the tips!
Skeckulous4 years ago
Looks awesome.
I was looking into doing something similar but preferably something that would be as cheap as possible, installable outside, and possibly using a motion sensor.
I feel the only real way to do this is to manufacture a specific board for this project and not use that type of controller.
Any thoughts on driving costs down?

And awesome work.
LucasOchoa4 years ago
pretty chill man
kadirghouse4 years ago
This is the perfect with low cost invention .please try to fit this eyes in any machines to control itself from receiving the hand signal.
IMG0030A.jpg
djsfantasi (author)  kadirghouse4 years ago
See my reply to GrantLevy. It is entirely do-able.

If used as part of a puppet, it can also be controlled by dedicated circuitry that drives the servos directly from a slide pot or two or three mounted in the head. The original eyes were controlled in a puppet's head via a mechanical slider...

We are working on controlling the eyes, indeed the entire penguin, via an iPhone app. Tilting and turning the handheld iPhone would do the same for the eyes, or head or body...
Ghost Wolf4 years ago
are you controlling it or is it a programed?


Love the instructables lots of detail :)
djsfantasi (author)  Ghost Wolf4 years ago
These videos were controlled by a program. The video of the completed body uses a program that is non-deterministic; it performs differently each time it is run. I created what I am calling "acode" (for animatronic code) to specify the actions for the animatronic.

There currently is a project in development to use an iPhone as a controller for "Peter Penguin".
that's cool

were are you going to put it?
djsfantasi (author)  Ghost Wolf4 years ago
Don't know yet... In the den, on the table during the holidays, etc...
Sweet you can always say you have a pet penguin lol
BeerPowered4 years ago
Hey, it's Rico!
djsfantasi (author)  BeerPowered4 years ago
Hey Rico . . . I think I don't know you?
No, i'm not Rico. It's that penguin, from The Penguins of Madagascar. Don't you know that cartoon? The best cartoon ever!
http://static.tvtropes.org/pmwiki/pub/images/penguins_of_madagascar.jpg
That one on the left.
djsfantasi (author)  BeerPowered4 years ago
D'oh!

I know Rico; he was part of the inspiration for the project
Great project BTW.
astroboy9074 years ago
Is anyone else as creeped out as me about this?
luv the end of the vid tho :)
Hey djfantasi, might you be able to email me when you get the chance? I am big into animatronics and would like to know a few things more. Send me a message and Ill send you my email, or if I find out how to work this website Ill send you a message with me email first ha ha
Awesome project :)
ynze4 years ago
I want eyes like that! Great Instructable!