All Projects → maxvfischer → Diy Arcade

maxvfischer / Diy Arcade

How to build your own full-size arcade machine from scratch

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Diy Arcade

Deej
Set app volumes with real sliders! deej is an Arduino & Go project to let you build your own hardware mixer for Windows and Linux
Stars: ✭ 730 (+288.3%)
Mutual labels:  gaming, diy
Nerf-Gun-Call-of-Duty-Warzone-Controller
DIY Call of Duty Warzone controller built using a nerf gun powered by the Raspberry Pi 4.
Stars: ✭ 18 (-90.43%)
Mutual labels:  gaming, diy
Windowsgsm
🎲 A powerful tool to manage game servers. Equipped with a GUI for server admins to install, import, start, stop, restart, update, and automate multiple servers with a push of a button.
Stars: ✭ 141 (-25%)
Mutual labels:  gaming
Oxide
Old repository for the Oxide mod. See individual repositories for updates
Stars: ✭ 173 (-7.98%)
Mutual labels:  gaming
Vga Passthrough
Up to date (2021) reference for setting up a VGA passthrough on (Ubuntu) Linux.
Stars: ✭ 157 (-16.49%)
Mutual labels:  gaming
Cloudrig
Stream your applications with Parsec and AWS on the cheap.
Stars: ✭ 151 (-19.68%)
Mutual labels:  gaming
Nes
A Javascript NES Emulator
Stars: ✭ 168 (-10.64%)
Mutual labels:  gaming
Serpent
Cross-platform gaming kit in the D programming language
Stars: ✭ 140 (-25.53%)
Mutual labels:  gaming
Snowflake
❄️ 🎮 Extensible Emulator Frontend written in C# and Javascript
Stars: ✭ 185 (-1.6%)
Mutual labels:  gaming
R e c u r
an open diy py/pi based video sampler
Stars: ✭ 158 (-15.96%)
Mutual labels:  diy
Exomy
ExoMy - The 3D Printed Rover
Stars: ✭ 173 (-7.98%)
Mutual labels:  diy
Piscope
Turn your Raspberry Pi into an Oscilloscope/XY Plotter with Python
Stars: ✭ 155 (-17.55%)
Mutual labels:  diy
Gbridge
gBridge.io allows you to control (almost) anything with Google Assistant, by translating voice commands to MQTT messages.
Stars: ✭ 152 (-19.15%)
Mutual labels:  diy
Wine Nine Standalone
Build Gallium Nine support on top of an existing WINE installation
Stars: ✭ 170 (-9.57%)
Mutual labels:  gaming
Bottles
🌠 Easily manage 🍷prefix in a new way! (Run Windows software and games on Linux)
Stars: ✭ 147 (-21.81%)
Mutual labels:  gaming
Protontricks
A simple wrapper that does winetricks things for Proton enabled games, requires Winetricks.
Stars: ✭ 182 (-3.19%)
Mutual labels:  gaming
Bbbmini
BeagleBone ArduPilot DIY Cape
Stars: ✭ 140 (-25.53%)
Mutual labels:  diy
Temper Esp8266
Temper is a compact temperature sensor based on ESP8266 and SHT30 with large 13x7 pixel led display.
Stars: ✭ 155 (-17.55%)
Mutual labels:  diy
Rpi wordclock
Software to create a Raspberry Pi based wordclock
Stars: ✭ 164 (-12.77%)
Mutual labels:  diy
Macos Egpu Cuda Guide
Set up CUDA for machine learning (and gaming) on macOS using a NVIDIA eGPU
Stars: ✭ 187 (-0.53%)
Mutual labels:  gaming

main gif

This guide goes through all the steps necessary to build your own full-size arcade machine, including the pre-designed CAD-files, how to assemble all the cabinet parts, how to set up the Raspberry Pi running the arcade program etc. The project was my first project going from CAD to actual build (actually also the first time I used a CAD program).

If you have any questions, feel free to contact me on LinkedIn: https://www.linkedin.com/in/max-fischer-92997281/

