GRIZZLY - Handheld Game Console
by lean8086 in Circuits > Raspberry Pi
245 Views, 6 Favorites, 0 Comments
GRIZZLY - Handheld Game Console







I designed this handheld game console to look the way I wish consoles did. I also wrote the step-by-step guide to make it straightforward for anyone to build. This project is completely free to build under the Creative Commons BY-NC-SA 4.0 license.
If you're interested, read the details about all the decisions and the process of designing the console:
https://leandrolinares.com/blog/diy-handheld-game-console/
Also, don't miss the youtube video:
I wanted the person building this console to be able to play games as early as the first step. I structured this project in a way that you'll have a functional game console from day one and add improvements in layers whenever you can afford to work on it.
For example, I started playing games with just the Raspberry Pi connected to my PC monitor, an old keyboard, and a phone charger to power it. Later, I added a portable screen, then buttons, then a battery. And I was always able to play games regardless of which step of the process I was in.
Read more about what inspired this project and its philosophy.
Supplies




Before purchasing any components, read the entire guide and watch the video. This will give you an idea of what the process looks like and what your alternatives are.
These are the materials for the exact same final version I built. All of the listed items contain affiliate links. This means that without any cost to you, I might receive a small commision for sales:
- Raspberry Pi 4 Model B, 4GB RAM. Read some important considerations here.
- 5-inches 800x480 IPS Screen with integrated speaker. Read some important considerations here.
- PiSugar 2 Pro. Read some important considerations here.
- Soft Tactile 8mm Buttons (10 units). Read some important considerations here.
- 90-Degree Angled Tactile Push Buttons (4 units).
- SD Card. Any SD card on this compatibility list is suitable.
- Breadboard to prototype a gamepad with the push buttons. It will also be useful for any future electronic project you might have.
- Male-to-Female Jumper Wires. Sometimes you can get them bundled with the breadboard.
- 40-Pins (2x20) Female GPIO Header (1 unit) to convert the PiSugar into a top-mounted HAT. Look for solderless headers if you want to minimize the amount of soldering.
- M2.5 Screws and M2.5 Male-to-Female Standoff Spacers. Read some important considerations here.
- Metal Heatsink or any type of cooling for Raspberry Pi that can co-exist with a HAT.
Install RetroPie on a Raspberry Pi



- Identify which model of Raspberry Pi you have.
- Connect a compatible SD card to your computer.
- Download and install the official Raspberry Pi Imager.
- On the Raspberry Pi Imager, click Choose device and select your Raspberry Pi model.
- Click Choose OS. Select "Emulation and game OS", then "RetroPie".
- Choose the version of RetroPie that corresponds to your specific board.
- Click Choose storage and select your SD card on the list to install RetroPie into it.
- Click Next and install RetroPie on the SD card.
- Now you can install games.
I wrote an in-depth guide about installing games in RetroPie. You can always check RetroPie's official documentation for more details.
If you're interested, read all the decisions I've made about this step.
Connect It to a TV/monitor and Keyboard.


- Using HDMI, connect the board to any TV, computer monitor, or the display I specified.
- Connect a keyboard.
- Connect the Raspberry Pi to a power supply.
- Turn on the Raspberry Pi.
- The first time you enter RetroPie it will ask you to set up all your buttons. Use your keyboard to assign the keys you want. Important: Take note of which keys you're assigning to which functionality. You'll need them later.
For reference, see the keys I set up here.
You'll also need to use all those keys to navigate RetroPie's interface. For example, use the D-PAD keys to move through the menus and BUTTON A / EAST to confirm.
If you're interested, read all the decisions I've made about this step.
Add Your Own Custom Buttons.


- Add all the tactile buttons to the breadboard and wire one of the legs to the ground row (-) of the board.
- Connect the other leg of the buttons (+) to a pin on the Rasbperry Pi using jumper wires. You can connect any button to any available pin but it's important to take note of which buttons you connect to which pins.
- Check out the pins I used here
- Connect to Wi-Fi following the official docs:
- RetroPie → WIFI → Connect to WiFi network
- Access the Raspberry Pi command line either locally by pressing F4 while in RetroPie, or remotely by enabling SSH, assigning a static IP, and running on your computer: ($ ssh pi@192.168.X.X)
- Install the Adafruit-Retrogame utility, which enables you to map the GPIO pins to work as a virtual keyboard. From the Raspberry Pi's command line, download Adafruit's script file retrogame.sh and execute it: ($ curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh > retrogame.sh $ sudo bash retrogame.sh) You will be prompted to select a configuration. Choose any option and follow the steps to reboot.
- After rebooting, access the command line again and edit the retrogame.cfg file to map the GPIO pins to the keys you configured in step 2: ($ sudo nano /boot/retrogame.cfg) There is an example of my retrogame.cfg file here. For a list of all the possible key IDs take a look at Retrogame's keyTable.h file.
- Save the changes and exit Nano. You can do both at the same time by pressing ctrl + X.
- Reboot the console and check that everything works as expected. ($ sudo reboot) You should be able to navigate the interface, start games, and play them using your custom gamepad.
If you're interested, read all the decisions I've made about this step.
Install the UPS and Battery.


