Retrospective

The arcade machine has been completed for about four months now. I have added a few arcade games and gone through the process of pulling out the control panel and updating the Arduinos and the SD cards a few times. Every time, something went wrong. A wire breaking, an Arduino not taking the sketch, and so on.

So this post is about things I learned and things I would do differently.

Cabinet

For the cabinet assembly, there are a couple of things. The first is that I would use a table saw for my straight cuts (e.g., the back, front, top and bottom panels). Whenever possible, I would also use the table saw for the mitered cuts, like the ones below the control panel. Secondly, I would make the dado cuts a little wider. I used 3/4” MDF and made 3/4” dado cuts. The pieces fit very snugly into the cuts. In fact, they fit so snugly that I had some issues when I was gluing it all together. So I would probably make 7/8” dado cuts for 3/4” MDF.

Electronics

On the electronics side, the biggest issue is the difficulty in updating the images for the button labels. Some things I would do differently there:

  • Drive the Arduino inputs directly with the GPIO on the Pi rather than going through a relay bank. I used the relays because I was not sure whether the Pi could handle the load, but the inputs are high impedance, and I could still power the Arduinos and displays in parallel with the Pi. I love the click of the relays, though!
  • For the connections to the main board, use snap connectors such as Molex instead of connectors with screws or soldering wires (especially solid-core wires) directly to the board
  • Use a low-assert relay for the peripherals
  • Use a GPIO ribbon cable instead of DuPont wires to connect the Pi to the main board. This would also mean soldering a connector to the main board for the ribbon cable, and connecting the peripheral relay to the main board instead of to the Pi (with another snap connector)

I would say that I would choose a more convenient place to store the button label images, but I have yet to find a display that small that can load images from a different source.

Of course, I have no intention of ever building another arcade machine. I’m glad I built this one, and I love it. The effort required to make another one would not be worth it when I already have one. So this post is, as I said, just reflection.

I will make a “Look at the cool thing that’s all finished” post soon (I think) with cool photos and videos of the finished product.

Electronics installation: power button, internal wiring, and control panel

I decided to put the power button on the top of the arcade, on the left side, near the back. The threads on the button I chose do not extend 3/4”, so I had to drill a larger hole part way up from the bottom to accommodate the nut.

The button has a normally open and a normally closed contact, so I used the continuity setting on my multimeter to determine which two contacts I needed. I bent the normally closed contact slightly to mark it.

Then I fed the wire through the nut and the hole to solder the connections. I put some shrink tubing on the wires so could cover up the connections.

Here it is installed

Next I clipped the wires to the proper length, and added the connector to plug in to the control panel.

At this point, I had all the connections needed for the control panel, so I connected them and installed the panel.

The last step for wiring was to get power into the cabinet. This required a hole for the power plug socket. This needed to be a mostly rectangular hole, so I drilled three smaller holes and used the reciprocating saw to cut out the wood between them. It didn’t turn out pretty, but it will work. I’ll put a bit of epoxy putty in the gap at the top.

Nothing that will ultimately be plugged in inside the cabinet uses the grounding pin, so I didn’t connect it. The wire I am using has red and black insulation, so I followed the RV wiring standard instead of the house wiring standard, which is that black is common and red is hot.

There will never be much stress on the outlet box inside the cabinet, so I attached it with adhesive instead of screws.

I also used them on the transformer for the amplifier.

The design required the Raspberry Pi to have constant power while the power for all other components is switched through the relay controlled by the Pi. So I put in a power brick and plugged everything but the Pi into it.

I put it up near the marquee since it also has 5V USB sockets on it. That way I could plug the marquee LEDs directly into it and not reauire a separate USB power adapter.

To make one outlet switched and one constant power, I needed to break the tab connecting the two outlets on the hot side.

Th next step was to wire up the outlet as follows:

  • Red wire coming in from wall power to the top outlet hot side
  • Black wire coming in from wall power to either outlet common side (I chose the top)
  • One wire from the relay to bottom outlet hot side
  • The other wire from the relay to the top outlet hot side

This wiring will make the top outlet constant power and the bottom outlet switched. I originally just wrapped the wires arounf the screws and rightened them, but since these are stranded wires, they spread out under the screw and it didn’t look like a good connection. So I tinned the ends with solder, and it went much better. Here is is all wired up:

I plugged everything in and tested it. The first time I loaded a game, the labels didn’t light up. I pulled the control panel out and saw that the positive wire for feeding power into the relay bank circuitry was disconnected. I reconnected it and everything worked.

So now all the components are installed and functional. There are a few final cosmetic touches and it will be done!

