Handheld RetroPi: Build Your Own Portable Gaming Console

by Kiteretsu in Circuits > Raspberry Pi

5480 Views, 119 Favorites, 0 Comments

Handheld RetroPi: Build Your Own Portable Gaming Console

1721029238050.jpg
1721109174615.gif
1721109174697.gif
1721109174713.gif
1721109174732.gif
DSC01669.JPG

Welcome to the world of retro gaming! Have you ever wanted to relive the classic games from your childhood in a portable format? In this Instructable, I will guide you through the exciting journey of building your own handheld retro gaming console. We will use a Raspberry Pi Zero 2W, a 3.5" TFT display, and a combination of other readily available components to create a compact, portable gaming device that will bring back all those nostalgic memories.

This project is perfect for both beginners and experienced hobbyists. It combines elements of software setup, hardware integration, and a bit of creativity in crafting the console's body. By the end of this guide, you will not only have a functional gaming console but also a deeper understanding of how different components work together.

What You'll Learn:

  • How to set up and configure RetroPie OS on a Raspberry Pi Zero 2W
  • Connecting and configuring a 3.5" TFT display using GPIO pins
  • Integrating tactile switches and push buttons for game controls
  • Using a joystick module as a D-pad with analog-to-digital conversion
  • Crafting a sturdy console body using everyday materials

Why This Project?

As my first Raspberry Pi project, this handheld gaming console presented several challenges that required innovative solutions. For instance, I faced issues with button shortages and had to devise a way to use a joystick module for controls. Additionally, the lack of an inbuilt power supply led me to use a power bank, adding to the portability of the device. Sharing these experiences will help you navigate similar challenges and inspire you to experiment and innovate.

By building this console, you'll not only have a unique gaming device but also gain valuable skills in electronics, programming, and DIY crafting. Whether you want to play retro games on the go or just enjoy the satisfaction of building your own device, this project is a fun and rewarding experience.

Let's get started on creating your very own Handheld RetroPi!

Supplies

Electronics:

  • Raspberry Pi Zero 2W
  • 3.5" TFT display
  • Tactile switches
  • Push buttons
  • Joystick module
  • ESP32C3 microcontroller
  • Jumper Wires

Materials for Crafting:

  • Cardboard
  • Old newspapers
  • Glue
  • Water (for creating glue mixture)

Power and Connectivity:

  • Power bank (for powering the console)
  • USB cables (for connecting peripherals)
  • Bluetooth speaker or headphones (for audio output)

Software:

  • RetroPie OS (downloaded from RetroPie website)

Tools:

  • Soldering iron
  • Breadboard (for prototyping)
  • Utility knife (for cutting cardboard)
  • Scissors

Setting Up the RetroPie OS

1721109174688.gif

To get started, I used Raspberry Pi Imager to install RetroPie on the microSD card. Here's how I did it:

  1. Download and Install Raspberry Pi Imager: First, I downloaded Raspberry Pi Imager from the official Raspberry Pi website and installed it on my computer.
  2. Select RetroPie OS: I inserted the microSD card into my computer and launched Raspberry Pi Imager. I selected "CHOOSE OS," navigated to the "Emulation and game OS" section, and chose "RetroPie." I selected the version compatible with Raspberry Pi Zero 2W.
  3. Write the Image: After selecting RetroPie, I chose the microSD card as the storage device and clicked "WRITE." The tool then downloaded and installed RetroPie on the microSD card.

Once the installation was complete, I inserted the microSD card into the Raspberry Pi Zero 2W and powered it on. RetroPie booted up, and I was ready to configure the system for my handheld gaming console.

Setting Up the 3.5" TFT LCD

GIF-240716_090259.gif
FIG6AUCLYMZY2XA.jpg

To set up the 3.5" TFT LCD with RetroPie, I needed to install the necessary driver via the terminal. Here’s how I did it:

First, I accessed the terminal by pressing F4 within RetroPie. Once in the terminal, I downloaded the LCD driver from the goodtft GitHub repository by typing git clone https://github.com/goodtft/LCD-show.git and pressing enter. After the download was complete, I navigated into the downloaded directory using cd LCD-show/. Inside this directory, I found several installation scripts for different models of TFT displays. To install the driver for my specific TFT display model, I ran the corresponding script. For my LCD35 model, I typed sudo ./LCD35-show and pressed enter.

