Arcade Rebuilt

Toying with some hardware! Trading the laptop that used to run my arcade machine for a Raspberry Pi 4 Model B

Arcade Rebuilt
Photo by Carl Raw / Unsplash

This project has been an absolute heartache - It's needed nothing but time, but between work and Uni I have been stretched. Now Uni is on hiatus over summer I've finally got a bit of time to dedicate to some hobbies.

I started building this arcade in mid 2015, it's been through a few iterations but mostly since the last build I was happy with it. Recently the laptop powering the arcade was starting to show signs of its age (11 year old Acer!) and, sitting on my desk for the better part of a year was a Raspberry Pi 4 Model B - doing nothing. While I was working on my final Uni project for the semester I resisted the urge to gut the arcade and start again, but the second the submit button was hit... cabinet door open and WHOOSH- out with the old and wire up the new!

My beloved arcade, white and Minecraft green.

Setup

The initial hardware was simple enough, Raspberry Pi 4 Model B running RetroPie - a Debian based Linux Distribution built specifically for arcades and consoles. To this I connected my Bluetooth Logitech M720 Triathlon Mouse and K780 Keyboard. Then installed AnyDesk and also enabled SSH so I can connect via a multitude of means from my primary laptop depending on the tasks I want to complete. The whole setup is powered by a USB-C, whichever power supply came with my Samsung phone.

As a bonus, I added a monitor switch and dropped my Nintendo Switch inside so I can play that too.
Using SSH I can login from another machine and check the temperature.

Power On - (Wake)

What it was missing though was an on / off switch. For this I used an existing button on my machine that is almost never used. This button runs from the GPIO pins - specifically GPIO3 and the ground GND GPIO next to it. By shorting these together, it wakes the RPi from it's sleep state - pretty neat!

Power Off - (Sleep)

The same button when pressed again sends an interrupt signal via a FALLING edge to the RPi. When this signal is detected, the following command is executed and the arcade goes to sleep until the button is pressed again.

shutdown -h now
Simple shutdown "correctly" command to sleep the RPi

Adding a Fan

The DuinoTech Dual fan, ain't it pretty!

Knowing the arcade can get a bit hot, particularly with some more complex games, I purchased this DuinoTech dual fan from JayCar. The setup was quite intuitive but it came with one pretty significant flaw - when the arcade goes into sleep mode, the fan stays on.

Stopping a Fan

While looking for a way to implement an auto on / off feature I stumbled across a post with directions on how to not only add this but to implement an "on / off at temperature" - back to JayCar. It didn't take too long to wire this up, below is my own version of the circuit diagram for clarity, and also updated for the parts I've used.

Simple circuit diagram for the fan controller.
Lacking a breadboard I just had to go old school and solder it all together.
All rigged up and ready to go.

ToDo

Still a few things to tick off the list.

  • At a later date I'll give player 2 back their button and add a dedicated button for power off to the side.
  • Screensaver / suspend - when the RPi times out, I currently have no option but to hard power down (aka it's frozen)
  • Config Emulation Station, the built in arcade frontend.
  • Add a few games (Joust, Donkey Kong, Mr TNT, R-Type II, Frogger)
  • Add one of my own games to it!
  • Pretty lights - I'm looking forward to the lights as there's opportunity for programming here - currently I've just some USB powered strip lights.

Next up

I was going to do some more programming on the surveyor toolbox - very specifically build a bit of a game using it and fix some bugs. I'll get onto that over the next few weeks if I'm not too busy painting the house over Christmas :)

References

I wasn't born with the know how for this, I had to Google the shite out of it! For more detailed information on the above, please check out these websites.