Close

Prototype PCB

A project log for Gamegirl: the retro console done right

The most portable way to play LÖVE, PICO-8, Scratch or your favorite emulated games. Powered by RetroArch!

David PerrenoudDavid Perrenoud 03/29/2016 at 19:025 Comments

After having successfully tested the display, the multiplexed buttons and the buzzer on a breadboard, we made a prototype PCB. This will allow [Jean-André] to work on the software while I work on the next PCB.

As our display uses most of the inputs, we used a trick to connect the 12 buttons using only 4 GPIOs. Usually, Charlieplexing uses N GPIOs with N/2 inputs and N/2 outputs to read

buttons. By adding diodes and using the N GPIOs as both outputs and inputs, we can read

buttons!

The PWM audio output is smoothed out by an RC filter and the left and right channels are mixed to mono in ALSA. We use a simple NMOS transistor to drive the buzzer but we will replace that with a 1.5W-3W amplifier and a proper speaker in the next version.

-David

Discussions

arnaud.durand wrote 07/07/2016 at 01:59 point

I like the keypad scanning technique. Did you write a driver for the input yet? This might be a good basis: 

https://github.com/recalbox/mk_arcade_joystick_rpi/blob/hotkeybtn/mk_arcade_joystick_rpi.c

  Are you sure? yes | no

David Perrenoud wrote 07/10/2016 at 15:06 point

Yes, [Jean-André] has a driver to read the buttons and make a gamepad for RetroArch using udev. We need to add some diodes to allow pressing multiple buttons but it's working fine otherwise.

  Are you sure? yes | no

Solenoid wrote 05/13/2016 at 06:26 point

The traces to the buttons look awfully thin IMO, since there's going to be a lot of mechanical stresses on this part of the PCB it might break some of the connections and make the buttons unusable, maybe thicker connections can prevent this foreseeable issue.

The LEGO NXT programmable brick had this very problem and they did a free replacement program because of it. Maybe look into how to mitigate rapid circuit degradations because of mechanical stresses. For example order the PCB with a thick substrate, somehow make parts of the PCB slightly compliant, prevent the button from pressing on the PCB...

Good job guys, I'm looking forward for my Gamegirl ^^

  Are you sure? yes | no

David Perrenoud wrote 05/13/2016 at 08:55 point

Thanks for the input! I usually don't do traces under 0.25 mm (~10 mil). Is that still too thin?

For the v0.2 prototype we plan on using rubber and metal domes. Would a 0.6 mm PCB be sufficient? I haven't found any advice about PCB thickness and the 1.6 mm standard seems to come from the time when boards were made with Bakelite plywood.

  Are you sure? yes | no

Solenoid wrote 05/15/2016 at 19:36 point

I don't have any other experience in mechanical stresses on PCBs other than my broken NXT brick. Probably going for a thicker PCB would give the Gamegirl a longer lifetime, then again without any numbers to back this up I'm only speculating... 0.6mm might be enough.

  Are you sure? yes | no