Final project - Fabio Coelho Ribeiro

First idea and explanation

If you read the section of what I like, you can see I really like video games ever since I was young.

For a few years now, I've always wanted an arcade machine, so for the occasion and with the opportunity of the Fab Academy, I asked myself : "Why not make one ?".

The main idea is to have an arcade machine with lots of games that can be chosen from an interface and play with the different controls on the arcade. I also want to have a plug and play system where games are saved in a storage device and be able to take it off or interact with it to freely add or delete games.

Here's a basic sketch of what I'm aiming for :

I got the inspiration by looking at different arcade machines that exist and chose the one that I prefer (it comes from the following website : Dragon ball arcade machine).

Here's a list of it's components :

  1. Body : Made out of wood (MDF or plywood, not too thick or thin)
  2. Controls : 6 push-buttons to play, 2 push-buttons for menus and a joystick
  3. video output : Monitor (VGA or HDMI)
  4. Sound output : Speaker(s)
  5. Games : Start with simple games made with PyGame, then, if I have the time, download games trough the game engine Godot and load them in a storage device.
  6. Additional ideas : Lights, stickers, special ports for additional control panel, arm rest, foot rest, ...

Here's a block diagram :

To run games, I'm going to need a SBC (single board computer) because basic microcontrollers aren't powerful enough, for now, I'll use a Raspberry Pi 3 model B.



Making the project

Enclosure

For the enclosure, I'll use the prototype I made on Week 07 (computer-controlled machining) and modify it to integrate everything together.

I also painted it black to have a better visual and because 2 types of wood were used which gave it a weird look.

Here's the final result after painting and assembling everything :



Monitor

To integrate my monitor to my project, I had to disassemble it to make measurements of the "skeleton" and make a new frame compatible with the enclosure.

After noting every important measurements, I made two new frames where the idea is to simply sandwich the monitor.

I then use a CNC machine to make the 2 pieces.

I had to make a second front frame because the first one was a bit too short and the monitor couldn't fit.

I eventually had to use metal files to embiggen the holes of the monitor buttons.

(I also ahd to add a tiny piece of wood to fix the Buttons PCB because it would move)

I used lock nuts to make sure to tighten the frames together.

Here's the final result :

Here's the final result after painting :



Back door

To get access to the inside of the project without having to dismantle everything, I modified the back to have a door and a locking system.

I then use these hinges to make the door.

Then, I add a 3D handle to easily open or close it as well as locking pieces to keep it locked.

To fix the 3D pieces to the enclosure, I use threaded inserts that i solder into the designated holes.

Here's the final result :

Here's the final result after painting and assembling :



PCB modules

Based on the blocks on the block diagram above, I can already make the PCBs of my arcade machine. I'll first do the input modules and then make the microcontroller PCB based on them to be sure the connections with the IDC connectors and ribbon cables are correct.

The PCBs were made with the Bantam PCB milling machine with different end mills for tracks and holes/edges.

I have to load the correct gerber files or the software will give me weird results : front/top layer, bottom layer and PTH (holes layer) :

  1. Joystick

    Input module to control the interface and play games.

    (End mills used : tracks : 0.3mm, holes/edges : 0.6mm)

  2. Buttons

    Input module to control the interface and play games.

    (End mills used : tracks : 0.3mm, holes/edges : 1mm)

  3. Buttons right and left

    Input modules to close the current game and close or launch the interface.

    (Button right module)

    (Button left module)

    (End mills used : tracks : 0.3mm, holes/edges : 0.6mm)

  4. Microcontroller

    Main module that receives the data from the input modules and sends it to te Raspberry Pi 3.

    (End mills used : tracks : 0.5mm, holes/edges : 0.9mm)

I sometimes wanted to take pictures of the PCB after the tracks or holes/edges operations and this unfortunately messed up the origin of the machine which led me to drilling errors like these :

At some point, I also had to remake the PCB modules to make them bigger to have fixation holes that wont disturb the 3D buttons.

(Old PCB modules)



PCB modules integration

The PCB modules will be fixed on the controller board, which I had to remake to have the good dimensions for the buttons, the joystick hole and the fixation holes.

The buttons and the joystick are made in 3D, I first made arrays of holes, each with different dimensions to choose the best one.

After trying the holes, I choose the best ones, create a first design for both components and print them.

After trying the 3D pieces, I modify them slightly to match the holes (mainly the buttons) and 3D print the final versions.

When everything is ready, I can assemble the PCB modules on the controller board and add the ribbon cables.



Raspberry Pi 3 integration

The Raspberry Pi 3 will be placed on a 3D holder which is fixed to the enclosure, there is also a hole in one of the wood pieces inside the enclosure that leads to the back door section where the cables for the power supply and monitor cable will pass through.



Interface and games

The Raspberry Pi 3's purpose is to handle the interface and games.

I plan on making an interface and make simple games using Pygame at first and if I have time, try to implement more complex games.

The first thing to do when using a Raspberry Pi is to install its OS, I can do that using the official Raspberry Pi Imager and a 32GB microSD card.

I choose the Raspberry Pi model :

I choose the desired OS :

I choose the microSD card :

The following parameters to enter some host preferences :

Host name :

Localization :

Username and password :

Then I can press the button Ecrire which will install the OS in the microSD card :

Finally, I can insert the microSD card into the Raspberry Pi 3, power it using its power supply and with an additional mouse, keyboard and monitor, interact with it.

Result on the arcade machine monitor :



Bill Of Materials

Here's the BOM of the project :

Item Quantity Unity price [€]
Wood plank (12mm) NA ~25,00
Paint canister (black) 2 2,33
Monitor (19 inches) 1 NA
Raspberry Pi 3 (Model B, 1GB RAM) 1 ~40,00
MicroSD card (32GB) 1 ~15,00
Raspberry power supply 1 ~10,00
Raspberry Pi Pico 1 ~4,00
Joystick 1 2,66
Keyboard switch 8 0,86
SMD resistor (1206) 9 NA
SMD capacitor (1206) 12 NA
USB-A to USB-C cable 1 ~10,00
VGA to HDMI cable 1 ~10,00
Power cord 1 ~10,00


Useful file(s) (Click to download)

    PCB modules

  1. Joystick module (KiCad)
  2. Buttons module (KiCad)
  3. Button right module (KiCad)
  4. Button left module (KiCad)
  5. Microcontroller module (KiCad)
  6. 3D

  7. Back door pieces (Autodesk Fusion)
  8. Buttons and joystick pieces (Autodesk Fusion)
  9. Raspberry holder (Autodesk Fusion)
  10. Arcade machine pieces (Autodesk Fusion)


ChatGPT prompts