Electronics Installation: TV, lights, speakers and amp

The first bit of electronics I decided to install was the TV. This is the bulkiest item, and I didnt want to worry about any wires getting in the way while I installed it. The installation went pretty smoothly. I drilled a couple of holes in each end of the mounting board and slid the TV into place. Then I drove some screws into the holes.

Next was the lights for the marquee. The LED roll I bought was long enough to go across the light board three times. The light board is 8” tall, so to keep the light distribution as even as possible, I made rows at 2”, 4”, and 6”. There is enough of a gap between the light board and the speaker board that I could run the cord for the lights under the light board instead of having to drill a hole.

Since I had cut the strips apart to install them, I had to solder wires to reconnect them.

I plugged in the lights to be sure the connections were good.

Then I slid the marquee into place to see how it looked.

In this image, you can still tell that there are individual light points behind the marquee, but that is an instance of the camera pulling out detail that can’t be seen in person. Also, there is light leaking from the bottom because the speaker board is not in place.

Speaking of which, now that the marquee lights were installed, I could install the speakers. First, I used the speakers as templates to mark and drill pilot holes for the screws, and then I installed the speakers and grills.

The most challenging part of installing the speaker board was getting the marquee into the slot. The version of marquee that I ordered from GameOnGrafix was a printed piece in between two thin sheets of plexiglass. But the notches I cut were not wide enough for both pieces of plexiglass, so I decided to forego the one behind the marquee. As a consequence, the printed material kept sliding up instead of going into the groove. I used several pieces of scotch tape to keep the printed material up against the plexiglass, making sure that the tape would not extend above the groove.

Another challenge was that the T-mold on the profiles overhangs the edge slightly, so the speaker board kept getting caught on it. I used an artist knife to trim the sections of T-mold that were in the way.

At one point I dropped the speaker board and it snapped off the bracket for the amplifier. I used hot glue to fix it and it seems to be holding. If the glue fails, I’ll have another bracket printed.

To keep the amplifier from sliding out, I bought some rubber adhesive feet, similar to the ones that I removed from the amplifier so I could slide it into the bracket. I slid the amp into the bracket and then stuck on the feet.

Here is the amp with everything plugged in:

And here is how the cabinet is looking so far:

Speaker Board

The board that holds the speakers actually serves a few purposes – holding the speakers of course, but also supporting the bottom of the marquee and giving the top part of the cabinet a finished look.

Because this piece will be attached after the cabinet is painted and the marquee backlights are installed, it will be screwed in rather than glued in. I decided to make it removable by using machine screw inserts.

First I held the piece in place with some duct tape and drilled pilot holes through the speaker board and into the mounting pieces so that the alignment would be correct.

I had planned to do two bolts on each side, but the profile pieces blocked my drill. Turns out that one bolt per side holds it pretty solidly. I used a countersink bit so the bolts could be flush.

Next I had to make sure the marquee would fit, and cut a notch in the top of the speaker board to support the bottom of the marquee. Unfortunately when I had assembled the cabinet, the left side of the roof slipped back a little and the notches in the roof and profile didn’t line up.

I used a utility knife to cut the notch in the roof a little wider in the front so at least the front of that groove would line up with the one in the profile. I had a little adjustment to do on the right side as well.

I also used a keyhole saw to extend the notches on the profile all the way down, so there would be room to insert the marquee and then slide it into the notch in the roof.

I held up one of the pieces of plexiglass to see how much to cut off. I didn’t need to be completely precise since there is a bit of wiggle room in the notches.

I trimmed it by scoring and snapping the edge off with a pair of pliers.

Then I used the trimmed plexiglass as a template to trim the marquee. I centered it so I could trim the same amount off each side.

The last step for the marquee was to cut a groove in the speaker board. With the speaker board installed, I marked where the side grooves line up. I also traced the inside top of the speaker board so I could be sure that the speaker holes would not interfere with the light board or the mounting boards on the sides.

Since there was already a pretty deep groove for the T-mold on the front of the speaker board, I had to make sure the notch for the marquee wasn’t too deep. I once again used the angle base for the router to get the 10-degree angle I needed.

I marked out the centers for the speaker holes and drilled them with a 4” hole saw.

The groove lines up pretty well with the grooves in the profile.

Here are some photos showing the fit of the marquee and the speaker holes.

Control Panel Support

Since the cabinet turned out to be slightly narrower than I had planned, I trimmed out the left profile so the control panel would fit. I also carved some notches in the front MDF piece to accommodate the GPIO connections.

