Robotic Skull

by GioMake in Workshop > 3D Printing

434 Views, 7 Favorites, 0 Comments

Robotic Skull

WhatsApp Image 2025-01-07 at 16.44.54_2440bb52.jpg
WhatsApp Image 2025-01-07 at 13.20.51_daa6f8f6.jpg

This is a fun project that you could personalize and make your own. I am motorizing a skull I 3D printed but you can also apply these same mechanisms on any type head! A joystick controls the movement of the eyes, while two different buttons control the blinking and mouth respectively. Note that features are not dependent on each other, you can choose to only make the animatronic eyes or only the moving jaw. Everything comes together controlled by an Arduino board to make one awesome invention to show off to your friends! This project is great for someone looking to get into 3d printing mechanisms and making some cool gadgets!

This was all designed with Autodesk Fusion 360.

Supplies

3D printer to print all non-electronic parts.

Servo - 2 per eye, 2 to blink/wink

Stepper motor for the mouth (you can replace this with a different motor, I only used it because I ran out of servos!)

Monofilament line to control the eyes with the servos.

Arduino Uno board

Joystick

Some buttons

Jumper wires

M3 Bolts

Some lights if you would like!

Superglue in case you have to divide your print into many parts (like I did)

stl files attached

3D Print Your Parts!

WhatsApp Image 2025-01-07 at 13.20.51_6b2d2a2a.jpg

This was the longest and most tedious step for me, I hope it is not so bad for you!

Once you have printed your parts you can glue together any of them that you may have split into sections. Make sure any holes where the string or axles go through are in good condition.

Assemble the Eyes

WhatsApp Image 2025-01-07 at 13.20.51_5ae5596c.jpg
WhatsApp Image 2025-01-07 at 13.20.51_4f1ccfff.jpg
WhatsApp Image 2025-01-07 at 13.20.51_34dc5349.jpg

The eyes are the centerpiece of this design, and we will not go very far if we do not set the eyes up before anything else.

First I attach one of the little cubes to the eye with an axle that runs through these holes, then attach the remaining two holes on the cube to the piece you printed with the file named "vertical axis". Do this twice and you will have both eyes.

This gives the eyes the ability to move around freely. And to attach them to the skull you'll need the piece conveniently named "eye to skull connecting piece" in the stl files. You can introduce it into the eye socket through a hole in the nose cavity of the skull that is accessible through the back of the mouth. Once bolted into place you can then glue the eye pieces on the fitting space and loop monofilament through the holes in the eyes. This will connect them to the motors so be sure to cut a lengthy piece.

Jaw

Screenshot 2025-01-07 134450.png

Attach by running an axle through the holes in the joint of the jaw.

The points circled in red in the picture attached to this section will have holes for you to put some of the monofilament through and make a knot. The points circled in pink are there to attach rubber bands, this will ensure the jaw is always open unless the motor pulls on the monofilament to close it.

Eyelids

Screenshot 2025-01-07 135923.png

I use a staple as an axle to attach the eyelids to the skull, note that the eyelids should not be attached to the eyes. it should look like this

Motors

WhatsApp Image 2025-01-07 at 13.20.51_5fcf6a5b.jpg
Screenshot 2025-01-07 141255.png

Attach the monofilament to the corresponding motors tightly. For the bottom hole on each. eye the monofilament should go under the servo holder attachment. There is a slot for the string to pass through.

Finishing Touches and Coding

I am not a very good coder, and I did not have anymore servos or money to buy more, so I got stuck trying to use a stepper motor I found for the jaw to open and close. Whenever I tried it only the stepper motor would receive power and not the servos so I have put the jaw movement on hold until I can either figure out how to make the stepper motor work well or get another servo to replace it. I am including the code for the eyes. Feel free to improve on it.

#include <Servo.h>

Servo motorx;
Servo motory;
Servo motormy;

int buttonState = 0;
int xval;
int yval;
int myval;
int x_pin = 8;
int y_pin = 9;
int my_pin = 13;
int initial_position = 90;
int initial_position1 = 90;

void setup() {
Serial.begin (9600) ;
motorx.attach (x_pin) ;
motory.attach (y_pin) ;
motormy.attach(my_pin) ;
motorx.write (initial_position) ;
motory.write (initial_position) ;
motormy.write (initial_position) ;

}

void loop() {
xval = analogRead (0) ;
yval = analogRead (1) ;
myval = analogRead (1) ;
xval = map(xval, 0, 1023, 0, 180) ;
yval = map(yval, 0, 1023, 30, 180) ;
myval = map(myval, 0, 1023, 0, 150) ;
motorx.write(xval) ;
motory.write(yval) ;
motormy.write(150-myval) ;
Serial.print(150-myval);
Serial.println();

delay(10);
}