I love Adult Swim’s Rick and Morty so, for Halloween this year, I created my own version of Rick Sanchez’ Portal Gun–including a 3d-printed enclosure, printed circuit board, negative energy density tube/crystal thingy, wave file player and laser.

Here, I’ll go over the design and construction, as well as a few lessons learned along the way.

First off, to get an idea of what it looks like and how it works, check out this spoof advert/demo of the project:

Portal Gun architecture and function

In the video, you can see the essential elements of construction and function. In short, the device has two major modes: portal opening and universe selection.

A single control button is used that detects short vs long presses and reacts accordingly. The entire thing is run as a finite state machine. The original transition graph was:

but I added a few things and simplified some others as Halloween got closer! In short, there are only three signals used throughout the system: the short/long button presses and a “schedule done” emitted by one of the async processes (light show or wave file play, doesn’t really matter which, I chose to piggy back on the lighting routine end).

The hardware function is split into 5 independent modules:

LCD: support for 2 different types of display

Wave file player: support for 8kHz stereo or mono files

“Tube” lighting: 3 oscillating green and one “alert” red

“Headlight” lighting: 2 green and one line laser

Control Input: a pretty nice stainless steel MOM switch

all of which can run their own schedules/routines, and be told to sleep/wake by the hardware manager.

One of the options is to go into sleep mode, but the device will power down if inactive for a configurable delay (defaulting to one minute).

The portal gun is powered by a pair of AA batteries and everything runs straight off that voltage level, without regulation. In sleep mode, it consumes < 1 mA. In normal operation, power usage varies according to how the lighting is behaving while in idle mode (somewhere around 40-50 mA draw) and while it’s firing (all lights on/flashing, laser on, sound playing) that shoots up momentarily to about 170 mA.

Construction

Construction of the portal gun involved designing a circuit and then building a case to hold it and support all the external components, as well as hold the battery.

This was my first CAD design since some minor initial testing, a few months back. Thankfully, FreeCAD is a powerful open-source and free program that allowed me to quickly come up with this:

The five pieces lock together precisely and a notch in the handle/battery holder keeps the body and handle together nicely when everything is bolted together. From there, it was a question of turning the design from idea to reality. I looked into a few options here, but wanted something that would be quick and, ideally, local. For that 3dHubs to the rescue!

3D Hubs allows you to find locals that offer 3d prints. I don’t know if it’s always as smooth and all-around awesome, but I wound up working with JF Payeur’s hub and was more than satisfied with the result.

Once I had the case on hand and knew the PCB would actually fit in nicely, I populated the circuit board.

The circuit is relatively straight-forward, basically just an MCU surrounded by a bunch of mosfets to drive the lighting and speaker, plus the support for two types of LCDs and a sprinkling of protection diodes and bypass caps. I also have a few extra components laid out, there, that I didn’t have time (or need) to use right away (e.g. like external flash memory… I used an xmega128, so had tons of room for my wave files right in microcontroller).

The tube itself was made using plastic resin and LEDs poured into a suitable container, along with extra plastic for effect. Watch the video above to see the neat result with the LEDs pulsing.

Not too bad for a dollorama spice bottle :)

Construction itself involved creating a bunch of headers to tie everything to the mainboard. Not my favorite part, but at least it kept things more flexible than soldering directly to the PCB.

Finally: stuff it all into the box,

and take it out for a spin

Post-Mortem

Most of the lessons learned during this project involve the case design. The most important of these are:

Leave more tolerance between parts that fit together;

Don’t count on small plastic extrusions to hold anything–they just snap off (e.g. my PCB sitting nicely on the pegs in the picture further up… yeah, that didn’t last);

Make the enclosure bigger than you think you’ll need–a few cubic cm of plastic can make your life a lot easier (e.g. I had to swap out the speaker for a larger one and that caused me trouble);

Don’t be too liberal with wiring: too much is as bad as too little, when you’re trying to stuff everything into a box;

Buy more headers, especially if you design such that parts overlap (e.g. the LCD’s constrast trimmer pot is… beneath it! Not such a big deal when the LCD is removable, but I ran out of 1.27mm headers and yeah, not so much fun);

Make the damn batteries easily accessible!

So, a few good lessons learned, and at least as much fun making the portal gun as I had using it on Halloween (and every day since ;-) ).