Weekend hack: PortaPi arcade console

Some time last January I decided to back the PortaPi on KickStarter. This is a mini arcade cabinet, that runs several emulators, via the RetroPie project, on a Raspberry Pi. The kit arrived on time, and sometime in May I got around to assembling it.  Here’s how it looks:


The kit is great out of the box but, of course, I had to add some of my own tweaks.   First was varnishing, to make it look even prettier: pre-stain conditioner, then three coats of Minwax Red Oak stain, and finally four coats of polyurethane.  Considering this was my second varnishing job ever (and the first in a decade), it went pretty well.

Next, I designed a 3D-printable button cover plate for the monitor control panel, that sits in a cutout under the marquee and above the monitor.  Nothing too fancy, but gets the job nicely done and makes the kit look even more clean.

Finally, a minor annoyance was that the Kickstarter version of the kit needed two power supplies: one 12V for the display and audio amp, and another 5V for the Raspberry Pi.  Furthermore, there was no power switch, so turning the cabinet off meant pulling two wart adaptors from the wall socket (the newer version uses 5V for everything but it still has no power switch, I believe).   For some time I had been looking for an excuse to design a microcontroller circuit from scratch, and also play with surface-mount (SMT) components, so I designed a smart power switch board and. Got the PCBs made on OSHPark, wrote the firmware using the Arduino libraries, and flashed the MCU using a Bus Pirate.  Given that my PCB design education is 100% from Google, this went pretty well too.  Now I have a single pushbutton that works ATX-style, and also all power is turned off when the Pi shuts down itself.

While at it, I added a physical volume control button, using the extra GPIO pins available on header P5, plus a simple Python daemon running on the Pi.  All hardware and software is available here.

Now for some retro gaming (Keystone Kapers, 1941, Arkanoid… ah, the memories)!