The illustration below is a reference of the power circuit and the game controller buttons. The position of the components are not exact and not to scale.
We'll be using a large rechargeable battery to power the PiGrrl for a few hours! To keep the battery recharged, use a MicroLipo or MiniLipo board (they're the same basically, just one has a microB jack, the other has a miniB jack)
The good thing about this battery is it's fairly small and dense. But it doesn't have 5V output, it only has aboue 3.7V output. And you really need 5V. So we'll use a PowerBoost500
which can boost the 3.7V up to a nice clean 5V which the Pi likes very much.
When the battery dips too low, a red light on the PowerBoost will light up to warn you its time to recharge!
You can recharge and play at the same time
In order to make the control pad feel just like the original, we'll 'recycle' a SNES controller. By opening it up and cutting out the PCB we can reuse the rubber elastomers and buttons.
The way the keypad works is super-simple. Each elastomer has a piece of conductive material on the back. When it presses down onto the PCB, it shorts two golden pads together. One pad is ground, the other pad is the signal. We'll reuse the CupCade GPIO code so that each pad is one RasPi pin. When that pin is shorted to ground, we'll generate a keypress
Below is a list of Raspberry Pi connections that will be wired to the corresponding buttons. 1-26 are the number of wires in a Pi cable bundle, with 1 being the white (ground) colored wire. We dont connect to the last 6 pins because those are used for the PiTFT display!
- n/c - not connected (3v3)
- connect to output of PowerBoost500 (5v0)
- LEFT BUTTON (SDA)
- n/c (5v0)
- RIGHT BUTTON - (SCL)
- connect to ground of boost (GND)
- DOWN BUTTON (GPIO #4)
- n/c (TXD)
- connect to ground on Dpad (GND)
- n/c (RXD)
- UP BUTTON (GPIO #17)
- START BUTTON (GPIO #18)
- A BUTTON (GPIO #27)
- Select/start ground pad (GND)
- B BUTTON (GPIO #22)
- SELECT BUTTON (GPIO #23)
- n/c (3v3)
- n/c (GPIO #24)
- n/c (MOSI)
- AB BUTTON ground pad (GND)