Animatronic Eye Mechanism

by Ikkalebob in Workshop > 3D Printing

258 Views, 8 Favorites, 0 Comments

Animatronic Eye Mechanism

DSC07110.JPG
The Most Realistic Animatronic Eyes I've Ever Built
DSC07095.JPG
DSC07097.JPG
DSC07109.JPG
DSC07111.JPG
DSC07112.JPG

I've designed a lot of different animatronic eyes over the years - this time I tried to make it as easy as possible to assemble with print-in-place components and snap fits. I had so much fun fitting it into plushies, paintings and models!

The design can be entirely 3D printed and can use hobby electronics components. However I would recommend using Will Cogley’s animatronic compatible eyes and the dedicated EyeMech controller board available for purchase through https://nmrobots.com/

The assembly is relatively easy and suitable for experienced beginners in the world of 3D printing and electronics. Some dexterity is required to assemble the small parts, and it may be tricky to remove some of the supports.

Supplies

The following parts are recommended:

  1. 6x Micro servos, choose either:
  2. SG90 - Low-cost, easy to find, but weaker and slower
  3. MG90s - A great middle-ground between cost and power
  4. Note that several other types of servo with similar form factors may also be compatible with the mechanisms, but not all have been tested at this time
  5. 2x Realistic Eyeballs, choose either:
  6. Realistic Eyes
  7. Ultra Realistic Eyes
  8. Homemade 3D printed eyes
  9. 1x Eye Mechanism Controller Board

On a tighter budget or if you’d just prefer to use more standard parts, you can use a Raspberry Pi Pico with a breadboard, jumper cables and a two-way switch instead, but note that the system may be less reliable than the purpose-made board.

Selecting a Design

Screenshot 2025-03-07 180011.png

The ε3.1 eye mechanism is designed to work with a variety of servos, and has snap-fit and print in place variants

While every effort has been taken to ensure the design fits every servo, there can be differences in size and there are several imitation brands of popular servos with slightly different dimensions. For this reason, you can print the servo fitting block to figure out the best dimensions for your particular servos. Simply print the design and figure out which hole fits your servo best - it should be as tight as you can comfortably assemble it without damaging the parts or the servo. The corresponding letter of the hole should then be matched to the parts which you choose to print.


If you’re unsure - it’s recommended that you choose MG90s servos, and the print-in-place design.


Manufacture

Screenshot 2025-03-07 180330.png
Screenshot 2025-03-07 180253.png

All parts can be 3D printed, and the entire assembly fits on a Bambu X-1 Carbon or P1 series printer. In the downloads you can find pre-made layouts for printing on Bambu printers, otherwise you can layout and slice yourself using the following guidelines:

  1. 0.2mm layer height recommended
  2. Supports are needed for some parts, organic/tree supports recommended
  3. Ensure that all rotating parts are placed with the pivoting rods/rings parallel to the bed
  4. For ε2, The open parts of the pivots (where you can see the circle inside) should be facing down

Care should be taken to remove supports carefully to ensure that the delicate parts are not damaged.

Assembly

Eyemech ε3.1Assembly

Check the video for a realtime walkthrough!

  1. Start by inserting a servo into X-Axis subassembly A. The orientation should be clear from the gap for the wire.
  2. Clip on the Y-Axis subassembly over the top of the servo, securing it into place.
  3. Attach both central pivot holders to the assembly. There should be a little resistance while inserting, then the mechanism should rotate freely.
  4. Attach X-Axis subassembly B to the servo loosely. Note that we will need to detach it later to calibrate its position.
  5. Attach the assembly to the main base component by snapping both central pivot holders in from the underside.
  6. Attach the eyes - I recommend using Will Cogley’s animatronic compatible eyes from https://nmrobots.com/!
  7. Attach the eyelids. Note that the top set has short levers and the bottom set has long levers. Line up the top and bottoms first, then insert into the central pivots by either flexing the mechanism or turning the eyes to the left and right.
  8. Finish fixing the eyelids by snapping in the outer eyelid pivots to the underside of the base.
  9. Place the remaining 5 servos in the orientations shown.
  10. Fasten down the servos with the relevant retainers
  11. Insert the 2 PCB holders from the underside, and snap in the PCB from the top

Wiring and Code

unnamed (9).png
unnamed (8).png
unnamed (7).png
unnamed (6).png
unnamed (5).png
unnamed (4).png
Screenshot 2025-03-07 181215.png

If using the NMRobotics β1.2 Eyemech Board or a raspberry pi pico, you can upload the code to it in the same way. If not using the official board, connect up your raspberry pi pico according to the attached table.

Firstly, download the MicroPython firmware for Pico boards at the following link: https://micropython.org/download/RPI_PICO/. You will also need the Thonny IDE for programming the board which can be downloaded here: https://thonny.org/.

Upload the firmware to the board by connecting it to your PC while holding down the “boot” button, and then copy-pasting the micropython .uf2 file you downloaded earlier on the to the board from your documents/my computer. For more guidance, check the official guide here.

With the microcontroller connected and Thonny open, you now need to install the packages necessary for this project’s code. You will need to download PicoZero and MicroPython Servo. From within Thonny, check the microcontroller is connected by clicking the interpreter on the bottom right and selecting your board/COM port. Then, from within the interface, go Tools>Manage Packages, select “Install from local file” and select both the libraries you downloaded.

With the EyeMechEpsilon3.py code open in Thonny, run the code to make sure there are no errors. Then press stop, and save the code to the board by going File > Save as, selecting Raspberry Pi Pico, and naming the file main.py - this will make the code run by default whenever the board is restarted.

NOTE: The most common issue at this stage arises from a faulty connection between the microcontroller and your computer. Ensure that you have a good quality USB cable that is capable of DATA TRANSFER and not just power, such as this one. USB 3.0 > USB C is recommended, as sometimes USBC > C can cause issues.

Occasionally the USB drivers on your computer may fail to recognise the microcontroller, you can reset them but the quickest and easiest way is to connect another device such as a phone through USBC, then disconnect, resetting the drivers. You may also need to try a different port or unplugging other devices. Most of the time these issues are caused by the USB cable.



Calibration

unnamed (10).png

You can now switch the board into “hold” mode, and connect the servos to the board using the image in this step.

With the board switched to “Hold”, all servos connected and the power on, you can now calibrate the positions of the servos. The eyes should be centred, looking forwards, and the lids should be closed, meeting in the middle. Secure all of the servos to their connectors by pressing them on and tightening up their screws. You can do this (carefully) while they are powered on so you can be certain they are in the right position. All of these should be easily accessible except for the Up/Down servo - so it is recommended that you pop out the servo (taking note of the position) and assemble it in the air before securing it back down.

Operation

Screenshot 2025-03-07 181422.png

The mechanism can be operated by switching it to “move”, where it will move randomly by default. When the controller is plugged in it enters manual mode, and the joystick controls the direction of the eyes and a button blinks the eyes. The slider on the back controls how open/closed the eyes are by default. Have fun!