I built this project for a multimedia class. Prior to this project, I had no experience with the Raspberry Pi and some woodworking experience. I believe that this project can be accomplished by someone with any skill level. I made some mistakes and learned through the process, but I am creating this instructable to help you along the way! Good luck on creating your own working Arcade Coffee Table or as I call it, the CoffeeCade.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Tools List
Many of the tools needed for this project are very common home tools. If you don't have them then ask a neighbor, a friend, or a family member. It is likely someone will have the tools and they might be so intrigued by the project that they build along with you!
- Skill Saw
- Jig Saw
- Multiple Bits (Stated When Needed)
- Tape Measure
- Extra Wood - 2'' by 4''
- Sand Paper (I used 220 Grit)
- Black Spray Paint/Sealer Top Coat
Step 2: Items Needed
- Old Thrift Store Coffee Table
- Old TV (Must fit within thrift store coffee table)
- Raspberry Pi 3 https://www.adafruit.com/product/3055
- Micro SD Card/SD Card Adapter (at least 8 gigs. I used 16)
- Raspberry Pi Power Cord (This doesn't come with Raspberry Pi!)
- HDMI Cable
- Extension Cord Power Strip
- Adafruit Joystick
- Reyann 6X Happ Type Standard Arcade Button (or your choice) https://www.amazon.com/Reyann-Happ-Standard-Arcad...
- Female 40P Jumper Wire Ribbon for Breadboard https://www.amazon.com/dp/B00W8YDCGA/ref=asc_df_B...
- No Solder Wiring Kit
- Grey Plastic Steren Box (I used approximately a 7 1/4" by 4 1/2" by 2 1/4" sized box) Pick a size that you like
- USB Keyboard
- USB Storage Device
- Four L Brackets for Mounting (screws come with)
- Twelve Nails (Skinny but at least 3 inches long)
- Four Size #4 Bolt 1/2 inch length
- Four Size #10 Bolts 1/2 inch length
- Two Size #12 Bolts 3 inch length (length dependent on fit)
- Two Size #12 Screws 1 1/4 inch length
- Twelve nuts to fit size #4 bolt
- Four nuts to fit size #10 bolts
- Six nuts to fit size #12 Bolts
- Two washers that fit around the Size #12 Bolt
- Velcro Strips/Spool of Velcro (Cut to Size when Needed)
Step 3: Construction of Table
Cutting the Hole for the TV Screen
Fitting the TV to the table top feels like a difficult and possibly overwhelming place to start, but it is an important part to the process. It is best to complete this physical construction first.
The first and most important step is measuring
- I found that the easiest way to do this is to find the center of each side of the tabletop. Then connect these lines to find the center of the table
- After doing this measure the sides of the TV and divide them in half
- Then measure from the center lines and mark the edges of where the TV Should be
- Tape where the approximate lines should be (this prevents tear out on the wood), then use a straight edge to connect the lines from the edges
- This will frame where the TV will go
- You can then place the TV in the center and round the edges accordingly if needed
Beginning the Cut
- In order to cut from the center of an existing tabletop, you will need to drill a starting hole
- I used a large bit to match the curve of my corners and drilled out all 4 corners
- Then insert the jigsaw into the starting hole and cut down each line
- Be sure to support the table during the last cut so that it still cuts even. This can be done by leaving a small portion uncut on each side as support. Or can be done with tape or scrap wood placed under the center.
Building Support for the TV Screen
- Measure the distance across the width of your table right next to the existing cut hole
- This frames around the short edges of the TV Screen
- Use L Brackets to secure these sections
- Then place the table, Tabletop down and place the tv in the hole face down (do this on a soft surface to avoid damaging your screen)
- Lay boards across the back of the TV (careful not to block ventilation) and mark the height at which they need to nailed to the outside boards
- This will support the TV and keep it level when it is flipped back over
- Secure these using nails
Paint the Table
- In order to properly paint the table, the finish needs to be removed or at least roughed up (I used 220 grit sand paper but if I went back I would probably use lower grit)
- Then I used all in one primer and black paint (it took multiple coats and sanding in between)
- Then sand the edges in order to add an aged appearance
- I later added a sealer in order to help protect the paint because I had not sanded enough in order to remove the finish and help the paint bond properly
Adding the Mounting Bolts/Screws
I performed this step later in the process after the arcade control box was finished in order to line up the bolts with the mounting holes.
- This is done by drilling two holes in the frame of the table with 1/4 inch bit (BE SURE THAT THESE HOLES ARE ON THE SIDE THAT ALIGNS WITH THE BOTTOM OF THE TV)
- Then slide a washer onto the #12 bolt
- Screw a nut up to the washer to the point where the Arcade Control box will slide tight onto the bolt
- Secure the Bolt with two nuts on the back side of the hole
- I also attached two size #12 screws underneath the table for storage of the arcade control box
- They need to be spaced out evenly according to the mounts on the control box
Step 4: Downloading RetroPi Onto MicroSD
I added this step early into the process because it is important to complete this step and get the MicroSD card plugged into the Raspberry Pi so it is included in all later fittings.
To complete this step you will need to download a couple of things onto your computer. Download RetroPi for Raspberry Pi 2/3 here https://retropie.org.uk/download/ (this will Download as a IMG file), SD Card Formatter here https://www.sdcard.org/downloads/formatter_4/, and Etcher here https://etcher.io.
Then install SD Card Formatter and Etcher onto your computer.
You can now begin the process of loading RetroPi onto your MicroSD Card
- Put your MicroSD into the SD card adapter and plug it into your computer
- Then open SD Card formatter and format the SD card (this will format and prepare it for the download)
- Now use etcher to copy the RetroPi IMG file onto the SD Card (safely eject the SD Card)
- Plug the MicroSD card into the Raspberry Pi and it will be ready to go when the time comes
Step 5: Arcade Controls (Physical Construction)
Securing the Raspberry Pi
When possible drill over a piece of wood to help support the box and prevent tear out
- To begin this process we need to secure the Raspberry Pi to the bottom of the box
- I placed mine in a corner so that the USB ports and the HDMI are accessible outside of the box
- Then I marked where the holes needed drilled by placing the Pi and marking the bolt holes
- These holes were drilled using a size 1/8th drill bit
- Ad spacers underneath the Raspberry Pi to allow for ventilation (I used 2 nuts under the Raspberry Pi and 1 nut on the outside to secure) - it would not be bad to add an O ring in between the bolts and the Pi in order to avoid accidental conduction)
Mounting the Arcade Controls
- The easiest way to do this is to remove the metal plate from the joystick and use it to mark the holes that need drilled. This can be configured however you see fit. I put the joystick as far left as possible to leave room for additional buttons later.
- The outer holes require a 3/16th inch bit
- The joystick center requires a 1/2 inch hole
- Then use a 1 and 1/8th inch bit to drill the holes for the arcade buttons (I created a plus sign in order to decide how to place the buttons in relation to each other)
Attach the joystick and buttons then move the lid out of the way
Measure and Cut Access Holes to the Raspberry Pi
This may be the most difficult part of the project. The measurements are very difficult. I recommend using an adjustable square tool to measure the height.
- Place the square at the top of the box and use it to measure the height. Also mark where it is located on the top and transfer the height to the outside of the box
- Use this method until you have properly marked where each port is located
- After all ports needed are marked, remove the Raspberry Pi so you do not damage it.
- Then cut using a dremel. (I used multiple bits to accomplish this. Find what works for you and go for it!)
You now need to drill mount holes on the side of the box that will come in contact with the table
- To do this align the square at the height you want your larger (lower) hole and mark two locations
- Then drill these holes using a 3/8ths inch drill bit
- go directly above these holes approximately half an inch and drill smaller holes approximately 1/4th inch drill bit size
- Then use the dremel to connect these two holes. This results in the following shape:
Reassemble all pieces! Leave the lid of the box off for the wiring.
Step 6: Raspberry Pi Wiring
The most difficult part of the wiring is the pin connections. This can be done easy with a solderless wiring kit. This will include multiple pieces that can allow you to join two wires together, or attach a wire to the arcade buttons.
Setting Up the Wires
Wiring the Joystick
- To begin setting up the wires, take colors that match the wires on the joystick out of the ribbon bundle.
- You will need a red, yellow, orange, green, and black
- Cut the male end off of the wire
- Strip the casing away from the wire
- Fan out the wires and join them together. Twist them up, then cover them with the casing (as seen in the image) and pinch until it holds onto the wires. This can then be electrical taped to insure it doesn't fall off
- These Pins are now ready to attach to the Raspberry Pi
Wiring the Arcade Buttons
- I began by picking a color for the ground and one for the positive. I chose white and black. I used one of each color for each button.
- To Begin, cut the male end off of the wires.
- Then strip the wire to expose it
- Feed it into the solderless attachment shown in the image
- Clamp this in place (it must be secure and hold onto the wires well)
- Then attach the black wire to the bottom of the button
- Attach the white wire to the attachment midway up the button
- These buttons are now ready to attach to the Raspberry Pi
Attaching Wires to the Raspberry Pi
- Below is a visual of the pin configuration next to the Raspberry Pi
- Attach all positive wires to green attachment pins
- Connect Grounds to ground
- My pins correspond as follows
- Red is up on joystick=pin 19
- Orange is down on joystick=pin 11
- Yellow is right on joystick=pin 21
- Green is left on joystick=pin 22
- Black is attached to any available ground
- Right button Positive=
- Left button Positive=
- Both buttons can attach to any available ground
In order to work, this wiring will require some programming which will be accomplished in the next step
This section of "Simple Wires" refers to attachments such as power, HDMI, and a USB Keyboard.This is very simple, but you won't be able to finish setup without completing this.
- Attach HDMI to the Raspberry Pi and to the TV.
- Plug the power of the TV into an outlet
- Plug the USB Keyboard into the Raspberry Pi
- Finally, Plug the Raspberry Pi power in (the Raspberry Pi does not have a power button so it should begin running some code then take you to the Raspberry Pi Home Screen)
- The home screen should look like this:
- Or it may display a message saying (no gamepad detected)
- In the case above, click any key and hold this will take you to configuring the keyboard controls
Step 7: Raspberry Pi Programming
Setting Up Your Keyboard
In order to begin the process, you will need to configure your keyboard. If this is not done, then you will not be able to access any of the Raspberry Pi built in customization controls.
- To begin set up, hold any key
- It will then take you through a menu to setup controls my controls were set up as follows:
- left shoulder=j
- right shoulder=k
- left trigger=u
- right trigger=i
- From here I just assigned random controls to the following controls (to do this I started at 1 and assigned each control a number across to 0)
- Then assign the "Hotkey Enabler" as "Shift" Which is what we had assigned to "Select" earlier.
If this does not take you to the Raspberry Pi Screen that looks like this
Then please attach another controller (I used a Playstation Controller hooked up using Wifi and this then sensed a controller and took me to the previously showed home screen)
Setting Up Wifi
Setting up wifi is very important for your Raspberry Pi. This allows you to run updates without connecting an ethernet cable and also will be required for properly configuring your joystick. There are 2 ways to setup your wifi (I did both to ensure the wifi was connected either way that was needed):
If you know the Wifi Name this is very easy.
- Press F4 to access your command line
- Type sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
- it will then show this
- psk="WIFI PASSWORD"
- change "SSID" to the name of your Wifi network, then enter your wifi password where it says "WIFI PASSWORD"
- Press "CTRL-X", then "Y" to save and exit
- Now enter the following into the command line to start Wifi Adapter
sudo ifdown wlan0
sudo ifup wlan0
- Now restart the pi with
Using RetroPi Config
- From the RetroPi Menu
- Select "Wifi"
- Click enter on "Connect to WiFi network"
- Choose your network
- Enter the password
- If you did this correctly the page that said "Connect to Wifi network" will say your IP at the top
Setup HDMI Sound
Hit F4 to access your command line
- Type amixer cset numid=3 2
- Thats all it takes to change sound output to HDMI
Using RetroPi Config
- From the RetroPi Menu
- Select Audio
- Click HDMI
- Hit Enter on Yes
Setup Arcade Controller Pin Programming
This will be the most difficult coding step! Do not fear. It is also fairly simple. YOUR WIFI HAS TO BE SETUP PRIOR TO THIS STEP.
- click F4 to access a command line
- curl -0 https://raw.githubusercontent.com/adafruit/Raspbe...
- sudo bash retrogame.sh
- This will pull up a screen that asks to select config.
- Select "Two buttons + Joystick"
- In the command line type
sudo nano /boot/retrogame.cfg
- You can now assign each pin to the corresponding controls.
- In the command line type
sudo nano /boot/retrogame.cfg
- You can now assign each pin to the corresponding controls in the menu that this will open up
- I wired mine according to the following website and the image above (yours will be slightly different due to having a Raspberry Pi 3- Diagram shown above as well):
- in RetroPi you will have to configure this arcade setup as a controller
- To do this use your keyboard
- Click enter on the homepage
- Click configure input
- Say you are sure
- Assign the directions on the joystick to the corresponding directions
- Assign your lower left button as Start
- Assign your upper right button as Select
- Click them together to skip all other lines
- When you get to the bottom, you will be able to go back up and edit choices
- Skip "Start" and "Select" configurations
- Then reassign the lower left button as "A"
- and the upper right button as "B"
- Go down and select done
- You are now ready to use your arcade controller!
Select RetroPi from the RetroPi home menu
- Select RETROPIE SETUP
- Select "Update RetroPie Setup script
Step 8: Adding Games
You will now need to use your USB Storage. To begin this process plug the USB into the Raspberry Pi while it is powered up. Wait a minute. Then unplug the USB.
- Now plug the USB into your computer
- The USB should have a folder that says "RetroPi"
- When opened it should have a few folders and one will be titled "ROMS"
- When this folder is opened it will list all emulators RetroPi supports
- Find ROMS that match these emulators and download them to the corresponding system file
- These ROMS should be in "Zip" format. If they are not you may need to uncompress and recompress the files as a ".zip" file
Step 9: Final Touches and Customization
- I used velcro to secure additional cords and run the extension cord along the inside of the table leg
- When in storage I wrap the extension cord around the leg and velcro it up to hold the wrap
- Store the arcade box under the TV on the screws to avoid it being hit with a knee or vacuum etc.
- Add command hooks on the inside of the table to hold accessories (USB, PS Controller, etc)
- I added an old steel desk cabinet mount on the side of the table and then glued magnets onto the TV control
- Sand the paint to give it an aged look
- Click "Select" on a game in RetroPi
- Click "A" on "Edit This Game's MetaData"
- Click "A" on the "Name" line and edit
- Click "Select" on a game in RetroPi
- Click "A" on "Edit This Game's MetaData"
- Click "A" on "Delete"
- Delete the game from you USB file folders as well or it will continue to download each time you add new games
- Use the corresponding controller. Not all games work for a 2 button arcade. If you configured other controllers, use those. If not then delete the game and play another.
- For two button Arcade, "A" is advance and "B" is back.
- Use hotkeys (as seen above) to exit, save, load, etc.
Paint! This is an obvious way to customize
- You could also use modge podge to add emblems to your table if it is not going somewhere that it needs to look as professional.
You can add your own folders in order to organize your games how you see fit. This is done by:
- Clicking "Start" on the home screen
- Selecting Game "Collection Settings"
- Create New Custom Selection- then follow prompts
Configure other controllers to expand your gaming options!
- A great link to see controller configurations is:
Explore Your Raspberry Pi's Potential they can do (almost) anything!
Step 10: Trouble Shooting
If Your Home Screen won't Load with just a Keyboard
- I don't know why but my RetroPi would not load at first with just a keyboard configured. I had to plug in a PS3 controller before it would take me to the home menu.
Getting Rid of Start Up Coding Display
This requires coding: hit F4 to go to the command line
- Type sudo nano /bood/cmdline.txt
- In the code that appears it says "console=tty1"
- Change the "1" to a "3"
- When you are done editing press "Ctrl-X", "Y", then "Enter"
If Your Screen has Black Bars Around it
This can be solved through the RetroPi configuration screen:
- Click "A" on retropie
- Click RASPI-CONFIG
- Click Advanced Options (Now use Enter to select)
- Click Overscan
- Click Disable (if this doesn't work try enable)
What to do at the Start Up Message of Each Game
The short answer to this is.... Ignore It! don't click anything. This is for display configuration. Only mess with this if you know what you are doing or you are trying to improve a games visual.
Step 11: Final Look
This shows a final view
Removal of the Arcade Control Box
The underneath storage of Arcade Control Box
The velcro storage of wires
The magnet storage of the remote
The command hook storage of the additional PS3 Control and the Spiderman USB
I hope you have a great time building! Comment questions, concerns, or helpful tips for others!