The angle aluminum I bought to support the bottom of the ci trol panel was 36” long. I bought that size because it cost less than having them cut it to a 30” piece. And now that the cabinet is slightly narrower than I had planned, I would have had to trim it anyway.

I put the piece of angle aluminum on the cabinet and marked where I wanted screw holes. I drilled small pilot holes and used those as guides to make pilot holes in the MDF. Then I drilled out the holes to the proper size and used a countersink bit on the aluminum. Then I screwed the aluminum in place.

The bottom and both sides of the control panel are now really well-supported. I decided to use the piece of aluminum that I had cut off of the long piece to add some support to the top. Since the circuit board goes all the way to the top of the control panel, I positioned the aluminum between two mounting screws so it could fit between the circuit board and the control panel base. Since the narrow piece of MDF behind the control panel was now being used for support, I reinforced it with some shelf brackets.

Cabinet Assembly

The final home of the arcade machine will be my basement, so I decided to assemble it there instead of having to get the fully assembled cabinet down the stairs. I set one profile on its side and then started by connecting the floor to the back and the front pieces. I put glue in the dado cuts and also on some 1×1 boards along the seam, which I held in place with nails.

Then I put that assembly into the dado cuts in the profile (with some glue) and added the reinforcing 1x1s. I repeated the process for all the cross pieces, and then added the second profile.

I had forgotten that the 1x1s in the back should go top-to-bottom so that they would also create a ridge to support the door. So at the bottom I just did my best to line it up with the one I had cut.

Once I had both profiles on, I clamped it and left it to dry. I didn’t put any reinforcing 1x1s on the second profile because that’s much easier to do when you’re working with gravity instead of against it.

While I was waiting for the glue to dry, I added feet to the bottom, using furniture levelers attached to blocks of 2×4.

Once the glue had set, I flipped the cabinet to the other side and added the 1x1s. Once that glue had set, I stood the cabinet upright.

Because the dado cuts were such a tight fit and so close to the edge (I probably should have used at least a 13/16” bit instead of 3/4”), there was some cosmetic damage that occurred during assembly. I will need to repair these and also add filler to the seams on the front and top back before the cabinet can be painted.

Another issue is that when I measured and cut the cross pieces for the cabinet, I failed to account for the width of my saw blade. So now the control panel doesn’t quite fit.

To remedy this, I plan to cut away some of the wood under the cut for the angle aluminum that will hold down the panel.

I tried to see how well the marquee would fit, and that’s when I realized that I should have cut these slots all the way to the edge of the board.

Now that the cabinet is assembled, I don’t think the router will fit there, so I’ll likely extend those cuts with the reciprocating saw.

Final trimming and dry fit

I had all of the pieces for the cabinet cut, but I needed to round off the top back corner of the roof piece, and the piece right above the front piece needed to be trimmed a bit.

I need the curve on the roof piece to be a 100-degree curve and not 90, so instead of using a router, I marked where I wanted the curve and used a file and sand paper.

I filed down the two ends first and made sure they fit.

Once I had the entire edge filed down, I went over it with some 120-grit sandpaper.

Once this was done, I trimmed up the piece above the front with my circular saw. Then I put all the pieces together to check the fit.

Some of the joints will need some filler, but it all fits pretty well. I added the control panel and TV just to see how it would look.

In the previous image, you can see that the wires connected to the GPIO on the Raspberry Pi are right up against the wood. I actually need the control panel to slide down a little further, so I will chisel out a notch for the GPIO connections after the cabinet is assembled.

The last step before beginning assembly is to cut a T-mold slot in the roof piece, as well as a slot for the top of the marquee. The marquee slot has to line up with the slots on the profiles, so I measured carefully and found that they were off from each other by 1/8”. No big deal; I just need to cut a slightly diagonal slot in the roof so it all lines up. Being off by 1/8” over 30” will not be noticeable.

The other issue with the slot in the roof is that it has to be 10 degrees off of perpendicular so that it will line up properly. To achieve this, I bought an adjustable angle base for my router. It has angle marks every 7.5 degrees, so it set it to about 1/3 of the way between 7.5 and 15, and did a test cut.

It was right on.

I also used this test cut to measure the fence distance I would need for the angle base. The notch lines up perfectly on one side, but is slightly off on the other.

I might just chisel a little out of the notch on the profile so that the marquee can easily slide into the roof notch.

Next step: assembly!!!

Cutting the hole for the amplifier bracket

The amplifier will be in the center of the front panel, a few inches below the control panel. I measured and marked the hole, and double-checked that the fit was good.

