Beginner's project involving servos

Hello,

I'm thinking of using an Arduino Uno board to make a simplistic animatronic construct.
The goal is to replicate one of two things:
a) The mouth of an alien (see YouTube link for an example: Animatronic Alien (Preview Part3) - YouTube )
b) The mouth of one of those singing bass plaques (http://www.worldoffemale.com/wp-content/uploads/2011/08/singingfish.png)

I'm trying to make a prop that emulates a yelling motion.
The construct I want to build revolves around an animatronic mouth's movements.
I plan to have three mouth positions (neutral closed mouth, "cheese!", and "ahhh").
The mouth itself will be foam latex formed/painted/refined, with guitar wire (or something similar) running along the the lips. Perpendicular to these wires will be 3 more wires (points of articulation) that lead to the servos.
See my attachment for the visual on the lip-wire set up I had in mind to replicate. The latex lips/mouth dimensions would be around 2 x 3 x 1 (height, width, depth: all in inches).

I'd really like to make the motion be accompanied by sound, sound that is in sync to the motion. The motion of the lips would be specific/predefined/unchanging, and activated upon command (whether through a knob, or push button).

The concept would essentially run like this:

  1. System on
  2. [decision] activate? through knob potentiometer or push button
  3. sound activates, first mouth movement activates
  4. sound file still active, second mouth movement activates
  5. sound ends, mouth goes to neutral [or returns to first motion, then neutral]

As far as hardware, I believe I should have the following:

  • Arduino board
  • appropriate USB cord (to program the board's commands)
  • breadboard
  • jumper wires
  • servos (5, maybe 3? if there is a more economic construct for the lip wire)
  • external power supply for the servos (I do not know what would be best for five servos)
  • Arduino USB-SD MP3 Shield (to allow sound?)
  • speaker (to allow sound?)
  • potentiometer / or push-button / or pressure sensor (activation?)

This may be all the things that I have thought of so far, but I do not know what else I might be missing. I've had some exposure to basic Arduino project out of the starter kit, but would really like to use this project of mine as a means of getting more experience.

I appreciate constructive criticism, and would be open to suggestions, and absolutely to any help or specific details to help see me through this project.
Thank you for your time!

edit:
Sorry, seems I forgot to include some additional info.
I plan on maybe using HS-55 servos, since I believe they will be able to pull/push on the chords set up to move the construct's lips. Unless i'm wrong, it should not be too heavy of a task for those small servos?
And to be clear, I currently do not have the Arduino Uno board. I've seen a RadioShack selling one for $30 minus the USB cable, and I have my own breadboard, but I don't know if the Uno would be the most economic in space and functionality for the kind of project i'm trying to complete. From my own research, it seems that the Uno should do the job, but I would like to hear other's opinions on my project and project goals.[/glow]

OK, the UNO is for building bigger projects with "shields" for wireless, more USB, lots of servos and such, but for simpler systems these are unnecessary.

If you only want the USB for programming, you want a Pro Mini and an FTDI or similar adaptor (there is a trick about which of the "clones" of these adaptors - correctly - have the reset pulse functionality). The Pro Mini is all of the Uno (and two more analog ports) without the USB and rather smaller.

Get it, and work your way up through servo control exercises.

I haven't played with my audio (they are not actually MP3 as they cannot decode compressed MP3) modules yet. The trick would be synchronisation ...

If you are starting from scratch I believe you should get an Arduino Uno as it is the most standard of the Arduino devices. If things don't work on it you will be able to get plenty of advice. I think the extra cost will be justified by saving a great deal of time and late nights.

Because of the way the Uno is constructed it is ideal as a learning tool, and because it has inbuilt USB connectivity you won't have any problems with that.

I suggest you only move to a Pro Mini after you have gained some experience.

...R

The hardware side seems simple enough, but the control logic could be quite difficult. Were you planning to hand-code the mouth movements for each sound track, or have these worked out automatically from the data? I seem to remember that Gerry Anderson invented the Supermarionation system which did this automatically for his marionette films, and if you could reproduce this the result could be superb. But it seems like quite a challenging problem to me.

Just wanted to say that if you tear apart one of those singing bass plaques you will find that they don't use servos. They use gear motors that make a limited motion and then are pulled back to "start" by spring tension.

I think you could use a servo(s) just fine for your project, but I thought I would throw that out there.

If you see one of those bass plaques at a Goodwill store like I did the other day, buy it if it's a dollar or some stupid low price and rip it apart. You get three motors out of the deal.

I agree with PeterH. I think this is a challenging problem. I want to sync lights to music- which is essentially the same problem. The way I want to do it is to use something like Vixen
http://www.doityourselfchristmas.com/wiki/index.php?title=Vixen
to sequence the action with the music, then figure out how to take the output of that sequenced file as serial which an Arduino can interpret and act on. I'm miles away from actually doing it, but that is my concept.

Robin:

It seems I'll end up sticking to the little that I do know with an Uno.

PeterH:
With some basic knowledge with C, I don't feel like a deer in headlights, but I understand there is much to learn to make the construct's motions more complex.
Overall, I prefer to keep the code simple, with a structure similar to the following:

  • Decision: push-button (//true)
    -- if push-button (true), execute sound file (//only one sound file is required. Short, 4 to 5 seconds long)
    --- if soundfile active, execute servo-motion 1 (//mouth motion 1, or "cheese!" motion goes active via servo)
    ---- if servo-motion 1 active, execute servo-motion 2 (//mouth motion 2, or "ahh!" motion goes active via different servo motion)
    --- else soundfile inactive, execute servo-motion 0 (//mouth will return to "neutral" position via servos returning to original position, zero physical displacement)

The code would probably modified from Arduino's tutorials sample provided in their sample projects. Would this work?

I'd like to draw/type out the flowchart sometime later today, but other duties may prevent me from doing so. These commands are close to what I had in mind as my plan of action.
The motions should be simplistic, but I think with a good wire apparatus secured to the servos, the latex lips should move just fine.

Regarding the three types of servo motions (from the mechanical aspect), I'm planning on just having the code react the the sound file being played, making each servo go through two "phases".
The 1st motion command would make the servo turn a certain range of degress, and the 2nd motion command makes the servo continue to turn a bit further. Following this suit, the "neutral lips" state will be predefined as well, returning to "state zero" if you will, in the opposite direction.

With mechanical planning/measurements I hope to make this simple project work, since it may produce a cool result based off of simple wiring and programming.
Nesting and stacking simple commands isn't beyond my range of comfortability in this field (at this point).

bigred:
That is something worth considering. I may resort to such motors should I have to scrap-redo my concept.

Synching things together is always fun, which is exactly why I'm opting for the more mechancally-measured approach. Of course, when [<-keyword] I encounter problems in execution or something physically acts out of place, patching it all up will be another basket of fun.

Some good insight so far, I'd love to hear more opinions.