I followed the on-screen prompts during the installation process, which took a few minutes. After the installation was complete, I was prompted to reboot my Raspberry Pi Zero 2W. Upon rebooting, RetroPie automatically detected and configured the TFT display. I tested the display by navigating through the RetroPie interface using my connected peripherals. This setup enabled my 3.5" TFT display to work seamlessly with RetroPie on my Raspberry Pi Zero 2W, providing a great retro gaming experience.

Setting Up the Controls

1721029239261.jpg

Initially, I used tactile switches for testing the controls. For the final build, I switched to push buttons for better convenience and durability. However, I faced a shortage of push buttons for the D-pad. Fortunately, I found a joystick module in my components box and decided to use it. Since the Raspberry Pi doesn’t support analog data via GPIO pins, I used an ESP32C3 microcontroller to act as an analog-to-digital converter.

First, I calibrated the joystick module to ensure accurate input. I connected the joystick module to the ESP32C3 microcontroller and then interfaced the microcontroller with the Raspberry Pi. This setup allowed the joystick to function as a D-pad, providing precise control for my games.

Testing the D-pad Module

1721109174678.gif

After setting up the joystick module, I needed to test its functionality before integrating it into the final build. I connected the joystick module and the ESP32C3 microcontroller to the Raspberry Pi. Then, I launched a game in RetroPie to test the directional inputs and ensure that each movement corresponded correctly to the game controls. I made any necessary adjustments to the calibration until the joystick module worked seamlessly as a D-pad.

Testing the Complete Circuit on a Breadboard

GIF-240716_085925.gif
1721029238475.jpg

Before assembling the components into the final enclosure, I tested the entire circuit on a breadboard. I connected the Raspberry Pi, 3.5" TFT LCD, push buttons, joystick module, and ESP32C3 microcontroller on the breadboard. After powering on the Raspberry Pi, I verified that all components functioned correctly together. I ensured that the display showed the RetroPie interface, the buttons responded accurately, and the joystick module worked as a D-pad. This step was crucial to identify and resolve any issues before final assembly.

Building the Enclosure

1721029238058.jpg
1721103757794.gif
DSC01666.JPG

To create the enclosure for my handheld console, I used cardboard reinforced with glue and old newspapers. First, I cut the cardboard to the desired shape and size to fit all the components. I mixed glue and water to create a paste, then applied it to the cardboard and covered it with layers of newspaper. This technique strengthened the cardboard, making it durable enough to protect the components. Once the glue had dried and the cardboard was sturdy, I assembled the circuit directly onto the cardboard. I ensured that all components, including the Raspberry Pi, LCD, buttons, and joystick, were securely attached. This approach provided a simple yet effective enclosure for my handheld console.

Final Product

DSC01616.JPG
1721109174659.gif
1721109174641.gif
GIF-240716_075049.gif
1721109174624.gif
1721109174740.gif
1721109174723.gif
1721109174634.gif
1721029238040.jpg

With the enclosure complete, I assembled the final product by securing all components in place. While integrating an inbuilt lithium-ion battery would have been ideal, I initially used a power bank to power the console. This setup was functional and convenient, allowing me to enjoy my games without worrying about an internal power source.

To test the final product, I connected the power bank to the Raspberry Pi via a USB cable and powered on the console. The power bank had enough capacity to provide sufficient runtime for my gaming sessions. I played a variety of NES and GBA games, including "Pokemon Emerald," "Dragon Ball Z," "Super Mario," "Contra," "Zippy Race," and "Donkey Kong." The console performed well, and the gameplay was smooth and responsive.

Although the console did not include built-in speakers, it was able to connect to Bluetooth speakers and earphones for audio output. This added to the portability and convenience of the handheld console, making it a truly versatile device for retro gaming on the go. The final product was a satisfying culmination of my efforts, combining various components into a functional and enjoyable handheld gaming console.