This is the animatronic mask made by Keith Colton for the 2019 Dublin Maker Faire.
This post will document the assembly and the current electronics being used. All images can be clicked on to view the full resolution image.
In this photo you can see the animatronic mechanism. There are three servos in total. One for the eyes, one for the mouth and one for the neck.
This is a close up look at the eye mechanism. One servo is attached to both eyes via some metal wire. The black rectangles highlight the hinge mechanism for the eyes. Each eye has two of these nut and bolt mechanisms. The purpose of these is to allow the eye to rotate while also keeping it locked in place. If you look closely you can see that the eye is actually glued on to the nut which allows it to rotate.
Here is a top view of the eye mechanism. The mask is divided into two seperate parts. The top part has the eyes and nose and the bottom part is the lower half of the mouth. The top part is held on by matchstick type pieces of wood and hot glue as seen here. There are two matchsticks on the top and two just underneath which are hard to see in this pic.
Here you can see the mouth mechanism. Basically the bottom quarter of the mask was cut off and glued back on to this piece of wood to allow it to move up and down and mimick a mouth.
This is the neck and mouth part of the mechanism. The neck is an upside down servo. The part of the servo that normally does the rotation is actually glued to the floor and the servo body itself rotates. The mouth servo is just above this. The metal bracket is just there for support. As the eye mechanism is in front of the neck/mouth mechanism it would not be able to stay upright without this bracket.
This is the breadboard circuit used to control the mask. An Amazon Echo Dot is connected to the mask. The Echo Dot has a 3.5mm aux output. This output is fed into a circuit that amplifies the signal into a 0-5V range suitable for the ADC on an Arduino. This circuit also contains an analog envelope detector circuit. The output of the envelope detector is what gets fed into the ADC of the Arduino.
Apologies if this is a bit hard to see. The reason why there is two aux ports is because if you plug an aux cable into the echo dot it stops using its internal speaker. This is a problem for use because we want the audio to get sent to the mask but we also want to be able to hear it. So you have to split the audio. You could use an audio splitter like this to do this also. One thing to keep in mind is the aux port on the echo dot is recessed so not all aux splitters will fit (which is why I ended up making my own splitter as in the diagram).
So the audio signal from the echo dot was coming out at around 0.5 volts. This gets get into a non-inverting amplifier with a gain of around 10 or 11 ish. This amplified signal then gets put through an envelope detector. The output of the envelope detector is then connected to the ADC pin on the arduino.
One other important thing to remember is the maximum pulse lengths for the servos. Basically you could break the mechanism by driving a servo too far, there is no mechanical cut off or anything like that. The image below shows the pulse lenghts for the eyes, neck and mouth. If you go outside these you risk stripping the plastic gears in the servos.
Here is a video that I sent to Damon a few months ago with an update on the mask:
After that video I spent a few weeks trying to get head tracking working. The idea being that the mask could be placed in a room and if someone walked past the mask would look at them as they passed by.
The PCB design files, code for the ultrasonics sensor and code for converting the adc value to mouth movement is available in this GitHub repo.
Here is a video I made about the ultrasonic scanner:
In the end, I wasn’t able to use it for tracking people. The data was just too noisy and tracking a moving object was very difficult and I just couldn’t get it working.