Does this project spark your interest?

Become a member to follow this project and don't miss any updates


Animatronic Iron Man MKIII suit

RFID tags in the gloves control shoulder rockets pods, hip pods, forearm missile, back flaps and wireless helmet.

Similar projects worth following
This was a big project! My friend Greg from the Replica Prop Forum wanted to add animatronics to his Iron Man MkIII fiberglass suit so we went all out. After considering several options we used RFID tags in the gloves to trigger the shoulder rocket pods, hip pods, forearm missile, back flaps and helmet. The helmet has wireless control via XBee radios. The boots light up and make sound while walking by using a distance sensor in the boot to trigger the effect.

There is a video of the animatronic system in action here-

The suit is basically broken down into three systems: left side, right side and boots. The left hand has two RFID tags that trigger programmed sequences for the helmet, hip pods and back flaps. The right hand RFID tags trigger programmed sequences for the forearm missile and shoulder rockets. The boots have an infrared sensor that triggers the boot lights and sound effect as soon as the boot is lifted from the ground.

The single most difficult thing about this build is that the suit fits like a glove- there's no room in it! The helmet has less than 1/2" of space around the head, there's about 1" depth for the shoulder rocket pods and the hip pod area has less than 1" depth available so the packaging of the mechanics and electronics is really tight. Another issue is that there's almost no flat surfaces so mounting servos and hardware gets really interesting.

The system is Arduino based and uses four ProMinis- one for each side, one for the boots and one in the helmet. Since we wanted the helmet to be easy to take on and off we decided to make it wireless using XBee radios to send the control signals. For the point to point wiring running from the electronics mounted in the back to the arms and feet we used Ethernet cables and jacks so they could be easily disconnected. The sound effects for the boots are handled by a WaveShield that sits on a Arduino Pro. 

Another issue with systems like this is the voltage and current requirements so we thought it best to power the servos separately using AA batteries, primarily for ease of availability if the suit is to be worn at conventions. 

In the end this build was an enormous learning experience- it was a difficult build, somewhat frustrating at times and a real challenge to figure out ways to get the desired effects while making it as practical as possible and as convincing as possible. My house and garage looked like a hurricane had gone through it and deposited Iron Man parts everywhere. Many things didn't work as originally planned ( I think I revamped the helmet twice ) and I managed to fry a servo but in the end we stuck to it and it all worked out. :)

Please note that I do not manufacture Iron Man armor suits or helmet castings nor do I sell them. This particular set of fiberglass Iron Man armor belongs to my friend Greg who asked for my help in animating it. My friend Greg acquired the molded fiberglass suit and helmet castings from Clinton Hoines of Tundra Designs and they were modified to accept the animatronics. The boots and gloves came from Replica Prop Forum member Zabana.

  • 2 × ID-12 RFID tag reader Sparkfun part # SEN-08419 (LA version is replacement)
  • 2 × XBee Series 1 module Sparkfun part # WRL-11215
  • 2 × Adafruit XBee Adapter board Adafruit Product ID: 126
  • 2 × Arduino ProMini 328 5V Sparkfun part # DEV-11113
  • 1 × Arduino ProMini 328 3.3V Sparkfun part # DEV-11114
  • 1 × Arduino Pro 328 5V Sparkfun part # DEV-10915
  • 1 × Adafruit WaveShield Adafruit Product ID: 94
  • 1 × Pololu 5V DC/DC converter D24V5F5 Steps down the helmet 7.4V battery voltage for the ProMini
  • 5 × Hitec HS-5055MG sub-micro servo For the forearm gauntlet /hip pods-
  • 8 × Hitec HS-85MG micro servo For the shoulder rocket pods/ hip pods-

