experiment2024

Iron Man MK3 Helmet

Articulated wearable helmet build with servo faceplate + dimmable eyes

Build time

~ 8 hours

Skill range

Intermediate maker

Overview

A classroom-tested, end-to-end build guide for a 3D-printed MK3 helmet. Includes print settings, wiring, Arduino code, finishing tips, and a printable PDF for workshop-style builds.

Quick Steps

  1. Print the sizing ring and verify ear clearance.
  2. Batch print panels and fit-critical parts.
  3. Upload the Arduino sketch to a Nano Every.
  4. Bench test servos, LEDs, and dimmer before install.
  5. Dry-fit shell + faceplate and dial servo links.
  6. Sand, prime, paint red/gold, then clear coat.
  7. Glue seams, add hardware, padding, and straps.
  8. Suit up and enjoy the arc-reactor vibes.

Sizing the Helmet

  1. Print the sizing ring included with the model.
  2. Test fit. Light resistance over ears = perfect.
  3. Scale the shell up/down evenly and reprint if needed.
  4. Do not scale precision parts: brain_base, brain_cap, dimmer_arm, dimmer_mount, ServoArm_active, ServoArm_passive.
  5. Need battery clearance? Use the Dome_04-Resize insert.

Printed Parts List

  • Bolt x8
  • Brain_base, Brain_cap
  • CheekL, CheekR, Chin
  • Dimmer, Dimmer_arm, Dimmer_mount
  • Dome_01, Dome_01-trenchL, Dome_01-trenchR
  • Dome_02, Dome_03, Dome_04
  • EarL, EarR, Eyes, Face, Jaw, Mouth
  • ServoArm_active, ServoArm_passive
  • ServoMount_face, ServoMount_head, Visor
Keep the precision servo parts at 100% scale even if the shell is resized.

Hardware & Electronics

Electronics

  • Arduino Nano Every
  • ES08MA micro servos x2
  • LED eyes (strip or custom PCB)
  • 10k potentiometer for brightness
  • 3-pin slide switch + momentary push button
  • AAA battery pack (4-cell)
  • Jumper wire kit, 2x 2x6x2.5 mm bearings (optional)

Assembly

  • CA glue / Weld-On 16 for seams
  • Elastic head strap + padding kit
  • Sandpaper (120-400 grit) + filler primer
  • Metallic red & gold spray paint + clear coat
  • Clamps or painter's tape
  • M2 & M2.5 hardware assortment, self-tapping screws

Arduino Code

Upload this sketch with the ServoEasing library installed. Tune the open/closed constants to your servo geometry.

#include "ServoEasing.h"
ServoEasing servoTop;
ServoEasing servoBottom;

const int action_pin = 2; // trigger/proximity input (pullup)
const int ledPin = 6;     // eyes
const int potPin = A0;    // dimmer

int location = 31;
int bottom_closed = 107;
int top_closed = 167;
int bottom_open = 20;
int top_open = 20;
int value;
int maxBrightness;

void setup() {
    pinMode(action_pin, INPUT_PULLUP);
    pinMode(potPin, INPUT);
    servoTop.attach(9);
    servoBottom.attach(10);
    setSpeedForAllServos(190);
    servoTop.setEasingType(EASE_CUBIC_IN_OUT);
    servoBottom.setEasingType(EASE_CUBIC_IN_OUT);
    synchronizeAllServosStartAndWaitForAllServosToStop();
}

void loop() {
    value = analogRead(potPin);
    maxBrightness = map(value, 250, 750, 0, 255);
    int proximity = digitalRead(action_pin);
    if (proximity == LOW) {
        if (location > bottom_open) {
            servoTop.setEaseTo(top_open);
            servoBottom.setEaseTo(bottom_open);
            synchronizeAllServosStartAndWaitForAllServosToStop();
            location = bottom_open;
            delay(10);
            analogWrite(ledPin, 0);
        } else {
            servoTop.setEaseTo(top_closed);
            servoBottom.setEaseTo(bottom_closed);
            synchronizeAllServosStartAndWaitForAllServosToStop();
            location = bottom_closed;
            delay(50);
            analogWrite(ledPin, maxBrightness / 3);
            delay(100);
            analogWrite(ledPin, maxBrightness / 5);
            delay(100);
            analogWrite(ledPin, maxBrightness / 2);
            delay(100);
            analogWrite(ledPin, maxBrightness / 3);
            delay(100);
            analogWrite(ledPin, maxBrightness);
            delay(100);
        }
    }
}

Upload via Arduino IDE: select "Arduino Nano Every" as the board, install ServoEasing, and tweak servo endpoints until the faceplate seals cleanly.

Wiring Diagram & Notes

Tap to view full size.

Wiring diagram for servos, LEDs, potentiometer, and switch connections.
  • Servos: signals on D9/D10, power from battery or regulated 5V, shared ground with Arduino.
  • LED driver: PWM control on D6 (use a MOSFET if your LEDs pull real current).
  • Potentiometer: wiper to A0, outer legs to 5V/GND.
  • Faceplate trigger: normally-open momentary switch from D2 to ground with INPUT_PULLUP.

Dry Assembly & Alignment

  1. Mount servos to brackets and validate travel range on the bench.
  2. Dry-fit face + dome with painter's tape; cycle servos to confirm clearance.
  3. If you scaled the shell, mark and re-drill servo pivot holes to match.
  4. Use self-tapping screws for temporary alignment, then commit to CA/Weld-On.

Finishing

  1. Sand prints (120 to 220 to 400 grit) and apply filler primer between passes.
  2. Lay down metallic red on the shell and gold on the faceplate; finish with clear coat.
  3. Install padding, straps, and tuck wiring for a safe wearable fit.

Painting walkthrough: Smoothing & painting tips

Credits & References

This build consolidates guidance from Box and Loop, the Cults3D release, the Thingiverse remix, and the original Reddit thread. Huge thanks to the community for sharing designs and troubleshooting tips.

Stack & Architecture

Frontend

3D PrintingArduino Nano EveryServoEasing

Backend

ElectronicsPWM LightingMicro Servos

Infra

PLA+Filler PrimerSpray Finish

Visual Overview

Iron Man MK3 helmet build photo