Building a Raspberry Pi Gameboy (Yes, This is Not New)
Every once in a while I get tired of technology; there is simply so much to learn, to do, to think about, to tinker with, to make etc.
My minds overloads and I need to do something else, not necessarily easier, but using very different skills than what I normally do daily (I am a software dev).
Why Do This?
Quite a while ago I was impressed by the Adafruit guys and their “PiGrrl”, a cool looking raspberry pi based Gameboy clone and more: https://learn.adafruit.com/pigrrl-raspberry-pi-gameboy
I’ve always wanted a cool little emulation machine (like Gamepark’s GP2X Wiz or the OpenPandora). But they either sell them at too high a price or you can’t get them anywhere (anymore?). The OpenPandora is over 300 euros. I mean, like c’mmon, I’d rather buy a PSP for that money.
So I stared collecting parts; since I live in Europe I thought I wouldn’t order directly from Adafruit the parts I need because of the import and shipping costs; so for a while I tried to find what I need locally. And I failed…
What is not so cool about Adafruit projects is that they don’t leave much space for really “making it your own” sometimes. Unless you are very good at electronics (I am sooo not) you will need to get very specific parts from their store and assemble them the exact same way. That said, I love Adafruit and all their insane projects!
Luckily, I have started to understand a few things from my messing around with raspberry pi’s, banana pi’s and odroid’s.
Just to get you to read on, here’s what the assembled thingie looks like:
OK, let’s get to it.
Like I said before I didn’t get all the parts I needed so I improvised a bit.
- The 3D printed case; there is no way around this. I used a 3D printing service because I don’t own a printer. The build quality on mine was OK-ish. This object has lots of rounded edges and some fine surfaces that didn’t turn out that great so I manually filed some of the bits. I am looking to get an electric tool for smoothing out the edges. But I find this sort of tools are expensive(Dremel anyone?). Aaanyway…
- The power source – a 3.7V round Lithium Ion battery. I pretty much could have used any battery here but I would have had to modify the case. So I got the Adafruit one via a local reseller: http://www.adafruit.com/product/1781
- Power circuit: now, someone screwed up my order from Adafruit. I needed 2 things: a LiPo charger circuit and a booster circuit (from 3.7V to 5.0V). I only got the booster circuit(and not the one I needed – I got the 1Amp one instead of the 500mA which is probably fine). I still needed a charging circuit. Luckily the reseller had this Sparkfun part: https://www.sparkfun.com/products/11231
- Now, I didn’t read carefully the product description initially on this one (I was on the phone with the guy from the reseller company trying to figure out a replacement for the Adafruit PowerBoost 500). As it turns out, this little guy (the Sparkfun Powercell) combines a charger and a booster. Now, it will charge slower than the one from Adafruit(just 100mA current) but it’s fine.
- A SPDT switch. These are pretty common in electronic parts stores. This is used for turning on or off the power circuit.
- Of course, the Sparkfun part did not fit in the case Adafruit designed… So I clipped a corner of the PCB to make it fit inside. Oh, well, it was a terrible hack but it worked. You can see in this picture that the lower right corner is clipped:
- The SNES gamepad. Humm, I bet I could have gone cheaper on this one with just some of my old controllers … but I ordered the Adafruit one (it’s a cheap plastic clone anyway). It gets gutted for the project, so… no loss: http://www.adafruit.com/product/131
- Fun-tac, putty: OK, I guess this is pretty common in the US but here in Romania I could only find mounting tape(the double sided kind) so I used that. Most of the parts inside are mounted using this. It’s this stuff (pretty common in supermarkets and hardware stores): http://mounting.scotchbrand.com/wps/portal/3M/en_US/ScotchMountingAndFastening/Home/ProductCatalog/?N=7584064+7583086+7584068+3294529207&rt=r3
- The PiTFT 2.8” screen. Luckily, I already had this; I sacrificed my photo frame project(it wasn’t very successful it seems) to extract this part. This is the Adafruit part: http://www.adafruit.com/product/1601. Mine was not assembled, I soldered it with my lame tools and lame soldering skills. They now sell it pre-assembled; damn.
- A Pi 26 pin ribbon cable – this also gets sacrificed for this project (we cut it to shreds). I already had this but it’s easy to find anyway(this is the older cable for raspberry pi A and B not B+/v2).
- A Raspberry Pi model B; it needs to be a model B to properly fit inside the case. The B+ has a different layout, also it does not play as nice with the PiTFT shield (because of the extra USB ports). If I weren’t so lazy I could have probably modified the case to work with the B+/Raspi 2 as well. I already had this, of course. Funny enough, you can’t get this anymore in the usual places in Romania because they say “it’s not manufactured anymore”. Which is false, the Raspberry Pi Foundation still makes all the previous models but I guess it’s cooler to just push the latest models on a somewhat rarefied market anyway.
- The damn screws. I have no idea what a 32-1/2 in screw is in metric measurements. After staring for like 15 minutes at the screws section in a local hardware store I bought some screws that resemble the dimensions but I am not sure they will work. I just snapped the case together, I haven’t yet tried to install any screws. Update: I screwed up on the screws. I only found proper screws to mount the raspberry pi inside but not the entire case. In fact the damn screw mounts inside the case broke off(2 of them at least). Great…
- Power Source: ah, yes, Adafruit forgets to mention you will need a micro-USB charger to actually charge your battery. You have this right?
- A WiFi dongle that works with the Raspberry Pi: optional, if you want network connectivity.
- Ah, and wires. I usually just use the copper wires from a spare cat5 cable. But there are more elegant solutions.
The Power Circuit
Like I said, I did not have the parts from Adafruit I needed so my power circuit is different. At the heart of it is the Sparkfun Powercell board.
My power circuit is this one(I know, I have awesome Paint skillz):
The one important thing to get here is the switch. It needs to pull to ground the EN pin to switch on or off the charger. Therefore you must use the middle pin on the switch and one of the left or right pins. See this: https://learn.sparkfun.com/tutorials/switch-basics/poles-and-throws-open-and-closed
What this achieves is to connect the EN pin either to the GND or leave it disconnected (in the air, infinite electrical resistance).
The Sparkfun charger has an extra feature, if you want to charge faster you can attach a better 5V PSU to the pins labeled “charge”. Also, the output voltage can be selected by soldering some pins(3.3V or 5V). By default it’s 5V which is what we need to power the Raspberry Pi.
The Buttons (a.k.a. the Controls)
I did not have a fancy PCB cutter so I used a basic cutting tool (pliers really) to chop up the PCB. Also, I did not have one of those hobby knives to expose pathways on the PCB, I used a simple cutter tool. It’s not ideal but it worked in the end.
The Adafruit tutorial explains everything better: https://learn.adafruit.com/pigrrl-raspberry-pi-gameboy/buttons
Cutting the Pi Ribbon
Cutting the Pi cable to ribbons (ha ha…)… Again, the Adafruit tutorial explains this very well.
I Hate Soldering
There is a lot of soldering in this project. I hate it.
Follow the circuit diagram carefully: https://learn.adafruit.com/pigrrl-raspberry-pi-gameboy/circuit-diagram
You can either use Adafruit’s Cupcade SD card image or the PiTFT SD card image or a regular Raspbian on which you install Notro’s kernel driver: https://github.com/notro/fbtft/wiki
The choice is yours, but, by far, the Cupcade image is the easiest to use(it comes with the emulator preloaded): https://learn.adafruit.com/cupcade-raspberry-pi-micro-mini-arcade-game-cabinet/hardware-setup
Also, it might be worth trying the RetroPie image: http://blog.petrockblock.com/retropie/
As always, the possibilities are endless.
Thank you Raspberry Pi Foundation + Adafruit.