3D Printed Animatronic Eye Mechanism on the Cheap

44,150

315

52

Introduction: 3D Printed Animatronic Eye Mechanism on the Cheap

About: The name "Ikkalebob" was invented by my cat when she ran across the keyboard. I attempt all manner of projects, from home engineering to prop replicas. Follow me on Instructables and my YouTube cha...

Having bought a new 3D printer I was eager to try designing and printing some mechanical assemblies, so I thought a great place to start would be with this animatronic eye mechanism. It may look complicated, but this project was super quick to do (just 1 day!) and cost me absolutely nothing. Assuming you already have a 3d printer and some Arduino basics this project should cost you next to nothing and is doable in a single evening.

A joystick controls the motion of the eyeball, while a small push-to-make switch blinks the eye and another potentiometer controls how wide open the eyelids are by default (or you can just think of it as the "tiredness" adjuster).

Of course, this is the kind of project you need to see a video of to fully appreciate, so be sure to check out the video which also has instructions (if you prefer more visual instruction):

Supplies:

You can get the majority of the parts from an arduino starter kit like this: https://amzn.to/31Cj4bw although you'll need to buy some more servos (https://amzn.to/2P7R5ha). If you need to buy anything individually, check the following list:

  • Any Arduino board that can support 4 servos (check to make sure it has at least 4 PWM pins, most do) I used an Arduino Uno: https://amzn.to/2W2cPfT
  • 4x SG90 micro servos: https://amzn.to/2W3ON4j
  • Joystick: https://amzn.to/2N0CGRk
  • Potentiometer (10k ohms is generally a good value to use: https://amzn.to/2o63ze6)
  • Push-to-make switch (Some joysticks have this built in, but its easier to control when its seperate: https://amzn.to/35UM55G)
  • 220 Ohm resistor: https://amzn.to/2JcjaAe
  • Jumper Cables: https://amzn.to/2MCf9XQ
  • 2 x M3 bolts or similar: https://amzn.to/33SsHEA
  • Stiff Wire (I used packaging wire)
  • Breadboard
  • 3mm Universal Joint (This is the only part that isn't as easy to find, I bought them from this link:https://www.aliexpress.com/item/5pcs-Rc-Boat-Stai... )

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Printing

The base prints easily without supports, but the eyelids and eyeball are a little more tricky. I'd reccomend printing the eyeball facing up as shown in the picture, at as high a resolution as possible (I just got away with 0.1mm).

I wanted this to be a very easy and accessible project so I coloured the iris with some marker pens, but to get a better finish you could sand down the eyeball and paint it, perhaps using some 2-part epoxy to get a glossy finish and a lens effect over the cornea. As you can see however, I got great results with a quick and dirty marker pen paintjob.

Step 2: Assembley

The servos fit almost perfectly into their sockets, but I did have to wrap a layer of tape around some servos just to avoid having to use glue. I'd recommend you put the X and Y servos in place (refer to my images to make sure you have them facing the right way), followed by the eyeball itself. Using some needle-nose pliers, I bent a little hook into the wire and plugged one end into the servo horn and the other into the hole in the eyeball. This is easier to understand if you watch the video, but once you understand how the mechanism works, the assembly should be quite intuitive. Put the eyelids and their servos in after the eyeball is already secured, just to make it less fiddly.

The wiring of the Arduino is also quite simple if you already understand how to control servos with a potentiometer, but even if not the wiring diagram above should make the process quite easy. Each servo plugs into a digital pin on the Arduino (as well as positive and negative), and each potentiometer plugs into an analogue pin. Remember that a joystick is actually just 2 potentiometers that you can control simultaneously, so if you understand how the "Knob" example sketch works in the Arduino IDE, understanding how to control 2 servos with 1 joystick should be easy to grasp.

Step 3: Coding

The code for this project is relatively simple, I started with the "Knob" example sketch and added more servos and a few extras. "Knob" simply takes a reading from a potentiometer and maps it onto a range of values from 0 - 180, basically converting the analogue signal into an angle in degrees for the servo to move to. This code does exactly that except, rather than being values from 0 - 180, the numbers have been chosen specifically so that the movement will occur within a narrow range of angles. It might be best for you to experiment with values to get the most organic-looking movement possible, but note that if you don't like coding you can just experiment with the starting positions of the plastic servo horns or the lengths of the wires.

The eyelids take the reading from the Y-axis controller (up and down) and move based on this. When the eye looks up, the eyelids both adjust upwards slightly to accommodate this, massively adding to the realism of its motion. The push switch also sets both eyelids at once to move to the centre, causing the eye to blink.

Step 4: Finishing

Simply upload the sketch to your Arduino and you should be good to go! Note that the puppeteering is the most important aspect of making the eye look realistic, so play with it often to get to uncanny-valley levels of creepy!

Robotics Contest 2017

Second Prize in the
Robotics Contest 2017

Design Now: In Motion Contest

Third Prize in the
Design Now: In Motion Contest

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017

4 People Made This Project!

Recommendations

  • Raspberry Pi Contest 2020

    Raspberry Pi Contest 2020
  • Wearables Contest

    Wearables Contest
  • Fix It Contest

    Fix It Contest

52 Discussions

0
Costa coffee
Costa coffee

Question 8 months ago

Where does the joystick need to go??

1
19doucettejarrod
19doucettejarrod

10 months ago

I tried making this but the dimensions are all messed up (part dimensions in cm and not mm), and if we tried to look at the 3D view of the base, it is something else entirely. I could use some help.

0
19doucettejarrod
19doucettejarrod

Reply 8 months ago

Also, what did you use for a power supply for the arduino?

0
drstoneburg
drstoneburg

Question 8 months ago

I saw your update, April 27, 2017, but haven't found the new stl files. Are they available? And your code for the extra servo board and servos? I recently got a NVIDIA Jetson Nano and want to try stereoscopic imagery. Maybe I can get the plastics printed before the cameras arrive...

0
Jfoster88
Jfoster88

Question 1 year ago on Step 2

Hey there. I have this mostly built but can’t figure out how you connected the universal joint to the back of the eyeball.

It seems to have a very small hole, maybe a screw of some type?

0
Bag103
Bag103

1 year ago

Good afternoon from Spain

sorry for my English .

my problem sure is basic how can I put the pieces to print?

bottom eyes and Top + Lid

They stay detached from the bed and can not print in the air.

Thank you for your attention

0
GerotiCooper
GerotiCooper

2 years ago

Can we get more pictures of how the servos are connected to the eye?

0
Ikkalebob
Ikkalebob

Reply 2 years ago

I've added a few more pictures to step 3, I hope that clears up any confusion :)

0
GerotiCooper
GerotiCooper

Reply 2 years ago

A bit late (for my reply) but thanks!

0
GerotiCooper
GerotiCooper

Reply 2 years ago

Very cool!

There's definitely room for improvement, like having 1 servo control the top and bottom eyelids synchronously.

It can also be optimized to get it to fit in a robot head... ;)

I've got a couple of other projects I have to work on first, as always haha.

0
hoss1589
hoss1589

2 years ago

Could you please put a image of how you wired it on your breadboard?

0
zmcqueary
zmcqueary

2 years ago

Hey there - this is just absolutely amazing! I really think this is truly a spectacular setup for my puppets that I'm attempting to build. Do you have any recommendations for building a two-eye unit?

I really am a noob when it comes to mechanics (but I've got a small 3D printer and a willingness to try!). Not to make a blatant skip, but have you considered selling these units yourself?

Thank you, and I'll probably have LOADS more questions!

0
Ikkalebob
Ikkalebob

Reply 2 years ago

Much appreciated! I can't really sell you one at the minute but I can give some recommendations. I did start to build a two-eye mechanism and I made a short video about it (here!). I tried to use one servo to control different parts of the eye at the same time but in the end I think its more reliable to just not change anything and have two single eye mechanisms instead. One thing I'd definitely suggest though is to look into using a servo driver board (I touched on this in the second video) because with two eyes there will be too many servos to power through just the arduino. 

Feel free to ask more questions! I could send you the 3d model I used in that video too but personally I think its a poor design.

0
FanjitaUK
FanjitaUK

2 years ago

Thanks - I'm in the process of finishing off my build of this, and so far it's going great. What I found was that it was hard to get a good print of the eyelids - but that a standard pingpong ball is exactly the right size to cut into the appropriate shapes - and you can get both eyelids out of one ball if you plan the cutting carefully.

Thanks again for the inspiration - I currently plan to mount mine on top of a large spider-style robot, for added creepiness!

0
Ikkalebob
Ikkalebob

Reply 2 years ago

Great idea with the ping pong ball, please post a picture when you're done ! I need to see the spider robot haha

0
FanjitaUK
FanjitaUK

Reply 2 years ago

Here's a video of the eye on its own, showing the ping pong ball eyelids. I basically cut them from the ball in a similar shape to your 3D prints, and mounted in exactly the same way. Hopefully the lightness contributes to a good fast blink, even with cheap servos.

https://youtu.be/rHtwtQCCT4A

0
ThirdEarthDesign
ThirdEarthDesign

2 years ago

I'm so going to make this at some point. I can feel some halloween inspiration coming!

0
penged
penged

2 years ago

This is great. I want to add an LED to the center of the eye. I think that if I incorparate the blink sketch into the code it should work. Any suggestions?