Building a tabletop controller gaming/arcade system using a Raspberry PI 3 - can be expanded to use USB N64, NES, SNES, and other controllers with front-mounted USB ports. This build does require a laser cutter (I used a LaserCAMM) to minimize total time of the project - I am sorry to those who may not have access to one for this build. I will try to highlight differences that you may experience if you have a different type of laser cutter - the biggest consideration is whether the max material size is at least 24" x 36".
- 2x StarTech.com Panel Mount USB Cable A to A F/M - 1 ft (USBPNLAFAM1
- AmazonBasics High-Speed HDMI Cable 2-Pack - 3 Feet (0.9 Meters) Supports Ethernet, 3D, 4K and Audio Return
- Install Bay BVFD187 Vinyl Female Connector 16/14 Gauge .187, Blue (100-Pack)
- CanaKit Raspberry Pi 3 with 2.5A Micro USB Power Supply
- Extra buttons: Reyann 6x Blue Happ Style Standard Arcade Push Button with Microswitch
- Happ Arcade Control Panel Red Kit - 14 Buttons & Joysticks
- SanDisk Ultra 32GB microSDHC UHS-I Card with Adapter
- Electronix Express - Hook up Wire Kit
- I-PAC 2
- Shutdown circuit
- 2x 3 in. (76mm) Satin Chrome Wire Cabinet Pull
- Single-Pole Toggle Switch
- Single-Pole Momentary Contact Push-Button Switch
- 2x Heavy Duty Anti-Skid Surface Pads
- Miscellaneous screws, nuts, and washers - I will try to comment in the details about what I used although there is some flexibility here
- 0.25" thick Masonite/Duron - requires two 24x36" sheets
Other resources/references I found to be helpful along the way:
- Slagcoin - this website provides various button/joystick layouts that you can use
- Makercase - this website provides the vector image for the case which significantly simplifies this process
Please feel free to substitute any materials for similar items - I prefer to use Amazon Prime for most things. Also, there are different variations that can be used - where you don't use the switches and substitute the shutdown circuit for one with a switch, or not as many buttons, or you can leave out the external USB connectors for expansion later, and you certainly don't need the handles for the case although they are very convenient for opening the case for future modifications and for carrying.
I suspect that most of the Home Depot items could also be purchased from Amazon as well for convenience.
Step 1: Step 1: Preparation
To simplify this build without sacrificing the end product I made the decision to laser cut the case. - I made the decision to use #10 3/4 inch screws to secure the case - once I did that I went to MakerCase and inputted the following settings:
- Width: 35"
- Height: 3.5"
- Depth: 9"
- Material thickness - make sure you measure the thicknesses of the sheets of Masonite/Duron (or other material) you plan to cut and create a Custom Material Thickness (This is important so that the case fits together nicely)
- Tab width: 0.5"
- Screw diameter: #10 or whatever you decide
- Screw length: 3/4" or whatever you decide
Generate the case and make sure the settings are to your liking - please note that you should determine the kerf of your laser cutter, mine is 0.004" (This is important as well so that the case fits together nicely).
This outputs a .svg file - similar to what I have attached - that can be imported into Illustrator for editing
At this point, you need to head over to Slagcoin and decide what joystick/button layout you want to use - I printed out all of them to the correct size (read the page carefully for how to do this) and decided on one that I liked the best.
Now that you have all the parts, you have the case in Illustrator and you know what layout you want to use, you just have to layout the rest of the holes you will want cut to ensure that everything comes together nicely. I also made the decision to add some internal support braces because I knew my son would give it a beating and I made spacers to raise the Raspberry PI and IPAC2 off the bottom. This takes time but is worth the effort - if you buy all of the same components, you should be able to use the attached Illustrator file for your project.
Step 2: Step 2: Cutting Out the Case
Now that you are ready to laser cut the case, you need to convert the .ai file into .dxf which is completed by File > Export > change to .dxf and use all Default settings (of note, this step may be different for you if you have a different laser cutter as some will accept .ai files natively)
Note: I had to separate the three artboards into three different files and then I had to set the bottom left hand corner to the origin and set it to 0,0 (X,Y) for my laser cutter but this is relatively straightforward
This next step is pretty straightforward - cut out the layouts you built - took about 20 min per sheet for me (2 sheets total)
Step 3: Step 3: Assembly
Now that you have cut out the case, it is time to assemble the case and components
I could go into incredible detail here but it is pretty self-explanatory, the case press fits together and then you bolt it on, attach handles, secure the Raspberry PI and IPAC-2, install the supports, attach USB ports/, screw on power/reset buttons, etc. - please feel free to reach out if you have any specific questions
Step 4: Step 4: Wiring
Step 5: Step 5: Installing Software
- Format SD card to FAT32 and unzip BerryBoot onto the card
- Boot up Raspberry PI with BerryBoot installed
- Connect the Raspberry PI to the internet either through ethernet or wireless (if you have PI3)
- Download and install RetroPie image (best if you don't encrypt because you won't always have a full keyboard)
- Let it boot up into RetroPie
- SSH in the RetroPie, command for Mac OSX is ssh pi@[IP Address], password is raspberry
- sudo wget http://files.mausberrycircuits.com/setup.sh
- sudo bash setup.sh
- sudo reboot
- That installs the switch you wired up
- When you first boot into RetroPie it will have you set up a single controller but because you are using IPAC2 you will have to configure it to see a second player (since its coming from a single keyboard emulator)
- To do this: sudo nano opt/retropie/configs/all/retroarch.cfg
- See attached input_player2 changes (this works if you use exactly the same wiring as me, otherwise, reference the IPAC2 website)
- Now install roms and you should be good to go
Hope you enjoy!