Have you ever think to play classic video games on the go, but weren't sure where to get a device capable of running old games, or they were just too expensive? Then this instructable is for you. In this instructable, I will show you how you can make your own inexpensive Gameboy using Raspberry Pi.
Building this Portable Games Console is possibly the most fun I've had using a Raspberry Pi. And it's not just the build that's fun; I've now got a fully functioning games console, so I can play all my favorite old arcade games, on-the-go!
I am inspired by Adafruit Gameboy but this gameboy has a lack of sound playing functionality. So, I decided to make an update version of it.
Since it's a Raspberry Pi Linux computer, we can run differerent emulators on it. We happen to be partial to 8-bit NES but there's also MAME support and maybe you could even hack-in support for your favorite old console!
The 3d printed enclosure will house all the components and can be printed in your favorite color.
Step 1: BILL of Materials
The following hardware components are required to make the Gameboy:
1. Raspberry Pi 1 Model B ( Adafruit.com)
2. 2.8 inch PiTFT ( Adafruit.com)
3. Lithium Ion Cylindrical Battery - 3.7v 2200mAh ( Adafruit.com)
4. 5V 2.1A Lithium Battery Power Bank Charger Module ( Ebay.com)
5. Mini Audio Class D amplifier board ( Ebay.com)
6. Mini Metal Speaker ( Ebay.com)
7. SPDT Slide Switch ( Adafruit.com)
8. Tactile buttons 12mmx6mm ( Adafruit.com)
The following tools will be required:
1. Access to a 3D printer (buy a desktop 3D printer only at$145 from gearbest.com)
2. Adjustable Temperature Soldering Station ( gearbest.com)
3. Wire Cutter (gearbest.com)
Step 2: Schematic Diagram
The connection is very easy. The TFT shield has an extra pad hole for accessing the GPIOs of the Raspberry Pi. So connect tactile buttons according to the schematic to the pad holes of the TFT display.
You have to solder the audio amplifier board directly to the audio output port of the Raspberry Pi as there is no GPIO available for accessing the audio out. Connect an 8-ohm mini speaker to the output of the audio amplifier.
We are using Li-ion battery for powering the Raspberry Pi. The Li-ion battery has a nominal output of 3.7V with is not adequate to power up the Pi. So, a boost converter is required to convert the voltage to 5 V. Again Li-ion battery has required a charger circuit to safely charge the battery. To serve both purposes I used a power bank charger circuit which has both charger circuit and a boost converter circuit in a single module. Connect the output of the boost converter circuit to the power pins of the GPIO of Raspberry Pi. Connect the battery to the appropriate pins of the power bank circuit.
Step 3: Connecting Power Circuit
We are using a 3.7 V cylindrical Li-ion battery for powering the Gameboy. But 3.7 V is not enough for powering the Raspberry Pi and a 5 V boost converter is required. For charging the battery a Li-ion battery management circuit is required. We are using a power bank charger circuit which has both functionalities in a single board. So, it is a cost-effective solution without using a separate charger circuit and a boost converter circuit. The connection is also simple.
Connect the positive (+) terminal of the battery to the positive input of the circuit. Connect the negative (-) terminal of the battery to the GND of the circuit. The output of the boost converter should be connected to the GPIO of the Raspberry Pi. Connect 5V out to the GPIO 2 of the Raspberry Pi through a slide switch. Connect the GND or OUT- to the GPIO # 6 to the Raspberry Pi.
Step 4: Making the Button Pad
For making the button pad a perfboard of 38mm X 85mm is required which is not a standard size. So, I cut a standard size perfboard according to the measurement to fit it to the Gameboy box. After getting the board you will be required to solder 10 mini tactile buttons on the board as shown in the figure. The button placement will be according to the hole of the front cover.
For connecting the board to the Raspberry Pi I soldered 10mm long jumper wires to the switchboard.
Step 5: Connecting the Audio Amplifier
Raspberry Pi board has no built-in audio amplifier. So, if you like to play the sound in a speaker an external audio amplifier circuit will be required. For this purpose, I choose a 5 V, 2 W class D audio amplifier board. For accessing the audio output from raspberry pi you need to directly solder the audio amplifier to the audio output port of the raspberry pi. The connection of the audio amplifier board to the raspberry pi is clearly shown in the images. So, make the connection according to the image.
We will connect the speaker in the later part of this instructable.
Step 6: Connecting Button Pad to TFT
In this stage, we will connect the button pad and the power circuit we made in the previous step to the appropriate pin of the TFT display. One terminal of all the buttons are connected to a common point. This common point will be connected to any ground pin of the display. The other terminal of every button will be connected in a separate gpio pin of the display. The schematic shows the details about the connection of every button. Follow the previous schematic to connect the jumper wire from the button pad to appropriate gpio of the TFT display.
After connecting the button pad connect the output of the power circuit to the 5V and GND pin of the GPIO.
Step 7: 3D Printing
The original 3D design for the Gameboy was made by Adafruit. The main case has two parts. One for the top and other for the bottom. I keep the bottom part as it is and made some modification in the top part. I made the modification using a web-based platform Tinkercad. The modified version is uploaded. The buttons were chosen from another design made by Adafruit.
Print the files as:
- PLA @230
- 2 shells
- 10% Infil
- 0.2 layer height
- 90/120 speeds
Step 8: Placing the Raspberry Pi to the Case
In this step, we will place the Raspberry Pi on the 3D printed case. But before that, we want to change the color of the bottom part of the case to give it a different look. Spray painting is a nice way to color any 3D printed part. Spray paint is available in different color and type. I have chosen the blue color. The image shows the bottom part after painting on a black color part.
After changing the color place the raspberry pi to the bottom part of the case in the right location. Use 2 M3 nuts and bolts to tightly fixed the raspberry pi with the case.
Step 9: Placing Display and Battery
Place the display module to the raspberry pi. Then place the battery to the correct location of the bottom case. We will add some glue to the next step to fix the circuit.
Step 10: Gluing Power Bank Circuit
I placed the power bank circuit to the right side of the bottom cover and add some hot glue to tightly fix the circuit to the cover.
Step 11: Gluing Button Pad
This is possibly the most hard part of the project. Place the 3D printed buttons in the appropriate place and then place the button pad on it. Be careful! The button pad should not place very tightly on the button. There should be 1mm gap between buttons and the pad. Otherwise, you may face wrong press on the button.
After placing the pad add enough hot glue to fix the pad in the position. Then place the speaker on the speaker hole of the top case and add some glue to fix it in the position.
Then place the amplifier circuit in a place and fix int the place with glue.
Step 12: The Cool Gameboy
If you follow all the previous steps your Gameboy is almost ready. Keep two parts together and press to connect two parts together.
Now, you need to install games in the Gameboy. Before that, you need to setup CupCade operating system to the raspberry pi. You will be required a SD card. To know the details about installing the CupCade and configuring follow the link: https://learn.adafruit.com/pigrrl-raspberry-pi-gameboy/software.
Your Gameboy can run MAME ROMs as well as NES! Adafruit has documentation on how to install ROMs over on the Cup Cade here.
For NES ROMs, you need to use .nes file format (not .ZIP!) and place them in the following directory path.~/BOOT/fceu/rom of the SD card.
I added some popular NES game in the ZIP file.
Runner Up in the
Game Life Contest