Table of content

  1. Build the cabinet

    1. Download the CAD-file
    2. CNC parts
    3. Hand-cut parts
    4. Draw outlines of parts
    5. Cut wood biscuits holes
    6. Glue main parts together
    7. Adding cabinet legs
    8. Add screen panel
    9. Preparing the light box
    10. Spackling paste and sanding
    11. Spray painting
    12. Art work
  2. Add electronics

    1. Add electricity to the cabinet
    2. Screen
    3. Light box
    4. Arcade buttons and joystick
    5. Set up RetroPie on Raspberry Pi
    6. Configure arcade buttons and joysticks
    7. Power button
    8. Speakers
    9. Structure cables
  3. Final arcade machine

    1. Contact

Build the cabinet

Download the CAD-file

The CAD design was created in AutoCAD Fusion 360. This was my first experience using any CAD-program, so the design is likely far from optimal and there are probably a lot of possibilities for improvements. Note that all the CAD-files are in millimeters.

3d

Watch the CAD-file on GitHub's 3D File Viewer

Download CAD-file (.dwg)

Download CAD-file (.obj)

Download CAD-file (.step)

Download CAD-file (.stl)

Download CAD-file (.f3d)

2d

Download side panel (.dxf)

Download screen panel (.dxf)

Download button panel (.dxf)

Download below button panel (.dxf)

Download back panel (.dxf)

Download hatch outside panel (.dxf)

Download hatch inside panel (.dxf)

Download bottom panel (.dxf)

Download lightbox top (.dxf)

Download lightbox bottom (.dxf)

fly around arcade

CNC parts

To get a perfect fit for the arcade buttons and joysticks, the screen, the power button and the speakers, the button panel and the screen panel were CNC-cut. This was more expensive than doing it by hand, but lead to a much better finish. To make the cabinet fit perfectly together, the two side panels were also CNC cut, as they have multiple rounded shapes that need to be identical on both sides.

screen panel

button panel

side panel

all cnc parts

Oh, and remember to CNC-cut the CAD file on size 1:1 and not "utilize full MDF board"... ¯\(ツ)

wrong cnc

Hand-cut parts

As the rest of the parts were more or less rectangular, they were cut by "hand". To do this, two different mounted saws were used:

  • A vertical panel saw to cut down the MDF to smaller pieces
  • A table saw to cut out the final pieces

vertical panel saw

vertical panel saw

Piece Image
Back panel vertical panel saw
Bottom panel vertical panel saw
Below button panel vertical panel saw
Hatch panel vertical panel saw
Light box panel 1 Missing
Light box panel 2 vertical panel saw

The only panel that needed some more work was the hatch panel. The outlines of the hatch were first sketched on the panel.

hatch 1

A circle saw was then used to cut out the actual hatch.

hatch 2

hatch 3

A hand held jigsaw was used for the edges as it's difficult to know how far the circle saw will cut.

hatch 4

After the main part was separated into the inner and outer part, "blockers" were glued and nailed into place. This, together with a standard window magnet was used to keep the hatch in place.

A hole was also cut at the top of the inner part to enable it to be opened.

hatch 5

hatch 12

hatch 6

hatch 14

hatch 7

hatch 8

hatch 9

hatch 13

hatch 10

hatch 11

A hole was also drilled at the bottom of the large back panel to prepare for a power strip to be inserted.

cable grommet 1

cable grommet 2

Draw outlines of parts

It was important to fixate all the parts at the same location on both side panels for the cabinet to be symmetrical. To simplify this, outlines were drawn where each panel was supposed to be attached to the side panels. As the button panel and the screen panel were attached at an angle, their outlines were first drawn on one of the side panels. Then the outlines were reflected and transferred to the other side panel by using some reference points. It was a bit tricky, so take your time.

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

Cut wood biscuits holes

To hold all the panels together, wood biscuits, wood glue and a nail gun were used. The wood biscuits are not only good for making the cabinet robust, but they also help with fixating all the panels at the right places and angles. The only panel that wasn't attached with wood biscuits was the screen panel. The reason was for the screen to be interchangeable if it breaks, something that is not possible (or atleast very difficult) if the panel is glued in place.

When using the wood biscuit cutter, it's important that the holes end up at the correct place at the aligning panels. One simple way of solving this is to align your panels and then draw a line on both panels at the center of where you want the biscuit to be. If you do this, the holes will end up at the right place.

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

vertical panel saw

Before gluing all the parts together, make sure that they fit by placing each panel at their place. A tip is to draw shapes (triangles, circles etc) on connecting parts, so you easily know which parts that go together later on.

