
tl;dr
I’ve been on a quest for while now trying to build a retropie handheld that was functional but didn’t break the bank. So far I’ve made ZeroBoy – A poor man’s retropie “portable” and a follow-up ZeroBoy rev C – An improved poor mans retropie portable. These were great but I think I have made a much better system with all the features included. Follow me below to find out how I managed it
Hardware
- Raspberry pi zero W
- 2.4″ screen (ili9341)
- 12 soft touch buttons
- Power bank board
- Push button
- Micro usb port
- Piezo speaker
- 2×20 female header
- 4×1 female header
- 4×1 Long male header (20MM)
- JST connectors
- 2000mAh battery
- Switch
- 10 Ohm resistor
- 4 M3 standoffs
In the past I had used the 3.2″ waveshare clones screens because they were relatively cheap and easy to work with. For this build I wanted to use the 2.4″ ili9341 screen and footprint I used in the Xmas bauble pi because they are cheap and there is plenty of software support out there to get it up and running. Because I was using the “bare” screen it allowed the build to be smaller because I didn’t have to deal with a breakout board.
I soldered the ribbon cable off the screen straight to the board, was quite tricky because the pins on the cable are 0.8mm pitch

Buttons
As before the software side of the buttons I’m using gpioneer because Its tried and tested with my other builds. I used different buttons on this build, I found some nice soft touch buttons that weren’t too mushy because they have a plastic top to them and the silicon membrane is in the inside. These buttons are SMD which has its ups and downs but I think they are a great choose
Speakers
This is new to my builds, I found out that in the TinyPi he used some Piezo speakers wired straight to the PWM pins on the PI (pins BCM 13 and BCM 18). My first rev of the PCB I ran into some problems, If you check out the video below it will be clear whats wrong. I’m not sure what is causing the problem because in the new rev of the board I still have the problem but it’s not as bad.
[youtube]https://youtu.be/wFbOqZuFhUw[/youtube]
I still have one working speaker which isn’t all that bad but I would like to get to the bottom of the problem. I found that If I use the other PWM pin (BNC12) instead of the BNC13 I don’t get the problem.
Power
As with all my other raspberry pi projects I’ve been using these “power bank on a PCB” boards which are really cheap and will support a raspberry pi zero and screen off of a LIPO battery. The reason I love these boards is they have everything you need, 4 LED’s for battery level which is important to know when its time to shut down the pi when the battery is about to give out. They are small too, so can easily be added to a project. They also allow a push button to be wired to the board so you can press it to check battery levels when the pi is off. I attached a micro USB port for charging.

Split between 2 board
What I sometimes do is use an unpopulated PCB as the back board of a project but this time I decided to split this project over 2 boards. I found some long (20mm) male headers that I connected the 2 boards together which pass VCC GND L and R buttons over 4 pins. I used 4 18mm M3 female headers with M3 bolts secure it.


Hot keys for sound
I wanted a way to mute and turn the volume up and down while playing games. You just need to hold down the select button and press up on the d pad to turn the volume up and down on the d pad to turn the volume down. Also you can mute it by holding the select button and pressing left on the d pad. I know you can do this from the retropie main menu but that would mean you had to exit the game to do so. Follow the instruction below this also with re enable the saving hot keys.
You will need to edit the file below
Code: Select all
/opt/retropie/configs/all/retroarch.cfg
search for the word below in the file
Code: Select all
input_player1_select
Code: Select all
input_enable_hotkey_btn =
search for the word below in the file
Code: Select all
input_player1_up
Code: Select all
input_volume_up =
search for the word below in the file
Code: Select all
input_player1_down =
Code: Select all
input_volume_down =
search for the word below in the file
Code: Select all
input_player1_left
Code: Select all
input_audio_mute
search for the word below in the file
Code: Select all
input_player1_l
Code: Select all
input_load_state
Code: Select all
input_player1_r
Code: Select all
input_save_state
I wanted a way to toggle the wifi and bluetooth chips so I could save battery life when I didn’t need them. I found this blog post which has just has the files to do so
http://forum.8bcraft.com/viewtopic.php?f=2&t=1432
Board files
Github – https://github.com/facelessloser/retro_zero_handheld
Video
[youtube]https://www.youtube.com/watch?v=WY_CduSmmmE[/youtube]
[youtube]https://www.youtube.com/watch?v=-TMvWUzXIb8[/youtube]