View all 27 components

  • Build log 12- boot schematic and code

    jeromekelty04/27/2014 at 02:25 0 comments

    Here's the schematic and code for the boots- it's pretty simple. The Sharp IR sensor inputs a value into the Arduino which triggers the Luxeon boot lights and the WaveShield to play an audio file.

    A larger version can be seen here.

    Here's the code-

    // these constants won't change:

    int triggerSensor = 1;            // the sensor is connected to analog pin 1
    int threshold = 750;              // threshold value to decide when the sensor input triggers
    int ledPin = 3;                        // control pin for LED
    int soundPin = 2;                   // control pin for sound board

    // these variables will change:
    int sensorReading = 0;          // variable to store the value read from the sensor pin

    void setup() {
    Serial.begin(9600);                      // use the serial port
    pinMode(ledPin, OUTPUT);         // sets the LED pin as an output
    pinMode(soundPin, OUTPUT);    // sets the sound pin as output
    digitalWrite(ledPin, LOW);            // turn off LED
    digitalWrite(soundPin, LOW);       // turn the sound off


    void loop() {

    // read the sensor and store it in the variable sensorReading:
    int val = analogRead(triggerSensor);

    // if the sensor reading is greater than the threshold:
    if (val >= threshold) {

    digitalWrite(soundPin, HIGH);             // turn the sound on
    delay(10);                                              // wait ten milliseconds
    digitalWrite(soundPin, LOW);              // turn the sound off
    digitalWrite(ledPin, HIGH);                  // turn the LED on
    delay(2400);                                        // wait two seconds
    digitalWrite(ledPin, LOW);                   // turn the LED off


  • Build log 11- right side schematic and code

    jeromekelty04/26/2014 at 23:49 0 comments

    Here's the schematic and code for the right side. It's pretty similar to the left side, minus the XBee radio. The servos for the forearm rocket all receive the same signal- one of the servos that opens the side cover will need to be reversed rotation. Two of the servos that open the forward and rearward shoulder rocket covers will also need to have their rotation reversed as they receive the same signal as the servos on the opposite shoulder. 

    A larger image can be seen here.

    Here's the code for the right side-

    #include "Servo.h"                 // include the servo library

    Servo forearmServo;             // servos to move forearm missile
    Servo rearcoverServo;          // servo to move rear shoulder rocket pod cover
    Servo forwardcoverServo;    // servo to move forward shoulder rocket pod cover
    Servo podServo;                   // servo to move shoulder rocket pod

    int RFIDResetPin = 13;
    int servoPin1 = 7;                   // control pin for forearm missile servos
    int servoPin2 = 8;                  // control pin for rear shoulder rocket pod cover servo
    int servoPin3 = 9;                  // control pin for forward rocket pod cover servo
    int servoPin4 = 10;                // control pin for shoulder rocket pod servo

    //Register your RFID tags here
    char tag1[13] = "440085E77452";
    char tag2[13] = "440085FC330E";
    char tag3[13] = "440085F97840";
    char tag4[13] = "4400863914EF";

    void setup(){

    forearmServo.attach(servoPin1);              // attaches the servo on pin 7 to the servo object
    rearcoverServo.attach(servoPin2);          // attaches the servo on pin 8 to the servo object
    forwardcoverServo.attach(servoPin3);    // attaches the servo on pin 9 to the servo object
    podServo.attach(servoPin4);                    // attches the servo on pin 10 to the servo object
    forearmServo.write(45);                            // rotate the forearm servos to 45 degrees
    rearcoverServo.write(45);                         // rotate the rear cover servo to 45 degrees
    forwardcoverServo.write(45);                   // rotate the forward cover servo to 45 degrees
    podServo.write(45);                                   // rotate the left flap servo to 45 degrees

    pinMode(RFIDResetPin, OUTPUT);
    digitalWrite(RFIDResetPin, HIGH);


    void loop(){

    char tagString[13];
    int index = 0;
    boolean reading = false;


    int readByte =;               // read next available byte

    if(readByte == 2) reading = true;        // begining of tag
    if(readByte == 3) reading = false;       // end of tag

    if(reading && readByte != 2 && readByte != 10 && readByte != 13){
    //store the tag
    tagString[index] = readByte;
    index ++;

    checkTag(tagString);            // Check if it is a match
    clearTag(tagString);              // Clear the char of all value
    resetReader();                       // reset the RFID...

    Read more »

  • Build log 10- wireless helmet schematic and code

    jeromekelty04/26/2014 at 06:48 0 comments

    Since there's very little room in the helmet the wireless system was powered by a single 7.4V NiMH battery pack. The digital servos used in the helmet are designed to be operated on 7.4V so a DC/DC converter is used to provide power for the Arduino, XBee and LEDs. 

    A larger image is available here.

    Here's the code for the helmet-

    #include "Servo.h" // include the servo library

    Servo faceplateServo;
    Servo chinServo;

    int ledPin1 = 4;                    // control pin for LED eyes
    int servoPin1 = 2;               // control pin for face plate servo
    int servoPin2 = 3;              // control pin for chin

    void setup() {

    faceplateServo.attach(servoPin1);         // attaches the servo on pin 2 to the servo object
    chinServo.attach(servoPin2);                // attaches the servo on pin 3 to the servo object
    faceplateServo.write(30);                      // rotate face plate servo to 30 degrees
    chinServo.write(95);                               // rotate chin servo to 95 degrees
    pinMode(ledPin1, OUTPUT);                 // sets the LED pin as output
    digitalWrite(ledPin1, HIGH);                   // turn on LED eyes


    void loop() {

    // look for a capital A over the serial port and turn off LED
    if (Serial.available() > 0) {
    if ( == 'A') {
    digitalWrite(ledPin1, LOW);                         // turn off LED eyes
    delay(500);                                                  // wait half a second
    faceplateServo.write(95);                           // rotate the face plate servo to 95 degrees
    chinServo.write(20);                                    // rotate the chin servo to 20 degrees
    delay(4000);                                                // wait 4 seconds
    chinServo.write(95);                                    // rotate the chin servo to 95 degrees
    faceplateServo.write(30);                           // rotate the face plate servo to 30 degrees
    digitalWrite(ledPin1, HIGH);                        // turn on LED eyes


View all 12 project logs

  • 1

    A few notes and tips concerning the use of servos in the build:

    The servos listed are just what we used based on speed, power, durability and cost requirements. I would definitely recommend using metal gear servos with ball bearings. Nylon geared servos strip very easily, especially the micro and sub-micro variety.

    Several of the servos will need to be changed to reverse rotation since the right and left side of various suit parts receive the same control signal. There are three options- use digital servos (easiest but most expensive), have the supplier change the rotation ( does this) or change the rotation yourself by taking the servo apart and reversing the motor lead wires and the outer two pot wires. I changed them on the micro servos for the shoulder rockets and hip pods myself since I'm cheap. :)

    We did elect to use high voltage digital servos in the helmet for the power they provide and the fact that their speed can be adjusted using a servo programmer. The servos for the hip pod sliding panels and gauntlet side panels also used digital servos since they needed to be powerful and swapping the wires on sub-micro servos can be really tricky. The other reason was because the standard sub-micro servos use nylon gears and we wanted to use metal gears for durability.

    The servo position values in the code would probably need to be altered for another build since no two Iron Man suits are alike. The key when doing this is to make small changes in the values while paying attention to make sure the servos don't ever stall, as they can be easily damaged. If a servo does stall immediately turn off the power to the servos and make adjustments to the code.

  • 2

    Notes about mechanics and suit construction:

    Greg's suit is molded fiberglass. It is unlikely that a foam suit would be rigid enough to support the animatronic systems without some sort of reinforcement, especially in the shoulders as a large area has to be cut away. 

    It would also be best to have a finished assembled (but not painted) wearable suit before adding any animatronic system. It is important to know exactly how much room you have to work with and how it fits the suit performer before adding animatronics. 

    There are lots of different ways the mechanics of this suit could have been constructed. We tried to use readily available materials found in hobby shops and hardware stores whenever possible to save time and money. Items such as the shoulder rocket pods and hip pod hinge assemblies could easily be 3d printed if so desired.

  • 3

    Notes about tools and materials used:

    ProPoxy 20 is awesome stuff. When making the brass tube pivots for the shoulder rocket pods it was easiest to glue the brass tube to the servo casing with superglue ( I use Gorilla glue with a spray accelerator) and then mold some ProPoxy 20 around it- this is an easy way to make simple hinges that are very durable. 

    Adafruit Perma-Proto boards are really great; I highly recommend using them to mount transistors, servo connectors, regulators and resistors. Anything you can do to clean up the wiring in the suit is time and money well spent. If I was to do it over again I would design a custom PCB in order to clean up the wiring in the back torso.

    As far as tools go, most all of the work was done with basic tools; a scroll saw to cut the plywood, soldering iron, wire cutters, pliers and a Dremel tool. A bit of fiberglass work was done in the helmet and for this I really like epoxy resin- I use West Systems epoxies. Epoxy resin doesn't smell and it's a lot tougher than polyester resin. The West Systems epoxy resin also has an incredibly long shelf life and it's super easy to mix if you use their metered pumps.

View all 3 instructions

Enjoy this project?



Mike Hinkle wrote 09/28/2014 at 17:29 point
Great project! Would you like to show it off at the Houston Mini Maker Faire on 11/1? The crowds would love it!

  Are you sure? yes | no

niazangels wrote 04/27/2014 at 09:33 point
I love what you've got going, there! You really seem to have a LOT of free time :D
You inspired these Ironman renderings :)

  Are you sure? yes | no

jeromekelty wrote 04/27/2014 at 15:29 point
Thanks- that's awesome! I have three kids so the only way for me to work on my projects is to stay up late. And there were an awful lot of late nights on this project! :)

  Are you sure? yes | no

betosantos1.personal wrote 04/23/2014 at 18:49 point
Gostaria de ter acesso aos circuitos eletronicos (com os nomes dos componetes) de toda parte eletronica!!
Muito obrigado!!

  Are you sure? yes | no

betosantos1.personal wrote 04/23/2014 at 18:48 point
Parabéns pelo projeto! Muito bom!!

  Are you sure? yes | no

jeromekelty wrote 04/24/2014 at 04:31 point
Thanks! Working on parts list and schematics now. :)

  Are you sure? yes | no

Similar Projects