Before anything, check that the PiSugar is working properly by connecting it to the Raspberry Pi according to their instructions. At this point, you'll already have a wireless game console!
The next steps involve converting the PiSugar from Hardware Under Board (HUB) to Hardware Attached on Top (HAT) so that it fits in the case. I recommend only attempting this if you are experienced with electronics.
Warning: Modifying the PiSugar will definitely void its warranty. I am not responsible for any damage you may cause to your components. Proceed only if you are willing to take full responsibility for modifying your board. Otherwise, consider researching other UPS and batteries.
- Carefully remove the pogo pins (the golden cylindrical connectors) from the PiSugar. Pull out the side that is not spring-loaded (the rigid side) straight out. You may need to twist the pin slightly to help it come out.
- Solder a 2x20-pins female GPIO header to the PiSugar. Be sure to solder at least the pins where the pogo pins were so the PiSugar can function properly. Consider using flux to make the soldering process easier.
- Solder wires to the GPIO pins you will use for the buttons (the ones you set up in step 3).
- Connect the battery to the PiSugar and attach the PiSugar to the Raspberry Pi for a test.
- Note: Don't worry if the wires seem pressed against the Raspberry Pi. This won't cause any damage to them.
- Turn on the Rasbperry Pi and disconnect it from power to make sure it works wirelessly.
If you're interested, read all the decisions I've made about this step.
Wire and Assemble.



- Read the license and download the STL files. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. Credit must be given to the creator. Only noncommercial uses of the work are permitted. Adaptations must be shared under the same terms. Read more.
- Print the pcb-prototype and 6 battery-bracket in PETG with 0.15mm layers and 15% infill. Print the brackets to their side and with supports. If you need to print the pcb at 45 degrees, as in the picture, make sure to set the fill angle to 0 in the slicer.
- Attach the 6 battery brackets to the main piece with super glue.
- Insert the push buttons into the frame. Put 4 90-degree buttons on the shoulders and triggers, and 10 normal buttons on the rest. The buttons should stay tight-ish in place. If that's not the case, reprint the piece playing around with the layers thickness on the slicer.
- Solder one leg (-) of each button in series, connecting all of them together.
- Solder the opposite leg (+) of each button to a GPIO pin on the PiSugar header. Make sure you connect them to the same pins you chose on step 3.
- Attach the Raspberry Pi to the PCB-prototype using two screws on the pins side and two 10mm spacers on the other side.
- Connect the PiSugar to the Raspberry Pi and secure it to the spacers using 2 screws. Be sure to connect the battery to the PiSugar first, as there will very little space for the battery wires to fit. Note: Don't worry if the wires seem pressed against the Raspberry Pi. This won't cause any damage to them.
- Connect the Raspberry Pi to the display. Any screen will need to get power from USB and video/audio through HDMI. I'm using PCB-based connectors that came with the display. The second best option are ribbon cables, also found as band or flat cables.
If you're interested, read all the decisions I've made about this step.
Build an Enclosure.





- Read the license and download the STL files. This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. Credit must be given to the creator. Only noncommercial uses of the work are permitted. Adaptations must be shared under the same terms. Read more.
- Print the case-front and case-back in PLA. What worked best for me for strength and speed was printing them at 45 degrees, with custom support enforcers where needed (ensure nothing hangs unsupported in mid-air), and organic supports.
- Print all the buttons together in PLA, ensuring layer height is 0.10mm or less. I recommend printing the d-pad on its side with some supports.
- Insert the buttons into the front case.
- Place the assembled components inside.
- Attach the back case and secure everything with M2.5 screws. Ideally, use 16mm long (⅝ in) screws at the top and 20mm (¾ in) at the bottom.
- Done! Enjoy your own Rasbperry Pi handheld game console.
If you're interested, read all the decisions I've made about this step.