Close
0%
0%

Herman Entertainment System

Raspi Zero handheld gaming system for programming and hardware education and fun.

Similar projects worth following
The Herman Entertainment System (HES) is a custom handheld gaming setup I built around the Raspberry Pi Zero 2W when traditional emulation solutions like RetroPie had compatibility issues with the Adafruit TFT Bonnet display. Rather than fight the hardware conflicts, I created an entirely new Pi OS Lite Python-based ecosystem that my kids have been using to code and play their own games.

The Herman Entertainment System (HES) is a custom handheld gaming setup built around the Raspberry Pi Zero 2W after traditional emulation solutions like RetroPie proved incompatible with the Adafruit TFT Bonnet display. 

Ultimately this proved to be a useful tool for introducing software and hardware configuration to novices. The setup has been fun for kids, and with the capabilities of the Zero 2W there is plenty of room for growth as well. We have a couple of these in the house now and they are working on a Battleship clone they can play over wifi together, as well as using it as a controller for a wifi enabled robot.

Why Herman? I don't know, that's what the kids chose, apparently he needs entertaining.

Hardware

  • Raspberry Pi Zero 2W (compute, Wi-Fi, Bluetooth, GPIO)
  • Adafruit 1.3″ TFT Bonnet (240×240 ST7789 display + joystick/buttons)
  • Waveshare UPS HAT (C) for battery management
  • Custom 3D-printed case (files @ Printables)

Software

  • Python-based game launcher with automatic game detection
  • Hardware abstraction layer for consistent API across titles
  • Professional menu & state-management system
  • SSH-enabled for remote development & deployment

Key Features

  • Zero-configuration game deployment
  • Standardized game API for easy hardware access
  • AI-friendly development – integrated Perplexity AI workspace for auto-generating compatible games
  • Beginner-accessible – ideal platform for learning electronics and Python programming

Pain Points Solved

  1. RetroPie display & GPIO conflicts → custom Python system
  2. Pin multiplexing issues → hardware abstraction & debouncing
  3. Complex game installation → automatic menu integration
  4. Steep learning curve → documented API & AI assistance

What Makes It Special

Unlike many Pi-based handhelds focused solely on emulation, the HES is open and adaptable, and runs on Pi OS Lite making it ready for any project. It empowers creators to build original games or educational tools, making it a versatile project for maker spaces, classrooms, and hobbyists.

Complete project details here.

oregon_trail.py

Oregon Trail clone for testing.

x-python-script - 29.71 kB - 09/25/2025 at 03:05

Download

  • 1 × Raspberry Pi Zero 2W with Headers We bought one of these from Adafruit and one from Amazon. Both worked, but I will say the one from Amazon had a bit more pin sticking out the bottom that made better contact with the pogo pins on the battery.
  • 1 × Adafruit 1.3″ Color TFT Bonnet for Raspberry Pi – 240×240 TFT + Joystick Add-on This is obviously from Adafruit, we were unaware of the display issue it has with the Zero 2W compared to the standard Zero, that said we like how the Herman Entertainment System worked out, and this setup would be a bit rough for a RetroPie emulator. There are knockoffs on Amazon but we cannot attest to their reliability.
  • 1 × Waveshare UPS HAT (C) This was our second try on a battery for this project, we started with the PiSugar S, but had too many conflicts with the TFT Bonnet. Ultimately the Waveshare UPS HAT (C) proved simple and reliable.
  • 1 × Standoffs for Circuit Boards This was one of our first projects of this style so we opted to get a kit of standoffs so we would have plenty of options for future projects.

  • 1
    Adding Games

    TLDR: To add games to the HES use the following steps. 1. To connect to the HES: ssh herman@192.168.1.95 2. To create the game file, then paste and save code: nano /home/herman/games/oregon_trail.py 3. To make the game executable: chmod +x /home/herman/games/oregon_trail.py 4. To restart the system and load new games: sudo reboot * To remove broken games: rm /home/herman/games/oregon_trail.py

    Once you have the python code you would like to use you will need to SSH into the HES to add the game. This essentially makes it so you are running the command line on the device, the HES in this case, and not the computer you are operating. This allows you to run code, install apps, and run all sorts of function on the HES (raspi). We will use this Oregon trail game as an example. You start by connecting to the HES, you will need to look at your wifi backend to determine the ip address, for example ours is at 192.168.1.95 and was listed on the router as “raspberrypi”. Once you have this you can open a terminal or command line and type (but use your address):

    ssh herman@192.168.1.95

    You will be prompted for the password you created when you first setup the HES. Next we need to create the game file.

    nano /home/herman/games/oregon_trail.py

    This will create the file and open a text editor where we will paste our game code. Please note, there is a conflict with something in the naming conventions and the way the code runs, it is highly recommended to include an underscore in the game name to prevent these conflicts, so “oregon_trail.py” instead of “oregontrail.py” or “tetris_game.py” instead of “tetris.py”.

    For the game code see the "Files" section of this project to copy the game code. 

    Now to save this do “Control x”, then “y”, then “enter” to save. There should be instructions for this at the bottom of the window. Now you should be back at the command prompt and we need to modify our file to tell the system it is executable (that it is a program to run) so enter:

    chmod +x /home/herman/games/oregon_trail.py

    Then to restart your system and load the new game:

    sudo reboot

    Now you should be all set, it is pretty straightforward, on reboot the device will disconnect from the network so you will lose your connection. Once rebooted the new game should be in your list and ready to play, just try not to die of dysentery.

    **A final note on broken games.

    If your game is broken, does not load, or gives an error just provide this information to your AI (if that is what you’re using to code) and it will give you new code to try. We have found it easiest to simply remove the original file and then start over. To do that you would use the following code to remove the file, and then just start from the file creation step above (nano…) to recreate it with the new code.

    rm /home/herman/games/oregon_trail.py

View all instructions

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates