Animatronic Mask

Not as advertised. Seller did not mention anything about the mask winking and muttering ”

Mask is haunted

Quick project summary:

Step 1: Designing, tooling, and forming the leather mask

Step 2: Developing wire linkages for eyelid and jaw mechanisms

Step 3: Sourcing and assembling components and circuitry

Step 4: Programming state machine control of sensor, servos, and LEDs

Step 5: Housing and staging the mask for display

Technical skills employed:

Crafting: Leatherworking, developing wire linkages, creatively staging final product

Hardware: Servo motors, time-of-flight distance sensor, LEDs

Programming: CircuitPython, I2C, finite state machine

My family had a tradition throughout my childhood of putting on yearly Halloween shows for the neighborhood. As soon as October rolled around, I’d spent my time after school helping turn our garage into a stage and building props for the stage magic we incorporated into our shows.

I made this spooky animatronic mask as a present for my dad, who put in so much time and effort to make our shows as memorable as they were. I tried to reflect as much of the fun and creativity of our Halloween shows as possible in its design. My basic concept was for a cursed mask that gets angry when you disturb its slumber by approaching too closely.

I started out by designing and tooling the leather mask, along two unattached eyelids and a hinged jaw. This involved sketching the mask's pattern, cutting a blank from thin leather, tooling the decoration, forming each component, and finally dyeing it all green.

I decided that 14 gauge steel wire would be an inexpensive and easy material to make the linkages used to move the eyelids and jaw, along with the frame used to mount the mask. However, I quickly learned that forming this wire is not as simple as it seems. I must have gone through at least half of my 32-foot spool trying to make a set of linkages with dimensions that fit under the mask and provided the proper range of motion.

I took this snapshot midway through this process, so these aren't the linkages that I used when assembling the final product. I experimented with several iterations of mechanisms, eventually landing on a simple four-bar linkage for each eyelid and a hinge for the jaw. I took measurements of the eyelids in the open and closed positions and even drafted out how I wanted to move, but I found it hard to predict the pattern of motion of the linkages once I had bent and assembled them. In the end it was a process of trial and error until I had a set that worked well.

In-between working on the linkages used to actuate the animatronics, I was also tackling the programming needed to animate the mask. I used a Raspberry Pi Pico microcontroller as the brains, which offered several benefits. First, it met the hardware requirements of the project (GPIO and processing power mainly) at an inexpensive price. It also had a small form factor and was easily sourced. Last, it allowed for straightforward programming in Adafruit’s circuitpython language, which simplified sensor communication and motor control.

Finding a proximity sensor with the right range for the kind of animatronic jump scare I was planning was a bit of a challenge. Most low-cost, small form factor sensors I found didn’t work well across the range I had in mind. However, I eventually found an Adafruit laser time-of-flight distance sensor with an acceptable range that allowed for accurate detection of someone approaching the mask from a reasonable distance up until they are standing directly in front of the mask.

Once I had sourced all the right components, I soldered a prototyping-oriented circuit board together with headers that allowed for easy reconfiguring of the LEDs, servos, sensor, and power supply and moved on to programming.

Although I had some ambitious ideas for how to program the mask’s response to detecting an approaching victim — I wanted to add some voice lines and matching jaw movement triggered by different speeds of approach — time constraints meant I had to pare down my initial plans. I focused on giving the mask as much character as I could with a simplified set of eyelid and jaw movements triggered by different distance ranges from the sensor.

In the end, I programmed the mask with three different states. The first is a resting state in which both eyelids are closed, the eye-socket LEDs are off, and the jaw is shut. The mask stays in this state until an object is detected within a certain range. At this point it transitions to the “waking up” state, in which one of the eyelids is raised half-way and the eye behind is illuminated. If an object is detected within a second, closer range, the mask transitions to the “surprise!” state, in which both the eyelids and the jaw spring fully open and the eyes are illuminated.

This mask is meant to look like it’s just been rediscovered after having spent decades packed away in that warehouse from Raiders of the Lost Ark. I added the spanish moss and LED fireflies as accents to sell the idea that this mask was hastily packed away during an expedition deep into some bayou.

When everything was finally assembled and the finishing touches had been added, I packed it up and gave it as a gift to my dad for Halloween.

Previous
Previous

Nitinol Animatronic Eye

Next
Next

Zephyr Kite Companion