Animatronic Eyes





Introduction: Animatronic Eyes

National Robotics Week Robot Contest

Finalist in the
National Robotics Week Robot Contest

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

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

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

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

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

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

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

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

I use an SSC-32 (serial servo controller - 32 channel) from Lynxmotion ( ) 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"  or on YouTube, djl02184's channel.

Step 9: 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




  • Epilog Challenge 9

    Epilog Challenge 9
  • Paper Contest 2018

    Paper Contest 2018
  • Science of Cooking

    Science of Cooking

We have a be nice policy.
Please be positive and constructive.




Couldn't this project be adapted to work with an RF joystick controller? I'm puppeteer and this intrigues me!

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.

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)

Great project! The video is nicely done, showing most of the range of both the eyes and the beak.

Did anything ever come of making a skin for this?

Great project!

what program you used to draw 3D?
Thank you so much.

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?

There are many places online: ServoCity, Robotshop, Pololu, and HobbyKing.