I used a drill and reciprocating saw to cut out the rectangle. I cut it a little small because the thin blade on the reciprocating saw doesn’t always cut straight, and I wanted room to clean it up. Once the main hole was cut, I slowly cut away bit by bit until the bracket fit.

Here it is with the amplifier in place

I will have to use some filler on the left side and maybe a little along the top, but once it’s all painted it should look pretty good.

More miter cuts, and I was wrong about how I got it wrong

In the previous post, I said that the front piece was 2” too long, and it was because I forgot to subtract the 2” from the tape measure. But when I went to cut off the excess today, I saw that it was actually 1-3/8” too long. Weird. Anyway, I measured, tacked down the 1×2, and cut off the excess.

Next it was time for another miter cut. To match up to the front piece, I can use the same cut that I already made, and flip it around so it matches up. So I need the angle of the next corner.

This one turned out to be pretty much exactly 45 degrees.

The piece that the front was cut off of already has the angle I need to match up to the front, as I already mentioned, but the edge did get trimmed a little when I made the cut because I didn’t let the saw blade stop spinning before lifting it up after making the cut.

Luckily, most of that will be in the dado cut, and I can just fill in the rest. I set my saw up for a 22.5-degree angle, and measured the length I needed.

I calculated the distance I needed for the fence, and tacked it down. Since I was cutting a small section, I put the 1×2 on supports at the ends so the piece would not drop.

But the piece was too long by 1-3/8”! I was trying to figure out what had gone wrong (twice), and I realized that when I put the fence down, I measured to the first edge, but then used the other edge as the fence. The 1×2 is 1-1/2” wide, which mostly explains it, but I still haven’t figured out why the pieces were 1-3/8” too long instead of 1-1/2”. I’m sure it has something to do with the blade making a 1/8″-wide cut, but it doesn’t make sense to me.

I trimmed the newly cut piece. It was challenging to keep the saw level because of how little I was trimming off. I had to do a second pass for half of it, as you can see in the following photos. One end was fitting, but the other was still a bit too big.

With this piece finally fitting, I put the front in to see how well they match up. And they matched up to a much lesser degree than I had hoped. My best guess for why this is the case that maybe I’m not holding the circular saw as steady as I think I am, or there is some imperceptible blade wobble, or both. I will definitely need to fill this joint with something.

Chiseling finished, front and bottom cut out

The squaring up of the dado cuts with a chisel is done.

The top, bottom, back and front pieces will be 30.5” wide, since the control panel is 30”, and the dado cuts are .25” on each side. I ripped a 30.5” wide piece of MDF from a 4’x8’ sheet. Since I don’t have a table saw, I used the same 1×2 that I have been using as a fence for the router, so that I could get a straight cut with a circular saw. First, I used my scrap piece to measure how far to put the fence from the desired cut.

I made sure to clamp down the MDF so it would be secure to cut and so that no pieces would put extra stress as the cut was made.

Once I had the 30.5” wide strip, I cut a piece for the bottom. I made it 1/2” longer front-to-back than the distance between the front and back pieces, because I plan to also make dado cuts in the front and back to really secure the bottom piece. This is important because the feet will be attached to the bottom piece, so it will bear the weight of the entire cabinet.

I tested to see it the bottom piece fit into the dado cut, and it looks like the MDF that I cut the bottom piece from is slightly bowed. You can see that when it’s lined up on one side, it is off by a bit on the other side. I’m not sure if I’ll try to figure out how to make that fit or just cut a new piece.

Next, I cut the front piece. The top end of the front piece needed a miter cut, since the angle of the next piece is not 90. First, I measured the angle.

Since the angle is 47.5, the angle of the miter cut needs to be half that, or 23.75. Although I probably don’t need precision down to a quarter of a degree.

My circular saw has angle markers for miter cuts every five degrees. So I set it for what looked close to the correct angle and then did a test cut on my scrap piece.

When I measured the actual angle of the cut, it wasn’t even close to correct.

So I set the protractor to the correct angle and used it to eyeball the angle of the saw as I readjusted it. When I measured the resulting cut, it was much better.

Interstingly, although the cut is almost exactly 23.75, the marker on the saw seems to indicate that it’s more like 28.

I cut the front piece, and was very pleased with how well the miter cut fit.

The only issue with the front piece is that when I was measuring its height on the profile, I used a tape measure. Since it’s hard to be sure exaclty where zero is on a tape measure, I used the two-inch mark as the start of my measurement. Then I forgot to subtract the 2” from my measurement. So now I need to cut 2” off of the bottom of the front piece.