Introduction: Raspberry Pi Arcade Table
In this Instructable I'll show you how to make your very own "classic" arcade table with a Raspberry Pi for hours of retro-gaming goodness.
Step 1: Parts and Materials
Raspberry Pi model B (RadioShack #: 277-196)
8 GB SD card (RadioShack #: 44-201)
HD televison (RadioShack)
HDMI cable (RadioShack #: 15-480)
power strip (RadioShack #: 61-003)
keyboard
mouse
(2x) arcade buttons
wire (RadioShack #: 278-1224)
female jumpers (RadioShack #: 276-157)
inside corner brackets
screws
(2x) 12 inch hinge
paint
3/4 inch plywood
1/8 inch clear acrylic
Step 2: Design Overview
The design for the table is inspired from 1980's cocktail arcade tables, the kind you might still find in the dark corner of a pizza parlor. These tables were rather bulky and incredibly heavy due to the clunky power systems and hefty CRT. Thankfully, electronics have slimmed down to the point where we can easily recreate the arcade without the bulk.
Before making anything, I made a 3D model in Fusion 360. The final cabinet is solid black, but I changed the appearance of the model to more easily distinguish the separate components. From this model I was able to create accurate dimensions that I would be able to easily cut with woodworking tools.
Step 3: Build the Frame: Cutting
The entire body is made out of 3/4" ply, which is really .715" or 17.6 mm thick. The cabinet is designed in such a way that every piece can be cut from a single 4' x 8' sheet with a some room to spare. The top of the table measures just a hair over 20" x 33". The top plate is 3mm thick abrasive resistant acrylic with rounded edges. If you happen to live on the U.S. west coast, TAP Plastics will cut-to-size many different kinds of acrylic, and you can even specify a corner radius to match your design.
Here are the dimensions for the main components:
table top acrylic 840 x 510
table top wood 840 x 510 mm (See picture 4)
front panel 780 x 760 mm (See picture 2)
(2x) side panel 760 x 415 mm
back panel 780 x 760 mm
base panel 745 x 415 mm
front center panel 350 x 123 mm
console top panel 350 x 150 mm (See picture 3)
console front panel 350 x 70 mm
console bottom panel 350 x 150 mm
(2x) console side panel 229 x 168 mm (See picture 2)
The holes for the controls are in standard units; .75" for the arcade joystick and 1.125" for the buttons.
For the majority of the pieces, you can use a table saw to cut down the panels. I had access to ShopBot CNC to cut the tabletop, but it's equally possible to do with hand tools. I also used a vertical band saw to cut the curves for the console sides as well.
Step 4: Build the Frame: Main Body
For these next steps I highly recommend an excess of large clamps and the help of a friend. We'll also need the eight inside corner braces and matching screws.
Screw the right side panel and back panel together with two of the inside corner braces.
Screw the left side panel to the back panel.
Take the power strip and slide two screws into the slots on the back to mark the inside of the left panel. Slide the screws out and partially drill them into the marked divots. You should be able to slide the strip onto them. Remove the power strip for now.
Screw the front panel to the left and right panels with the remaining four inside corner braces.
Flip the body over and center it over the table top.
Place the hinges along the back panel and table top and mark them with a pencil for later assembly.
Step 5: Build the Frame: Console Base
Next, we'll begin assembling the arcade console. For this we'll need the two curved side panels, six angle brackets and matching screw.
Take one of the console sides and clamp it to the side.
Attach the two brackets to the piece, making sure to leave enough clearance for the bottom of the console.
Slide the bottom console piece into place and fasten with two more brackets.
Place the opposite side panel into place and fasten it as well.
Place the front piece of the console in place and glue down the base. Make sure to drill the 3/4 inch hole for the USB ports. You may wish to trace around the RasPi as it doesn't lay flush to the base of the board.
Step 6: Build the Frame : TV Mount
Now we'll need to attach the TV.
Take the table top and and lay the TV flat and centered over the main hole.
Cut out six 2"x4" blocks and lay two on either side of the TV. Screw these into place towards the outer length of the spacer blocks. Be sure to countersink these screws so that the next level of spacers can lay flush.
Lay the remaining blocks on top of the now fastened stack.
Lay a long strip of 4" wood across the stacks over the TV, then mark and cut it down to size.
Centered on the new board (and with the TV removed!), mark and drill four 4mm holes that are 100mm apart.
Check to make sure the holes line up with those on the back of the TV.
Towards the inner length of the spacers, screw in the new cross piece to the spacers.
As far near the base of the TV you can go, drill holes deep enough for your T-nut on both sides of the TV.
Hammer the T-nuts into place with a mallet.
Cut down two 1"x4" pieces and drill a 1/4" hole for the screw.
Put the TV back into place and screw it to the cross piece with four 35mm M4 screws.
Slide the 1/4x20 screws through the two sticks and tighten to the back of the TV.
Turn the assembly over to check that the TV doesn't droop. There should be enough give to align it with the hole if a bit off.
Step 7: Build the Frame: Console Top and Electronics
We're nearly done!
Take the console top plate and front top panel and fasten them with two more brackets.
Unscrew the ball of the joystick and slide it into the hole from below. There are many holes, but a screw in each corner should do.
Pop out the micro switches from the bottom of the arcade buttons (there are two plastic nubs that pop in) and unscrew the large black nut.
Slide the arcade buttons into the console top and slide the nut back on to tighten it.
Pop the micro switches back in.
Referring to the diagram on the next page, plug in the proper wires from the joystick and buttons into the RasPi.
Step 8: Setting Up the Raspberry Pi: Configuring Arcade Controls
This step is optional. If you wish to add arcade buttons to your systems, read along. If you're fine with a standard mouse and keyboard, you can skip ahead to the next step. Credit for this update goes to Adafruit for making this wonderful tutorial on how to connect arcade buttons to the RaspberryPi. This is perhaps the simplest method for adding direct control through the GPIO and is easily configurable for different buttons. The Adafruit tutorial is based around the Raspbian OS which is just fine since RetroPie is also just a modified version of Rasbian.
Step 9: Set Up the Raspberry Pi: OS
The heart of the machine is the wondrous Raspberry Pi. The Pi is so popular a choice for arcade emulation, there's even a custom operating system dedicated to emulation: RetroPie. You can download the RetroPie image here. I recommend using an SD card with at least 8GB of space.
Make sure your SD card is properly formatted. You can grab the official SD formatter here.
Write the RetroPie image to the SD card with the Win32 Disk Imager.
That's it! With the RetroPie OS, you don't need to do any extra work to get started gaming. All you need is a keyboard and mouse to interface with the Pi. If you want to play with custom arcade controls, head over to the next step.
Step 10: Final Touches
A solid wood arcade with a nice finish would look great, but I decided to go with a solid black coat of eggshell paint. I wanted the arcade to shine, but not be outright glossy.
The only structural element left is the acrylic table top. For this, I marked six holes around the edge and counter-sunk a 1/2" screw in each.
In order to complete the classic look I was aiming for, I designed some custom decals. I didn't end up using them all, but you can find the vector files and a big ol' raster image if you like to use the art too. I had access to a large format printer/cutter which allowed me to make custom vinyl stickers, but you can easily print scaled down versions with sticker paper on a standard printer. The profiles of the images are basic shapes so that it would be easy to cut by hand too.
Step 11: Usage
By default, the RetroPie OS comes with a few games "pre-installed," but what if you want to add your own? You can find your favorite legal copy of old games at the MAME website.
Installing games is easy with a flash/jump/thumb drive of your choice. With the system powered and running, plug in the external usb memory drive. You can remove the drive after about ten seconds (some drives will have pulsing LEDs to led you know data transfer has completed). Now when you plug the drive into your regular computer, you should see a new file system on it simply titled: "roms." Browsing through this folder you'll see sub folders related to nearly every old console or emulator. Drag and drop your roms into the appropriate folders and plug the drive back into the RasPi. The RetroPie will automatically copy over your game data to the system. Reboot the Pi and you should see you games pop up. Enjoy your new cocktail arcade table!
52 Comments
3 years ago
What size TV are we supposed to use? I do not see the size mentioned anywhere. Thank you!
6 years ago
I do know the post is old, but I'm trying to create something similar and I'm struggling with one minor issue: the monitor's power button. It's located on the side and it's a "push" button, meaning that you cannot lock it in on or off position.
So, how can I override this button and make the monitor turn on with power? I tried disconnecting the buttons altogether but it doesn't work then...
Monitor is Benq FP202W, for reference.
6 years ago
great build! I see you used a tv, did you have any problems with the viewing angle distorting the colors? My build I used a computer monitor LCD and ended up having to buy an ips monitor because the picture was so distorted.
7 years ago
hi im making one could you tell me where what female jumpers are
7 years ago
Just amazing! :D I do love arcade project and this one is great
8 years ago on Introduction
8 years ago on Step 11
This is fantastic. Have you considered packaging the PI, pre-installed/configured software, Joystick and Buttons and offering them for sale. I would be very interested for sure. Could do the woodwork but not the electronics so a pre-built solution that could be simply added to a wood cabinet and just as simply plugged into a tv fitted in the cabinet would be awesome. Thx Roy
Reply 8 years ago on Introduction
You could do it! Just study!
8 years ago on Introduction
Nice going with this project. I'd love a cocktail cabinet but unfortunately I have too many projects taking up too much space.
8 years ago on Introduction
I Love this Project! is there anyway i could go about making this with a two player setup? If so how would i do this?
8 years ago on Introduction
If you were to make this a two player console, would the game rotate on the screen to the player if you put the controllers on each end?
8 years ago on Introduction
this project is very awesome and I intend to build a traditional full size cabinet for it. I have some issues moving forward though. I have added about 600 nes roms that do work however when I play them it changes my keyboard layout from what I had previously configured to the zx up down left right and enter layout and when I exit the game and go back to choose another game the keyboard stops working all together. any ideas? I have found a arcade type joystick and buttons that has a usb encoder with it and I would like to use it if possible but I need to get a default configuration to save before I can. this evening I plan on trying to find a generic usb game controller and try to get it to work the same every time the pi boots before I move on. any help would be greatly appreciated.
Reply 8 years ago on Introduction
Thank you very much. With regard to your keyboard problem, I'm not sure what might be happening. The different key mapping per game might be harder to get around, but I don't see why that should make the keyboard stop running altogether. Have you read about other people encountering the same problem?
Reply 8 years ago
Thank you ALeator777, I did find some people having similar issues, however I haven't found anyone who seems to have solved it.
I haven't used the gpio header for the controls becuase the adafruit tutorial on that goes over my head. I felt like the best solution for me was to use the usb keyboard encoder and match the controls to what the nes emulator changes it to when it starts.
I have the retropie running good now, and as soon as I figure out what button is select on the nes emulator I will be building a full size cabinet with the arcade controls :)
Thank you for sharing this project. I have always wanted a full size arcade game. I may even put a coin slot in connected to an arduino that allows a certain amount of play time lol.
Reply 8 years ago
the keymap seems to be changing on me when I run the nes emulator. I took the encoder out of a logitech usb keyboard and mapped the circuit paths on the keyboard to make a remote control with the buttons I need. I don't know if this will work the same for everyone, but it seemed to be a good solution for me. Only one small problem remains, I don't know which key on the keyboard represents the select button on the nes emulator. If anyone knows, please reply :) thank you.
8 years ago
Do you think this could be modified to have 2 sets of joysticks and buttons?
Reply 8 years ago
Yes absolutely! The number of buttons/switches is only limited by the GPIO on the Raspberry Pi. If you look at the script that actually maps the key presses it'll make more sense.
8 years ago on Introduction
Hi!
the joystick movements are analogue? Or just up down left right?
Reply 8 years ago on Introduction
These kinds of sticks use mechanical switches since the RasPi doesn't have a built in analog to digital converter, and the sticks are mapped to keyboard presses anyhow.
8 years ago on Introduction
Sorry if you said this somewhere and I missed it, but do you have any idea how much this cost? Thanks, you did an amazing job! This looks so professional (: