Jonathan Warren

Wires Expert GitHub YouTube Blogger LinkedIn

Strobulon! The LED Helmet

Winter 2015 to Fall 2016

This project was conceived for a work Halloween costume party - I was working in retail distribution centres at the time and our team decided it would be fun to dress up as superheroes based on the common devices we worked with. There was Horn Man, Prox (as in proximity sensor) Girl, Captain Carton, and more. I claimed the lowly strobe lamp, and decided to go the evil nemesis route by creating the character Strobulon. It was a simple concept: a big helmet that acted as a "strobe" light, and a voice changer to sound extra evil.

While perhaps not a technically complicated project, it involved serious planning and extremely careful fabrication to complete successfully. Overall, it was a fun build and I've kept it fresh over the years!

Phase 1: Design

I had worked with hand-built LED matrixes before, and so I naturally gravitated to that solution. I just needed some bright yellow LEDs to wrap around some sort of helmet, and it was a plus that I could reuse the somewhat expensive LED controller chips I had lying around from an old project. For the voice changer, I decided to be lazy, and just hack apart an off-the-shelf toy. To control it all, I thought I'd finally take my Raspberry Pi for a spin doing real hardware work.

Shopping List

Here's the board I designed which breaks out the LED driver:

ControllerSchematic     ControllerBoard

At the time I had them fabricated with DirtyPCBs, but these days I use JLCPCB.

I was pretty happy with the end result! I used some of the extra board real-estate to make a relay breakout too.

ControllerPCB

Display Driver Update!

I tried powering up the helmet in 2020, and much to my disappointment, large chunks of it weren't working. Some of this was caused by damaged connections, but what I eventually found was 3/5 of the MAX7219 chips were just dead. But there are way better driver options available now, complete with breakout boards! I used the HT16K33 Breakout from Adafruit and also replaced my controller with a favourite, the Adafruit Trinket M0. I used three LED drivers total now, as they can drive 16x8 matrices. It was a pain rewiring, but totally worth it to get this old project back up and running! I even built some more animations. OK, now back to 2015.

Phase 2: Development

To keep things interesting, I'm going to breeze through the careful planning I did here. If anyone is actually crazy enough to embark down the path of building something like this, let me know, and I will point you toward some great therapists.

I decided to space my LEDs about an inch apart. Because of course, the bucket I purchased wasn't a perfect cylinder, but gradually tapered. So, I maintained a consistent vertical 1" spacing, but had to carefully adjust the horizontal spacing to accommodate for a changing bucket diameter. After I had marked a grid of dots, and roughed out spaces for eyes and mouth, I proceeded to notch each mark with a push-pin. The idea was to ensure the drill bit wouldn't slip when punching the hole. While manually pushing a pin and then drilling a hole… 307 times isn't exactly fun, it paid off. No mistakes were made!

The 3/16" bit was perfect for this situation. It's just a teensy bit smaller than the diameter of a standard LED, and therefore I could push the LED through and it would firmly stay put without the need for glue. That said, my fingers were incredibly sore from pushing that many LEDs through tight spaces.

LEDs1     LEDs2

The LEDs are linked together by row/column, and so with some clever bending and taping, I was able to use the exiting leads to tie all the lights together into a grid. Just 614 solder joins in an afternoon, all inside a bucket, no big deal.

LEDs3

Once the LEDs were in, they needed to be connected up to the drivers. The super-observant will notice that the helmet is 9 LEDs tall, and 32 LEDs around. This meant that I had 4 nice 8x8 matrixes to work with, and a weirdo configuration managing the bottom row of LEDs as well at the LEDs used in the eyes. Each row and column of each matrix had to be wired up to the breakout board. So much soldering.

LEDs4

Pro-tip: while you can use all the same coloured wire for a job like this… if you have access to multiple colours of wire you can likely save yourself some headache. The photo above actually has some bad wiring on the eye LEDs, and it was quite the pain to figure out how to rewire it properly without tearing it all apart.

A test of my wiring (and an attempt at a morale booster) as it was coming along:

LEDs5    

Next, I integrated the voice changer. It was fairly simple – I took the toy apart and rewired it to connect to new Super Bright Red LEDs for the mouth, glued the microphone on the inside closer to where my human mouth would be, and stuck the speaker and control board up top with the rest of the hardware.

UpTop

Finally, once all the inside wiring was done, I cut a cardboard insert to wrap around the inside, and tied the internal strapping of one of my hardhats to the top (or… bottom) of the bucket to keep it all in place on my skull.

InsideLining

It ain't pretty, but it's what's on the outside that counts!

Phase 3: Software Development

I started this project with the idea of using my Raspberry Pi to talk to all the LED drivers, and also play with some audio processing to, say, have the lights react to music, and maybe even find a way to roughly display video (though that has limits when using single-coloured LEDs). Unfortunately, once I reached the point where I could start programming (the weekend before the party), my Raspberry Pi started randomly crashing and being generally unreliable. So, I fell back to the tried and true Arduino platform, and decided I was OK with limiting my project scope to just controlling LEDs with pre-defined patterns.

The Arduino IDE has a ready-made LedControl library for the MAX7219 chips which saves a ton of time. Using this, I really only needed to focus on coming up with cool patterns to play through! I segregated that weird fifth LED driver to a separate SPI bus for clarity.

See the links at the bottom for my code.

Phase 4: Final Touches

As you can see in a lot of the photos, the LEDs that are directly aligned with the camera are super-duper bright, while the rest aren't so much. Unfortunately, the LEDs I used have a bit of a narrower viewing angle. To remedy this, and to snazz things up a bit, I got a sheet of thin acrylic plastic to wrap around the helmet and diffuse the light.

I read online that in order to effectively bend acrylic, you need to heat it to around 300 degrees Fahrenheit. Initially I tried using my heat gun, and found that I couldn't get the plastic to warp at all. So, I tried it in the oven (as was suggested at the plastic store and online).

As you can see here, it worked great! I rolled a perfect cylinder:

GreatSuccess

Sadly I only bought one sheet of plastic, and anyway, the plastic was the least opaque they sold (before clear) and it still was too opaque.

Phase 5: Showboating

That's "all there is to it"! Now begins a new era of glamourous living.

    DumpsterLife

FlashyRealness     Halloween

Maybe for my next costume party I'll just go as a ghost... but I'm pretty happy with how this worked out!

Links