Novice building Servo controlled talking puppet

A project I am working on requires creating an animatronic milk jug that talks during the course of a skit. I plan on using 3 servos, one for the mouth, one for its eyebrows, and the other to rotate it. Doing some research the mini Maestro seems like the right tool for the job. Being a beginner though I have many questions. The first being is it even possible to create something that is self contained where I can place a button on the outside of the milk container to activate the movements? To do that what batteries would I need and how would I go about creating the switch? I am pretty confident on what servos I need and how it will be constructed but I’m hoping that it can do a lot. My last question is if it was possible to also trigger the recorded voice so that they lined up perfectly? If anyone could lend some help or needs more information I will gladly help. This project is way over my head but if I can get some of my questions answered it would be a lot easier. Thanks


It sounds like the Maestro is a good choice for that kind of project. Each channel on the Maestro has three modes it can be configured in: Servo, Output, and Input. To use a button, you would configure the channel it is connected to in Input mode, and connect the button as shown in the “Attaching Servos and Peripherals” section of the Maestro user’s guide.

The Maestro has an operating voltage of 5-16V, so a good choice of power supply (if you want to power the Maestro and your servos from one supply) is a nominal 6V battery pack, which is also what most standard servos are rated for. We generally recommend a rechargable NiMH AA battery pack like these.

Triggering a voice (or any audio) and making the movements match will probably be the biggest challenge. The Maestro does not have any built-in support for this, but you might consider looking into the Visual Show Automation (VSA) program from Brookshire Software. This software is made for choreographing lights, animatronics, audio, and video and has some built-in support for the Maestro. There is a demo version available on the Brookshire Software website. Another option is to use something like the MP3 Trigger V24 from SparkFun or one of Adafruit’s Audio FX Mini Sound Boards to have the Maestro trigger the sound and time your servo movement appropriately. Both of those boards are able to trigger sounds from digital signals (e.g. connecting specific pins to ground) or through UART serial commands (which the Mini Maestro is capable of sending from a script).


Thanks so much for the help! I’ve gone ahead and purchased everything and am ready to build it. I’m confident it will work well but have one question before I begin. I decided to go with Adafruit’s Audio FX Mini Sound Board since it was a small and cheap option to build the puppet. My only issue is knowing which pins to hook up to hit from the Maestro. It says that to trigger an audio file it must be connected from the trigger pin to ground, but does that mean I could use the ground on the maestro, going from the signal on the maestro to the trigger pin on the soundboard? It would be awesome if you could help explain this a little more because it is a tad confusing for me. Thanks again so much!

Each channel on the Maestro controllers can be configured in one of three modes: Servo, Input, or Output. To trigger the channels on the Adafruit Audio FX Mini Sound Board, you can configure the specified channel as an output and trigger the sound effect to play by having it output a low (0V) signal. Note that using this setup, each channel you are using on the sound effect board will need its own corresponding channel on the Maestro to trigger it. In a Maestro script, you can send a low signal on a channel configured as an output by using the Servo command with a set target value of 4000 (i.e. 1ms). To bring the channel high again, you can use the Servo command with a set target value of 8000 (2ms). A simple script to play a sound effect using channel 0 on the Maestro would look like this:

  4000 0 servo #set channel 0's output low for 200ms
  200 delay
  8000 0 servo  #bring channel 0's output high again so it doesn't repeat the sound

Alternatively, you could control that Adafruit board through TTL serial commands, which would not require the extra Maestro channels, but is slightly more complicated. Also, please note that the SERIAL_SEND_BYTES command used to do this is only available on the Mini Maestro controllers (the Micro Maestro cannot use it).