wolfgang ziegler

Making a Ghostbusters Proton Wand

The Story So Far

Last year, my wife and I made a Ghostbusters costume for our (then) 6-year-old, for his kindergarten carnival party.
I found this PKE Meter on Thingiverse which I built for this costume and for the proton wand and backpack, I designed, 3D-printed and soldered something myself. I was quite happy with the result.

A few weeks ago, my now 7-year-old discovered these toys again which triggered an immediate "Why don't I have that, Daddy!" reaction in my 3-year-old. Needless to say that my "Well, last year you were too young and didn't actually care" response was not received particularly well and I was given a 1-week ultimatum to make him a proton wand as well.

So, why not. I dug out my 3D models, notes, sketches and figured that this would be a good opportunity to write this blog post I should have written last year anyway.

I was given a 1-week ultimatum by my 3-year-old to make him a proton wand as well.

The Parts

All the main parts of the proton wand come out of the 3D printer. I designed and made them available on Tinkercad.

All the visible parts (except for the handle) got a treatment with black or silver acrylic spray.

Part List

In addition to those 3D-printed parts, you will need this:

Arduino Nano

USB power bank

5x WS2812b LEDs (RGB, individually addressable)

Potentiometer

On/Off Switch (with indicator LED)

TM1637 4-digit 7-segment display

Round push button

LED

330Ω Resistor

On/Off Switch

Piezo Speaker

Cables, wires

Power

For the power supply I am just using a regular power bank like you would use for charging a phone. This power bank disappears in the backpack and the proton wand is connected to it using a USB cable coming out of the handle.

On/Off Switch

The main on/off switch sits on top of the wand's casing and interrupts the Arduino's power supply. I chose an extra fancy switch for that, that comes with a safety cap which must be opened first. This makes activating the wand look really legit and serious - my kids love that feature.

Also, this switch has a built-in led that indicates whether the wand is on or off.

Trigger Button

The fire/trigger button is also integrated in the proton wand's handle and is a simple push-button connected to the Arduino's digital pin 2 (see FIRE_BUTTON_PIN in Firmware).

Intensity Control

As soon as the trigger button is active, another component comes into play which is the intensity regulator. This is a simple potentiometer connected to the Arduino's analog pin (A1).

The value set by this potentiometer gets displayed on the 4-digit-7-segment display. It also affects the proton wand's light and sound output to make this toy more interactive.

Display

For displaying the potentiometer's state I used a 4-bit-7-segment LED display that sits in front of the main power switch.

Note: I'm using a 5-pin version of this display which is apparently outdated and rather hard to come by. You are more likely to find a 4-pin I2C version of this. This however means that the firmware needs to be updated accordingly.

This display uses another 3 digital pins of the Arduino.

Arduino Pin

Display Pin

Firmware constant

6

SCK

SHIFTCLOCK

4

RCK

LATCHCLOCK

3

DIO

DISPLAYOUT

GND

GND

-

VCC

VCC

-

Light

The proton wand's tip is 3D-printed with translucent filament and accommodates 5 individually-addressable WS2812b RGB LEDs. The last LED in this strip is glued flat to the bottom of the tip and the remaining 4 form a circle glued to the inner wall of it.

In addition to power and ground, this LED strip only needs one other digital pin on the Arduino for its data signal (see LIGHT_PIN in Firmware).

Pushing the trigger button activates this light strip, hence creating the firing effect and the potentiometer setting determines its color and intensity.

Sound

Of course, a toy like this also needs a high-pitched, nerve-wracking sound effect when the trigger button is pressed. This is accomplished by a small piezo speaker that gets connected to pin 9 on the Arduino (see AUDIO_PIN in Firmware). Similar to the light effects, the frequency of the audio signal, is also determined by the potentiometer ("intensity control").

However, even more important than having sound-effects, is the ability to turn them off again from time to time (you're welcome fellow parents). For this, another on/off switch is added to the side of the proton wand's main casing. This button's state is read via digital pin 7 on the Arduino (see AUDIO_ONOFF_BTN_PIN in Firmware). Another LED connected to pin 8 (see AUDIO_ONOFF_LED_PIN) visualizes the on/off state off the audio.

Assembling The Parts

After soldering and gluing all parts together this is nearly finished.

After Cramming all the cables in, closing the main case up and attaching the last parts (knob and heatsink), this is how the end-result looks like.

Firmware

Following Arduino sketch is the proton wand's "firmware". Most part of this code just deals with showing numbers on the 4-digit-7-segment display and displaying sound in real-time. The "actual logic" is only a few lines of code in the main function that:

Reads the potentiometer and calculates an intensity setting (level) from it

Checks if the wand is firing (digitalRead(FIRE_BUTTON_PIN))

If yes:

Activates the RGB LEDs (strip.setPixelColor)

Checks is sound is enabled ('digitalRead(AUDIO_ONOFF_BTN_PIN`):

If yes:

Plays sound ('NewTone`)

If no:

Turn off LEDs (strip.clear())

Note: For controlling the RGB LEDs, the Arduino 3rd party library Adafruit_NeoPixel is used.