All while putting the cabinet together, I kept thinking about the power sequencing board, relay board, and the somewhat untidy way it was put together. On top of that, I thought it was wasteful to have lit buttons that all just stay lit all the time. I decided to rip the power boards back out, wire each button light separately, and make a combined button light board and power sequencer.
New power board layout. The 2×14 header at the top is for a ribbon cable to the controller buttons. Below that are 4 SN7407 open collector drivers, since the total power draw can be way more than what the microcontroller, a PIC18F4550, can sink.
New custom power board in place, much better! There is one power relay to spare.
The software to control the lights uses a lot of tables to display all kinds of running patterns on the buttons. However, this only starts after the console has been idle for a couple of minutes. I am generating an ‘activity signal’ from the button pad whenever the most common stick movements or button pushes occur. This was a problem, since the Ultimarc Ipac 2 controller that I am using (https://www.ultimarc.com/ipac1.html ) does not generate such a signal. I did not find a reliable way of creating the signal from within the RetroPie software, so I ended up creating it by capturing the grounding of the buttons through an array of 1N4004 diodes and making the activity signal an active low in software. Works great!
Back-lit top section in place…
Double-layer of reinforced glass with the graphix insert in between. All graphics from http://www.gameongrafix.com/ , very happy with the quality.
I also made use of changing RGB light strips behind the glass, not too intrusive and still cool.
Booting RetroPie. Still some work remaining with the config files, obviously…
All configuration is done via SSH from a separate computer. I also had to create a Python script to communicate with the power sequencer and shut the Pi down gracefully when signalled.
Detailed view of the relay controller board, the relay board and the bottom of the Raspberry Pi. The purpose of the relay controller board is to start up the screen and audio amplifier after the Taspberry is finished booting. Also, even more important, the controller will turn the screen off and then signal the Raspberry to shut down in an orderly fashion before cutting the main power relay. The main power relay is the first thing to be turned on when the power is turned on, creating a ‘holding’ voltage to the power supply. This way, the caminet will be completely ‘cold’ when the power is turned off. The power switch is a 2-pole momentary switch giving the power supply mains for the milliseconds it takes to boot the microcontroller and hold the power.
The upper part of the cabinet coming together, with holes for the upper speakers. Also, the picture tube is in place.
The gaming control panel, with Sanwa sticks and lit buttons. Button pattern courtesy of ‘slagcoin.com’, thank you!
Rear view of the speakers, tube, and donor TV chasses to the left of the tube. The controller board has an IR diode output to turn the TV on and off, but it turned out that this was not necessary here. Also visible is the reflection of the control panel in place.
I glued the MDF together using professional wood glue. The center picture shows the beginning of the insides of the cabinet. From the top down: audio aplifier controls and the power switch, 3x20W audio amp with a 2x18v transformer, the coin slot mechanism, and the subwoofer at the bottom. The center bottom is about an inch aboce the floor to allow for the sound to escape. On the right wall is a switchin power supply for 5v and 12v DC. Also visible is a relay board for the power sequencing and the sequencer itself based on a PIC12f675 (detailed board picture). I did not stay with this solution, but more about that later.
One project that I have always been wanting to do but never really found the time or space, has been to create a full-size arcade cabinet. I decided to get started this summer, and it is now done.
I have seen many similar projects, some of which I thought were really nice. I wanted the main features of my own cabinet to be:
– Floor-standing, genuine-looking cabinet, with a real CRT and coin slots
– Raspberry PI running the ‘RetroPie’ on Raspbian
– Power sequencing with a single power switch like a ‘real’ console.
Here’s some pictures of the initial cabinet contruction using 16mm MDF. The different panels are glued together to avoid any visible screws.
It’s been a busy month. I’ve built and re-built the main board (leaving a soldered mess – I need to build a second one to clean it up). The CAN communications is working, and the main board is communicating with the external devices (FC301 2m tranceiver module w. opentracker packet radio modem, Siemens TC35 GSM, and a GTPA010 GPS). In addition, I have a 8 channel relay board, the geiger input, and an on-board temperature sensor attached using a one-wire protocol.
The modular plg in the center bottom is the programming plug for the Microchip ICD3 programmer. This allows for very fast software prototyping. Sure – I can emulate and single step the software before programming. However, with this many external devices being controlled by the software, I depend on being able to run the program ‘live’ and use a multimeter, scope, and protocol analyzer to troubleshoot the various components.
One of the most exiting aspects of this project (in my view) is the use of a CAN bus to communicate beween two CPU’s. CAN is not a super-fast way of doing networking. In a project like this, though, there is very little overhead from an OS, protocol headers, or anything else. The main CPU is running at 80 MHz, the display board at 32 MHz, and the bus speed is 250 kb/s. As it turns out, with everything going, the bus and CPU’s are mostly idle (!).
So, with the hardware mostly sorted, a whole range of possibilities present themselves. The software I have written so far will keep track of all APRS stations nearby and display them on a little radar screen (picture above). I can text the unit from my cellphone and get a position- and radiation report back. The position, radiation and other status info is reported in the APRS telemetry stream. The unit also reports telemetry to a web-server I have, every time it connects to an open WLAN network. Using GSM, APRS, or commands from the web server, I can control the relay board. The display board gives me correlated data continuously, showing radiation, nearby APRS stations, WLAN networks, GSM coverage, etc. etc. I can configure alarms that are displayed and transmitted when triggered. The optocouple inputs (4 on the main board, two on the display) allows me to read inputs like the state of the car alarm, ignition level, and other car-related things. The display board even has a photo diode that regulates the display brightness via the PIC18 A/D converter. This data is also part of the telemetry. My imagination is the limit, really.
I would welcome any questions, feedback and suggestions on this project – maybe it inspires similar projects?