vertical panel saw

vertical panel saw

vertical panel saw

Glue main parts together

When gluing the parts together, you'll need to be fairly quick and structured. I started of by laying down one side panel first, then gluing the middle parts and finally gluing the other side panel.

Start of by adding the glue in the wood biscuit holes. Then press down the wood biscuits into the holes. After that you apply wood glue along all the connecting parts and press them together.

glue 2

glue 3

glue 4

glue 5

glue 1

When done, make sure that all the parts are aligned and in the right position. Then apply force using large clamps and nail everything together using a nail gun.

glue 6

glue 7

glue 8

Also, don't forget to remove redundant glue dripping out from the connecting parts, it makes it much easier to get a nice finish later on.

glue 9

Adding cabinet legs

To distribute the upwards force from the legs, a small block of wood was glued and nailed in each corner inside the cabinet.

legs 5

I had some wood laying around that I used as legs for the cabinet. After cutting out four squares, make sure that they fit nicely in each corner.

legs 1

Use a sand paper to round the edges.

legs 2

The legs was then glued from the outside and screwed from the inside.

legs 3

legs 4

Add screen panel

To be able to easily remove and change the screen, the screen panel was screwed in place. Two slim wood bars were glued and nailed on each inner side at the correct angle for the screen panel to rest on.

screen panel 1

screen panel 2

screen panel 4

screen panel 3

To get a nice seamless look of the screen, a handheld milling machine was used to extract a slot for the screen on the back side of the screen panel.

screen panel 5

screen panel 6

screen panel 7

screen panel 8

screen panel 9

The screen I used had button on the front, so I needed to drill holes in the screen panel for them to be clickable.

screen panel 10

screen panel 11

screen panel 12

screen panel 13

Finally, the screw keeping the screen panel in place were aligned with the speakers to get a nice look.

screen panel 14

Preparing the light box

As a true retro arcade cabinet, of course we need a glowing light box at the top of the cabinet. To keep the plexiglass in place, four small wood cubes were glued and nailed at each corner for the plexiglass to rest on.

preparing lightbox 1

preparing lightbox 2

Spackling paste and sanding

Before the cabinet was sent to spray painting, final touches were made to get a nice smooth finish. Spackling paste was applied to cover up all the nails and plastic padding was used to cover up small visible mistakes made. When everything had dried, an electric sander was used to remove redundant spackling paste and plastic padding. All the edges was smoothed by manual sanding.

spackling paste 1

spackling paste 2

spackling paste 3

spackling paste 4

spackling paste 5

spackling paste 6

spackling paste 7

spackling paste 8

Spray painting

To get a nice finish, I payed a professional to spray paint the cabinet in a black lacquer color. To get a good light reflection in the light box, I got it painted white.

spray painted 1

spackling paste 8

spackling paste 8

spackling paste 8

Art work

I'm familiar with Adobe Illustrator, but far from an expert in creating art work. So to create the art work, I paid for a premium subscription at Freepik (https://www.freepik.com) that costs 9.99 €/month. This enabled me to download a bunch of different high-quality vectorized retro illustrations that I combined into the final art work. When done, I printed them as stickers.

art work 1

art work 2

A good way to apply the art work is to tape the sticker at one side to fixate it, then you remove some of the cover and start scraping it from the bottom up. By doing so, you'll get it at the exact position while reducing the number of bubbles.

art work 3

art work 4

art work 5

art work 6

art work 7

art work 8

art work 9

art work 10

art work 11

art work 12

The side stickers were so large that they had to be split into two separate parts. To keep the correct alignment, arrows were drawn indicating where the two parts should align. A small space were kept at the bottom to reduce the risk of the sticker being peeled off.

art work 13

art work 14

art work 15

art work 16

art work 17

Stickers indicating the button configuration were also added.

art work 19

art work 20

art work 18

Add electronics

Add electricity to the cabinet

A round plastic cable grommet was inserted into the hole previously drilled at the bottom of the back panel. A power strip was then added.

power strip 1

power strip 2

Screen

The screen was kept in place by using galvanized banding straps.

screen 1

screen 2

screen 3

screen 4

screen 5

Light box

To get a consistent feel of the art work I reused some of the graphical component from the side panels.

light box 1

