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.
Adding some communications coverage
The PIC32 has 6 UART’s, and I am using them all in this project. I was using one of them for a bluetooth module, but could’nt really find a way to utilize this capability for anything smart. Originally, I had planned to allow a user to configure the system through a smartphone app when connected to the bluetooth, but I have already implemented configuration through SMS messaging. With the new WiFi stack, I could also create a simple configuration portal that is served by the unit itself.
So – out with the bluetooth and in with an Iridium satellite modem. Now we’re talking coverage! The Iridium SBC9602 is an amazing little device that supports the so-called Short Burst Data service. It will let me send and receive data through an e-mail gateway to any point on the planet. What is really cool about this is that I now have Geiger tubes from 1973 on the same board as a hyper-advanced satellite modem. Also notice that the satellite patch-antenna is mounted on a ground plane. Transmitting to the satellite network actually posed a new challenge with regards to power – the modem draws 1.5 amps for 10 mS when communicating with the network. I solved this problem by using a 0.22F super-capacitor to be able to supply that much power in a burst.
One additional note since I am getting this questions fairly often: The reason for using ‘old’ geiger tubes instead of more modern semiconductor detectors is to be able to cover as much radiation flux as possible. This is also the reason why I upgraded the project to use two tubes instead of a single tube. Semiconductor detectors have a very small area compared to the tubes, which gives the detector low resolution and sensitivity. If I were to upgrade the detector in any way, I would use more modern tubes. The semiconductor detectors are too small, too difficult to buy, and too expensive. Actually, they don’t seem very available at all. Ebay is full of new-old-stock (NOS) tubes that are both sensitive and cheap.
While being away doing other things, I was thinking about ways of improving the overall design. I decided that the main problem with the project was that it consumed too much power while in sleep mode. After all, it is intended to be in a truck that may be parked for a long time. So I designed a common power board for the CPU and the gauge, and redesigned the CPU and gauge to use more modern, low-quiescent regulators. Car power can be pretty spikey and dirty, so I made a filtering board that will also kill transients and noise in general. The output is an 8 volt bus that supplies the gauge and the CPU
The CPU itself received an upgrade. The main item was the MRF24EG0 WiFi module, which replaces the ‘b only’ module. In software, the IP stack got upgraded to the latest version to support the new module. In addition, the afore mentioned voltage regulator upgrade and a 5v software switch brought the sleep current down into single digit mA figures.
The most important redesign was probably to combine the geiger circuitry with the GPS, greating a sensor board with a minimum of cables.On the top side, you see the RYN25AI GPS module and the 400v high voltage module for the geiger counter. On the bottom side, you see the two SBM-20 geiger tubes. An additional feature of the new board is that it holds a RS232 level converter and an header (left in picture) that is pin compatible with the Iridium satellite 9601 SBD modem. I picked one up at a surplus sale, but haven’t decided whether to use it or not. Anyway, the hardware is there, just in case.
This is the CPU chassis, holding the CPU board and the power board. The display and buttons are for debugging – I may make another version without the display to be installed in an actual vehicle.
Here is a picture of the whole set-up, hooked up and working. Still doing some final wiring, so the back wall of the CPU enclosure is off. I found some neat military-style multi-pin plugs on ebay that came in handy for hooking up the cabling. It looks cool, but I still think they’re a bit flimsy to be real MIL-SPEC. Or, maybe, some military outfit will get in trouble when it rains… 🙂
Oh, yes, the relay board: also found on ebay, an 8-channel relay board with optocouples and everything. This enables the set-up to control a vehicle remotely via SMS, APRS, Iridium, Wifi, or BlueTooth. One of the relays is used to switch off the APRS radio when the unit is in sleep mode. The others can be used for door locks, horn, ignition cut-off, or whatever. I find that there’s a lot of good stuff listed under ‘Arduino’ when you search ebay. This board has of course nothing to do with that specific platform, it’s just in fashion right now…
So, what does it look like when you put this in your survivalist vehicle?
This is the geiger display, showing the ‘counts-per-minute’. The common bar graphs indicate the GPS coverage (satellites used/available), the GSM signal strength, the number of WiFi activity in the area, and the radiation level. Using a button, you can change which screen to display. If any parameters go outside the preset values, the screen will switch automatically and an alarm screen will be shown. These are the most important screens – there are many others.
This display gives us the raw GPS data, speed, disrection and elevation. Nothing is showing for the bearing since the speed is too low to give that reliably (5 km/h minimum)
There’s the WiFi hotspot list, giving the strongest access points seen…
One of my favourites – the APRS station radar view. This shows the bearing and distance to nearby APRS stations. It autoscales, so that you always see stations if there are any. This was probably the most tricky thing to make on the PIC32, requiring some pretty heavy floating point math on the CPU.
The APRS data screen is useful – it cycles through the data from all seen APRS stations. displaying data and the the relative position for each one.
And, finally, the mandatory reference to ‘the Matrix’ (yes, it moves) Useful? You decide!