Halloween goggles

This is one in a series of Halloween electronics posts. Read the full series:

Last Halloween I built some animated light-up steampunk/mad-scientist goggles. I did this at the same time I did the creepy motion-activated eyes and the ambient lighting with surprise thunder and lightning. Because I was building and refining up until the last minute, I never got around to showing off and documenting the project. This post, a year later, will try to fix that.

The “spinning beachball” effect is very bright. It looks great in person, but really overpowers and washes out the camera's sensors when filming. Trust me. It looks way better than this.
The “spinning beachball” effect is very bright. It looks great in person, but really overpowers and washes out the camera’s sensors when filming. Trust me. It looks way better than this.

I have seen similar projects posted before, but they always had full covers over the lenses and came with warning about not wearing them over your face. Light-leakage and the strobe of the LEDs can lead to headaches. Knowing that I’d only have a narrow field of view anyway (like most masks), I wanted a design that allows for wearing them over the eyes for extended periods of time without the light-leak and headaches. Between laser cutting, 3D printing, and liberal amounts of Sugru, I think I worked it out.

My additions included:

  • Laser cut rings (54mm outside diameter, 31.75mm inside)
  • 3D printed “blinder” tubes (31.75mm outside diameter, 12mm tall)
  • A small pushbutton to change animation modes
  • A ton of electrical tape (later, I switch to Sugru) to seal around the edges

The whole project is a riff on the Adafruit Kaleidoscope Eyes project, with some of my own hardware and software customizations. Unfortunately, I do not have many pictures of the steps during the build process. It was tedious and detail-oriented. It was mainly cutting and routing wire and soldering things in-place, as opposed to building separately and cramming it all into the goggles afterward. The code lives in the GitHub project as well as assorted other build files (laser cutter paths, 3D models).

Behind the metal wire connecting the two goggle halves is a segment of heat shrink tubing acting as a channel for wires.
Behind the metal wire connecting the two goggle halves is a segment of heat shrink tubing acting as a channel for wires.

Instead of cramming the Trinket inside the goggles, which would obscure vision, I attached it to the outside strap. This has several added benefits: it’s easier to access for programming and it gives it that extra sci-fi touch. I also added a small button on a perf board to the strap. This is used to switch animation modes.

2013-11-10 17.01.58

The goggles are great. They are comfortable and high quality. The thick glass lenses are retained by a metal ring and spring clips, making them easy to pop out, measure, and replace. It was easy to find acrylic of a similar thickness. I laser cut some rings — a 54mm outside diameter to match the lenses and a 31.75mm inside diameter to match the inside diameter of the neopixel rings.

Measuring for new lenses.
Measuring for new lenses.

With the acrylic in place and the NewPixel rings crammed in as far as they could go, I measured the distance I’d need for the “blinder” tubes. I’d need a light-proof channel that allows me to peer through the center of the NeoPixel and acrylic ring. I ended up with plugs that are 12mm tall (including the height of the retaining lip around the acrylic ring. You can find my 3D STL file on Github, which is kind of cool because you can spin it around in your browser. The OpenSCAD source code is there, too.

Drafting the inner light-blocking tube.
Drafting the inner light-blocking tube.
Diffuser ring and blinder-tube in place.
Diffuser ring and blinder-tube in place. If you look closely, you can see the electrical tape that made the original light seal.

Between exact measurements and 3D print tolerance, it was a fairly decent friction fit. I used a few drops of hot glue to better bridge the tube-to-NeoPixel junction, just in case. There was still quite a lot of light leakage, though. Because the rubber of the goggles is not perfectly circular, there was some gapping there that light came through. There was also a little bit of gapping between the tube and the NeoPixel ring. Unexpectedly, the circuit board itself had a few via holes that let light through. My first round of sealing, from Halloween last year, was with electrical tape. I cut strips and sealed around the NeoPixel-to-goggle junctions as well as the NeoPixel-to-tube junctions. The vias got covered as a byproduct of all the tape I used. It used what I had on hand and it mostly worked. The tape doesn’t stick all that well to the ABS plastic of the tube, so would occasionally peel back and obscure vision for a bit. I’d have to poke my fingers into the eye holes (ew, gross!) and flatten it out. Since then, I’ve embraced the coolness of Sugru. I ripped out all the tape and plastered the whole thing in Sugru.

This picture, from after I’d ripped out the tape, shows the difference in light leak between Sugru (left) and nothing at all (right):

Light leakage: after Sugru (left) and before (right).
Light leakage: after Sugru (left) and before (right). On the unfinished side, you can see some of the routed wires as well as hot glue.

Because there was zero light leakage, every time I switched animation modes, I’d have to hold my other hand in front of my face. The light that bathed my hand and reflected back to my eyes told me what color and motion was actively displayed.

I hope this blog post gives you some insight and inspiration on your own project. It wasn’t intended as a step-by-step how-to, given how custom it is. I’m not even sure I could find equivalent goggles again. My design files and source code are linked in the above article and on GitHub. Feel free to download, edit, and tweak them to suit your own needs.

Posted in: MakerBot Projects

Published by

Brian Enigma

Brian Enigma is a Portlander, manipulator of atoms & bits, minor-league blogger, and all-around great guy. He typically writes about the interesting “maker” projects he's working on, but sometimes veers off into puzzles, software, games, local news, and current events.

3 thoughts on “Halloween goggles”

  1. Hi Brain ,

    Awesome project ! Can you tell me how you wire the button for the mode switch ?
    Animation only working if i hold down the button , as soon as i release it , the animations stop.

    Please help.


    1. The pin connected to the button has an internal pull-up resistor (as mentioned in the code comment: digitalWrite(BUTTON_PIN, HIGH); // activate pullup). That means that the other end of the button should be connected to ground. During normal operation that pin should read high. When the button is pressed, it should read low.

Leave a Reply

Your email address will not be published. Required fields are marked *