Welcome to the build of a 2-player tabletop Arcade emulator! The box is constructed of laser-cut 6mm Baltic Birch, and aside from the wooden parts, you will need.
- A Raspberry Pi - I used a B+, but B will also fit. Looking forward to trying a v2.0!
- An Arcade Joystick/Button combo. I got my kit from eBay, seller 4partyfun. It includes 2 joysticks, buttons, and a XinMo USB interface.
- Wood Glue. I use titebond II, but pretty much any wood glue will work fine.
- Sandpaper, Stain, and Sealer. Optional, but gives a nice finish.
If you would like to download the cut files to make one of your own - feel free! The files are available on thingiverse here: http://www.thingiverse.com/thing:675143
And if you would like to buy a pre-cut set of wooden pieces, they are available here: http://www.etsy.com/listing/222068642
Step 1: Get Your Pile O' Parts Together, and Glue the PiPlate
The console consists of 20 parts: 14 larger parts and 6 little guys. Since the size of the console is larger than the working area of the laser cutter, the longer pieces need to be stitched together - this is made pretty foolproof by the jigsaw joint.
First thing you want to glue is the two halves of the plate that holds the RPi - colloquially called the PiPlate from here on out. Make sure the constellation of holes matches what is shown in the picture.
Step 2: Build the Front, Back, and Face Plate
Slap some glue on the jigsaw edges of the front, back, and face plates and stick 'em together.
You can check alignment by taking one of the yet-unused pieces and press-fitting the tab/slot arrangement to make sure everything fits well.
Set them up somewhere they won't be disturbed. We want to let the glue partially dry so it keeps everything together, but to still have a bit of "give" available to make assembling the box easy.
Step 3: Prep the PiPlate
Here we will glue some nuts to the Bottom side of the PiPlate. I used 4/40 x 1 inch screws and nuts. The easiest way to get everything aligned is to put screws through the 8 mounting holes as shown in the picture, and lightly tighten nuts onto the other side.
Flip the plate over, and apply some glue around the nuts to secure them to the PiPlate. I used 5-minute epoxy. Make sure not to get any glue on the threads of the screws, especially if it's epoxy! Once the nuts are glued, set the PiPlate aside to dry.
Step 4: Assemble the Box
Building the box starts with putting the inner spars into place into the (taller) back plate.
I usually start with back plate sitting flat and stick the spars in vertically. The tabs on all pieces are the TOP side, and the flats are the BOTTOM side. It really only fits one direction, but if you want an easy remider - all tabs point UP.
Next, drop the box down so it's sitting flat on the bottom, and attach the front plate to the center spars. Slap the sides on, and you've got yourself a box frame!
We will now attach the faceplate to the frame. You want to do this while the glue is still soft, so the faceplate can guide the box frame into it's perfectly rectangular shape. Otherwise, any error in the box shape will make the faceplate harder to add later.
Adding the faceplate: Lightly press-fit the corner tabs on one corner to align those two sides. Then, work your way down the rows, moving the sides into place to line the tabs up with the holes.
It's best to only slightly press the tabs in to the holes at first, to avoid pinching the later tabs. Work down the rows, aligning tabs and holes until it's all in place.
THEN begin pressing the faceplate all the way down so the tabs are flush with the front of the faceplate. Try to press their depth evenly, because if one side is all the way in and the other side is not it will take more force to get the rest of the tabs all the way in. The first few I built, I literally had to stand on the box to get the tabs to seat before I realized it was due to uneven pressing. But it worked, so feel free to apply some heavy pressure if you need!
Once it's together and everything is flush - set it aside to dry. Halfway there!
Step 5: Mount the Pi
Get the PiPlate, and put 4 more 4/40 screws through from the bottom side in the holes shown in picture 1. Secure them with nuts, but no glue is needed here. Flip the plate up.
The upward facing screws will hold the cable mounts. We will want to adjust the height of these mounts, so put a second nut on each of the 4 screws but don't tighten them down. Pop some zip ties through the slots in the cable mounts, and place them on the upward-facing screws as shown. One more 4/40 nut on each of the 4 screws lightly holds the cable mounts in place.
Next, attach the RPi and the XinMo Joystick interface using standoffs. I used 1/4" nylon rings from Lowes, but 4-40 hex standoffs left over from a PC project would be great as well. You just want the Pi and XinMo baords up off the mounting plate a bit so you can fit the USB cable underneath.
After the boards are mounted, plug the USB cable and thread the excess through the space underneath the boards. Once you're down to a few inches, plug the other side and you're set!
Step 6: Adjust the Cable Mounts
If you're running HDMI cables from the box to your TV, there's always a risk of someone kicking the cables. To avoid ripping the USB/HDMI plugs off the Pi board, we will zip tie them to a couple of cable mounts that should tolerate the abuse better.
You'll want the cable mounts flush with the bottom of the cables, but not so high that they're pushing upwards on the PCB's mounting plugs. A bit of adjustment is necessary to adapt to whatever cables you happen to use.
Adjustment consists simply of lifting the cable mounts up to the proper height, then adjusting the loose nut underneath them to secure that height. Last, tighten the top nut to secure the cable mount in place, and you're ready to zip tie.
With a bit of extra space gained from the spacers holding the Pi board, it should be easy to replace the zip ties. This makes for a quick upgrade to a Pi v2.0!
Step 7: Sanding and Finishing
The straight finish of the Baltic Birch is not bad, but it will look and feel amazing with a bit of sanding. If you want to go pro, a bit of stain and a clear finish will give you a killer arcade box.
I use a little orbital sander and start with about 80 grit to even the surface and take off any smoke marks from the laser cutting. A second pass with 120 and a final pass with 220 gives a very smooth, hard surface. Then, a shop vac with a rag over the end (to prevent rub marks) sucks away all the dust for a very playable surface.
When finishing Baltic Birch, I usually use liquid stain from Lowes/HD. For this particular build, Rustoleum Summer Oak wass used for a warm "bartop" look. Wipe it on with a rag, wait a bit and wipe it off with another rag - it's dead simple, and almost any stain looks amazing on Baltic Birch.
When I want a very hard, shiny surface I turn to this Acrylic Sealer from craft stores like Michael's or AC Moore. It's very fast drying due to the solvents used, but smells utterly toxic! Use this stuff outside or in the garage with the car port open for sure!!
It's best to use at least 4-5 coats, one coat every 15-20 minutes. You will end up with a box that looks like it's been dipped in plastic - a very smooth and shiny surface I can never get from polyurethane.
Step 8: The GUTS!
You don't want to install the guts until your finishing is done. Aside from the sawdust, you also don't want the Pi and Xinmo to get hit by any stain or lacquer. So once your finishing is done and dry, it's time for the guts. First, grab your glue and the assembled PiPlate.
Blip some glue onto the mounting notches in the center spars, then feed the HDMI and USB cables out the hole in the back. Angle the PiPlate down through one of the holes in the spar and seat it into place. it should fit snugly, so I usually just start assembling and wiring while the glue dries on it.
The buttons and joysticks install pretty quickly, and the wiring is also very straightforward. First, run the daisy-chain GND wire to the top prong on all button/joystick switches. Then, follow the Xinmo diagram and plug the wires for each individual switch.
The left joystick will work out of the box with PiPlay, so it's not hard to configure the other joystick and buttons through the main PiPlay interface. At first, I like to have a (wireless or wired) keyboard attached to help with configuration - several emulators rely on the TAB and ESC key to get to the config menu. But after all the setup, it's console-only from there on out.
The author of Raspicade, ian57, has built a version of mame4all which will handle 2 player setups using the Xinmo interface. This is the MAME emulator I use, get it from ian57's sourceforge here.
Hope you've enjoyed the instructable! I'll add on more info later if people want detailed descriptions of setting up PiPlay and other stuff.