Cameron Coward
Published © CC BY-SA

Fallout Doctor Halloween Costume

Imagine a plague doctor, but like in a cyberpunk post-apocalyptic future. It combines a plague doctor mask and a gas mask, and lights up!

IntermediateFull instructions provided4 hours4,644

Things used in this project

Hardware components

Plague Doctor Mask
I purchased mine at a local Spirit Halloween store, but it doesn't appear to be on their online store. Any similar mask should work.
×1
Gas Mask
I used this GP-5M gas mask, which is advertised as being "Soviet." I have no idea if that's true or not, but it fit the aesthetic I was going for.
×1
Arduino Pro Mini 328 - 5V/16MHz
SparkFun Arduino Pro Mini 328 - 5V/16MHz
The 5V version makes it easier to provide power with a USB battery pack, and that can be shared with the LEDs.
×1
WS2812B RGB LEDs
Any NeoPixel-style RGB LEDs will do.
×1
EL Wire
Again, any EL wire will do as long as it's at least 7 feet long or so. Make sure you order one that comes with the battery pack/inverter.
×1
5V Battery Pack
Most battery packs designed for charging smartphones should work, because they output 5V. I used this 10,000mAh model, which should be enough for several hours of use.
×1
Clear Tubing
Tubing that's roughly the same length as your EL wire. Should have at least a 3/8" inner diameter.
×1
USB-A to Micro-USB Cable
USB-A to Micro-USB Cable
×1
Wire
Go for at least 18 gauge to avoid voltage drops
×1
Perf board
×1
Momentary Button
×1
Gloves
×1

Hand tools and fabrication machines

3D Printer
Any 3D printer should work
Hot glue gun
Soldering iron (generic)
Soldering iron (generic)
Drill

Story

Read more

Custom parts and enclosures

Gas Mask Canister

Code

Arduino Code

Processing
Load this onto your Arduino
#include <Adafruit_NeoPixel.h>


#define PIN 8

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(12, PIN);

int mode = 0;
int eyeOff = 0;
int eyeOn = 1;
bool flip = false;

const int buttonPin = 4;
int buttonState = 0;


void setup() {
  pixels.begin();
  pixels.setBrightness(85); // 1/3 brightness
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin, HIGH);
}

void loop() {
  uint8_t  i;
  uint32_t t;
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    mode = 0;
  }
  else {
    mode = 1;
  }

  switch(mode) {

   case 0: // Blue spins
    pixels.setPixelColor(   eyeOff, (0,0,0)); // First eye off
    pixels.setPixelColor(   (eyeOff + 6), (0,0,0)); // Second eye off
    pixels.setPixelColor(   eyeOn,  0x008B8B); // First eye on
    pixels.setPixelColor(   (eyeOn + 6),  0x008B8B); // Second eye on
    pixels.show();
    eyeOff++;
    eyeOn++;
    if(eyeOff > 5) eyeOff = 0;
    if(eyeOn > 5) eyeOn = 0;
    delay(100);
    break;
 
   case 1: // Red alert
    if (flip == false){
      for(i=0; i<12; i++) {
        pixels.setPixelColor(   i, 0xFF0000); // First eye
      }
      flip = true;
    }
    else {
      for(i=0; i<12; i++) {
        pixels.setPixelColor(   i, 0x000000); // First eye
      }
      flip = false;
    }
    pixels.show();
    delay(50);
    break;
  }

}

Credits

Cameron Coward

Cameron Coward

18 projects • 1401 followers
Writer for Hackster News. Proud husband and dog dad. Maker and serial hobbyist. Check out my YouTube channel: Serial Hobbyism

Comments