Project tutorial
MK 85 Iron Man Electronic Faceplate

MK 85 Iron Man Electronic Faceplate © GPL3+

3D-printed Mark LXXXV Iron Man Helmet from Thingiverse. The faceplate can be remotely opened using an IR remote. Powered by an Arduino Nano.

  • 17 respects

Components and supplies

Fairchild semiconductor tip120 image
Darlington High Power Transistor
TIP 120
7.2V Battery
7.2V RC battery with 2400 mAh
MG996R Servo
Mfr 25frf52 1k sml
Resistor 1k ohm
Mfr 25fbf52 2k21 sml
Resistor 2.21k ohm
E switch eg1218 image 75px
Slide Switch
Ard nano
Arduino Nano R3
CHQB 3 Pin IR Sensor
I got mine from an LED night light from dollar store. It comes with a remote.
LED light for Eyes
3D Printed L Hinge

About this project

I built an Iron Man MK VI helmet (from Iron Man 2) using Pepakura and Body Filler. I automated it back then using an Arduino Nano with two separate battery packs (one for the Nano, one for the Servos (4 SG90’s). The servos were on all the time when in operation and had a manual switch to turn it off. This lead to the servos being powered all the time which drained my servo battery.

The helmet was heavy due to the batteries and the material (Bondo).

I recently got a 3D printer so I decided to print a MK 85 helmet from Avengers: Endgame. I wanted to make the faceplate go up like the previous helmet but I couldn’t find a good hinge system for it online so I decided to remix an existing hinge system for the Mark 6 helmet to fit the 85. Since the design was different, I had to modify the hinges.

Step One: Print the Helmet

Print the free Mark 85 helmet from Thingiverse.

Step Two: Print the Hinges

Print the free MK VI hinges from Thingiverse. You will need to print the following stl's:

  • FaceMount
  • FlatTop
  • HingeArm
  • HingeBrackets
  • SecondHinge
  • SecondHingeMount

Step Three: Print the Custom L Hinge

Print the free custom L Hinge I remixed on Thingiverse.

Step Four:

Attach the following as shown:


With the faceplate fully closed, flip the helmet upside down so you can see the inside. Attach the facemount that's attached to the servo and find the sweet spot. I found mine as shown in the photo. Test the hinges by moving the faceplate up and down and see if it reaches your desired position.

For the side hinges, attach the mount to the faceplate first. Then find the sweet spot when the helmet is closed.

Step Five: Wiring

Wire the electronics according to the attached diagram.

Step Six: Enjoy


Arduino CodeC/C++
Download the IRremote library by shirriff
#include <IRremote.h>
#include <Servo.h> 

int servoPin = 10; 
int servoPower = 8; 
int eyes = 4; 
int Button = 11;
int ButtonPower = 12;
int eyedelay = 200;
int state = HIGH;   
int lightstate = LOW;   
int reading;         
int previous = LOW;
long time = 0;
long debounce = 200;
Servo Servo1; 
const int ledPin =  LED_BUILTIN;

int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results; 

#define CIRCLE 0x9614E178
#define MINUS 0x56484D64
#define SUN 0xCB18E2E4
#define MINUTE 0x3C51AEF8


void setup()
  irrecv.enableIRIn(); // Start the receiver
  pinMode(ButtonPower, OUTPUT);
  digitalWrite(ButtonPower, HIGH);
   pinMode(eyes, OUTPUT); 
   pinMode(servoPower, OUTPUT);
   pinMode(Button, INPUT);
   pinMode(ledPin, OUTPUT);

void loop()
  if (irrecv.decode(&results))
    if (results.value == CIRCLE) //open and close helmet with LED, NORMAL OPERATION
      Serial.println("CIRCLE 0x9614E178");
      if (state == HIGH){
      state = LOW; //system start helmet closed /ON
      digitalWrite(servoPower, HIGH);
      delay (100);
      delay (1000);
      digitalWrite(servoPower, LOW);
      Serial.println("HELMET CLOSED");
    else{ //helmet open
      state = HIGH;
      digitalWrite(servoPower, HIGH);
      digitalWrite(eyes, LOW);
      delay (2000);
      digitalWrite(servoPower, LOW);
      Serial.println("HELMET OPEN");
    time = millis();
    else if (results.value == MINUS)
      Serial.println("MINUS 0x56484D64 ");
    else if (results.value == SUN) //eye light
      Serial.println("SUN 0xCB18E2E4 ");
      if (lightstate == LOW){
      lightstate = HIGH; //system start helmet closed /ON
      digitalWrite(ledPin, HIGH);
      Serial.println("EYE ON");
    else{ //helmet open
      lightstate = LOW;
      digitalWrite(ledPin, LOW);
      Serial.println("EYE OFF");
    time = millis();
    else if (results.value == MINUTE)
      Serial.println("MINUTE 0x3C51AEF8");
    else {
      Serial.println("Unknown Code Received");

void eyenimation(){
digitalWrite(ledPin, HIGH);
digitalWrite(eyes, HIGH);
delay (eyedelay);
digitalWrite(eyes, LOW);
digitalWrite(ledPin, LOW);
delay (eyedelay);
digitalWrite(eyes, HIGH);
digitalWrite(ledPin, HIGH);
delay (eyedelay);
digitalWrite(eyes, LOW);
digitalWrite(ledPin, LOW);
delay (eyedelay);
digitalWrite(eyes, HIGH);

Custom parts and enclosures

L Hinge
Print 4 of these.


MK 85 Schematic
Electrical Schematic
Mark 85 schematic l758emo6me
Fritzing Schematic
Schematic fritz o1gjqtj6ma


Similar projects you might like

Spider-Man Mask with Servos and Bluetooth Control

Project tutorial by iiMc204

  • 22 respects

Avenger Assembled: Iron Man Helmet & Arc Reactor

Project tutorial by Gregory O. Voronin and Phil V

  • 31 respects

Smartphone-Controlled Helmet with LED Turn Indicators

Project showcase by Kristjan Berce

  • 1 comment
  • 10 respects

How to Make a RC Controller

Project tutorial by MisterBotBreak

  • 9 respects

Asi (Anansi) Robot Companion

Project tutorial by Jorvon Moss

  • 161 respects

Exoskeleton for Paralytic Arm

by somrkmv1997

  • 57 respects
Add projectSign up / Login