The art work was printed as one large sticker and the text "ARCADE MACHINE" was cut out to let the light through. The sticker was then attached to a frosted plexiglas.

light box 2

For the light source I used a LED tube of fitting length, with a wire that was long enough to go all the way down to the power strip at the bottom of the cabinet. The LED tube was attached to the back panel by using double-coated adhesive tape.

light box 3

light box 4

light box 5

light box 6

To remove potential light leakage around the plexiglas, long stripes of foam was cut and attached behind the plexiglas edges using double-coated adhesive tape.

light box 8

light box 9

light box 10

light box 11

light box 12

light box 13

light box 14

Double-coated adhesive tape was also used to keep the plexiglas in place.

light box 15

light box 16

light box 17

Arcade buttons and joysticks

Before I started this project, I bought two sets of arcade buttons and joysticks from Aliexpress. This type of button set is very convenient to use, even without any knowledge of electronic circuit boards. I don't know if this exact set is still available, but I've seen multiple vendors selling similar types of arcade button sets.

Using this type of set makes hooking up the buttons very simple. You attach each button and the joystick to the circuit board that is included in the set. Then you connect the USB-cord to the circuit board and to the computer.

arcade_buttons 1

arcade_buttons 2

To center the joysticks in the holes, I used a wide double-coated adhesive tape normally used to attach rugs to floors. It's easier to be two people doing this, one person centering the joystick from the top, while the other person locking it in place. The joysticks were then screwed into the button panel.

arcade_buttons 4

arcade_buttons 5

arcade_buttons 3

arcade_buttons 6

arcade_buttons 8

arcade_buttons 7

Set up RetroPie on Raspberry Pi

RetroPie (https://retropie.org.uk/) is the program that enables you to create a retro gaming station out of the Raspberry Pi. As RetroPie is an open-source project that is continuously updated, it's easiest for you to follow the installation guide on their website: https://retropie.org.uk/docs/First-Installation/ (visited at 2020-09-06).

Configure arcade buttons and joysticks

The USB cables from the arcade button electronic circuit boards were connected to the Raspberry Pi. When the Raspberry Pi is turned on and RetroPie is started, a welcome screen should be visible, asking you to configure the controllers.

Power button

To enable a convenient way of shutting down the arcade machine, I added a hole in the screen panel, fitting a power button.

power button 1

Two cables were then soldered to the button and attached to the GPIO pins 5 and 6 on the Raspberry Pi (see a GPIO diagram here: https://www.raspberrypi.org/documentation/usage/gpio/, visited 2020-09-06). When shortening the GPIO pins 5 and 6, the Raspberry Pi is natively waken up from its halted state.

power button 2

power button 3

power button 4

power button 5

A small script was then added and executed on start up of the Raspberry Pi. The script listened to another shortening of the GPIO pins 5 and 6, that then triggered a safe shutdown of the machine.

To add the shutdown script, do the following:

  1. Start the Raspberry Pi
  2. When the EmulationStation (RetroPie) has started, click F4 on your keyboard to enter bash
  3. Make sure that you have python and pip installed
  4. Install RPi.GPIO: pip install RPi.GPIO (see https://pypi.org/project/RPi.GPIO/)
  5. Create a utils folder under /home: mkdir /home/utils/
  6. Add this script (shutdown_script.py) to the newly created utils folder
  7. To make the Raspberry run this script on start up, add the line python3 /home/utils/shutdown_script.py & at the end of the file /etc/rc.local, just before exit 0

power button 6

As of now, the power button only shuts down the Raspberry Pi. In the future, I would like to add a relay controlled by the Raspberry Pi, turning of all the other electronics as well (screen, light box etc).

Speakers

Two speaker wires were soldered to each speaker. The speakers were then placed in the CNC-cut holes and attached by screws to the screen panel. All cables were then connected to the amplifier. A 3.5mm AUX stereo cable was then connected between the amplifier and the Raspberry Pi.

speakers 1

speakers 2

speakers 3

speakers 4

Structure cables

To keep everything nice and structured inside the cabinet, I attached cable canals with double-coated adhesive tape.

structure cables 1

structure cables 2

structure_cables 3

structure cables 4

structure cables 5

structure cables 6

structure cables 7

Final arcade machine

final arcade

final arcade 1

final arcade 2

final arcade 3

Contact

If you have any questions, feel free to contact me:

contact

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].