Hacksmith Ironman Helmet for the Maker World
2019-11-12 | By Kevin Walseth
License: See Original Project
This project will walk you through the steps of taking an Ironman helmet and making it useful. We will work through using servos with Arduino to open and close the helmet and adding some very nice side mounted LEDs. These LEDs will still let you look out the eyes while giving effects like no other.
The second part of the project will be to add a thermal image camera to the inside of one eye so it can’t be seen. This thermal image will create a small heads-up display with an Adafruit feather. It will detect heat signatures and allow you to view them in your peripheral vision. Very cool at night!
Parts:
- AMG8833 IR THERMAL CAMERA
- HUZZAH32 ESP32 FEATHER
- TFT Featherwing 2.4”
- 500 mAh Battery JST
- Neopixel Strip Edge lit
- Servo Motor Positional Rotation (x2)
First, Let’s wire up the mask. For this we will use one of the ESP 32 Feather boards, the TFT Screen, and the Thermal sensor. Mount them as seen here:
Adafruit HUZZAH32 Arduino IDE Setup
We'll upload the thermal camera demo sketch to the HUZZAH32 using the Arduino IDE. We'll need to install the board profile and libraries installed before uploading the code. Let's start with setting up the Feather board. Click the link below and follow the setup instruction from the HUZZAH32 guide. Once complete, come back here to continue.
Setup HUZZAH32 with Arduino
Installing Libraries in Arduino
With the board profile, we can then install the dependencies. We'll use Arduino's built-in Library Manage to install the libraries. Goto Sketch > Include Library and select Manage Libraries. Here, we'll search for the following libraries and install the latest version.
Uploading Code
With the HUZZAH32 Feather board profile and Arduino libraries installed, in Arduino IDE select the thermal_cam_interpolate sketch under the File > Examples > Adafruit_AMG88xx menu. Connect the Feather board to your computer via microUSB cable and select the SiLABS under the Tools > Port menu (Option might be named different using Windows OS).
Upload the code to the Feather using the Upload command, Cmd+U or clicking the arrow icon.
Arduino Sketch
Select the Thermal Cam Interpolate demo from the AMG88xx library
Next let’s wire it up. I chose not to add a switch for this project, but if you would like to here is how to hook it up.
Circuit Diagram
This provides a visual reference for wiring of the components. They aren't true to scale, just meant to be used as reference. The Feather ESP32 is designed to snap onto the back of the TFT FeatherWing.
3V from AMG8833 to 3V on TFT Feather
GND from AMG8833 to GND on TFT Feather
SDA from AMG8833 to SDA on TFT Feather
SCL from AMG8833 to SCL on TFT Feather
Switch to GND on Feather ESP32
Switch to EN on Feather ESP32
Battery Power
The 500mAh lithium polymer battery connects directly to the JST connector on the Adafruit Feather ESP32.
Here is what it looks like off the helmet:
Now you should be able to turn it on and see the thermal image ahead of you. It is time to move on to the servo and lights to get the helmet to open and close.
For this part of the project, we will use the other Feather Huzzah32 (this can be connected to one Feather Huzzah32, but I didn’t want too many wires between the helmet and the mask) and two 180 degree metal gear high torque servos.
This took some time to get working properly so be patient and have the hot glue gun ready. I mounted the servos inside the helmet at the top. Using the large servo horn that comes in the kit, mount this to a small block (I 3D printed one) but anything will do.
Code for servo/lights:
#include <Servo.h>
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUMPIXELS 18
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Servo servoLeft; // Define left servo
Servo servoRight; // Define right servo
void setup() {
servoLeft.attach(10); // Set left servo to digital pin 10
servoRight.attach(9); // Set right servo to digital pin 9
pixels.begin()
}
void loop() { // Loop through motion tests
pixels.clear(); // Set all pixel colors to 'off'
pixels.Color(255,0,0);
pixels.show();
close(); // Example: move forward
delay(8000); // Wait 2000 milliseconds (2 seconds)
open();
delay(2000);
}
// Motion routines for forward, reverse
void close() {
servoLeft.write(0);
servoRight.write(25);
}
void open() {
servoLeft.write(25);
servoRight.write(0);
}
Now that you have this all working together, try taking it outside in the evening to see what the world looks like with thermal vision. It works really well in northern MN during November!
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum