Introduction: DIY Raspberry Pi Zero Handheld Game Console

Picture of DIY Raspberry Pi Zero Handheld Game Console

In this project I will show you how I used a Raspberry Pi Zero, NiMH batteries, a homemade over-discharge protection circuit, a rearview lcd and an audio amp to create a handheld game console that can play retro games. Let's get started!

Step 1: Watch the Videos!

The first video will show you how the electronic components need to get connected and in the second video I will present you how to mount all of the components inside a suitable case. The following steps will provide you with a bit more information after you finished watching the videos.

Step 2: Build the Over-discharge Protection Circuit!

Picture of Build the Over-discharge Protection Circuit!

When it comes to a portable device, batteries are always mandatory. Instead of the more popular LiPo approach, I went with a more beginner friendly power source, NiMH batteries. But even though they are easier to handle they still require an over-discharge protection circuit. Feel free to use the attached schematic and the listed parts to build such a circuit on a piece of perfboard.

1x MAX667:

2x 10k Trimmer:

1x Slide Switch:

1x10µF, 1x47µF Capacitor:

1x MCP602 OpAmp:

4x 1N4148 Diode:

5x 10k Resistor:

1x BC547 NPN Transistor:

1x IRLZ44N N-channel MOSFET:


1x MAX667:

2x 10k Trimmer:

1x Slide Switch:

1x10µF, 1x47µF Capacitor:

1x MCP602 OpAmp:

4x 1N4148 Diode:

5x 10k Resistor:

1x BC547 NPN Transistor:

1x IRLZ44N N-channel MOSFET:

1x MAX667:

2x 10k Trimmer:

1x Slide Switch:

1x10µF, 1x47µF Capacitor:

1x MCP602 OpAmp:

4x 1N4148 Diode:

5x 10k Resistor:

1x BC547 NPN Transistor:

1x IRLZ44N N-channel MOSFET:

Step 3: Order the Rest of the Components!

Picture of Order the Rest of the Components!

Here you can find a list with all of the other parts that are necessary for this project:
1x Raspberry Pi Zero:

1x NiMH batteries (I recommend Eneloop):

1x 3.5 inch LCD:

1x PAM8403 Audio Amp:

1x Housing:

1x Slide Switch:

1x 3.5mm Jack:

1x Potentiometer Wheel:

1x Speaker:

3x Tactile Push Button:

Raspberry Pi Zero:

NiMH batteries (I recommend Eneloop):

3.5 inch LCD:

PAM8403 Audio Amp:


1x Slide Switch:

1x 3.5mm Jack:

1x Potentiometer Wheel:

1x Speaker:

3x Tactile Push Button:

Raspberry Pi Zero:

NiMH batteries (I recommend Eneloop):

3.5 inch LCD:

PAM8403 Audio Amp:


1x Slide Switch:

1x 3.5mm Jack:

1x Potentiometer Wheel:

1x Speaker:

3x Tactile Push Button:

Step 4: Create a Prototype!

Picture of Create a Prototype!

Before mounting the components inside the case it is a good idea to connect them with one another to see whether everything works correctly. Feel free to use my attached "wiring diagram" as a reference. You might also want to try out the GPIOs of the Raspberry Pi as a controller input. Make sure to follow the second attached diagram for that. For more information about the Recalbox OS visit their site:

For the audio output you will also need to create a RC filter circuit. The schematic is attached.

If you have problems with the settings of the Recalbox OS you can also use my attached configuration files as a reference or simply replace yours with mine.

Step 5: Modify the Case! House the Components!

Picture of Modify the Case! House the Components!

During the second part of the video series I explained how I mounted all of the components. Simply repeat all the steps and don't forget to 3D print the plastic cartridge slot and the button wells. I attached the required .stl files.

The button wells though were not created by myself. Here is the site of the original creator (wermy):

You can even order them directly from his site and while you are at it you can check out his take on this popular project.

Step 6: Success!

Picture of Success!

You did it! You just created your own Raspberry Pi Zero Handheld Game Console!

Feel free to check out my YouTube channel for more awesome projects:

You can also follow me on Facebook, Twitter and Google+ for news about upcoming projects and behind the scenes information:


thinkingcreating (author)2017-11-06

Thanks for this great project Great Scott.

I am working on this build, and have run into some things that might help others. Particularly, I've been working on the over-dissipation protection circuit recently.

One thing that I found with it is that the shutoff did NOT work when I had the Pi hooked up to an HDMI monitor. It took some investigation and probing in several places, but then I realized that the circuit was grounding through the HDMI connection. At one point I disconnected my PP6 (ground) lead from everything, and the Pi was still running. It didn't shut down until I disconnected the HDMI.

I think I may try to put the power side of the circuit across the mosfet source-drain to be cut off by this circuit, rather than the ground portion of the circuit. Would this cause any problems, or would there be any reasons why this wouldn't work? I would try that out now, but I'm halfway into soldering my components into the perfboard so I my circuit is not functional at the moment. I'll probably try this out once I get the circuit reassembled.

I see that this does need to be on the ground side for the mosfet, so the idea of having it on the power side of the circuit wouldn't work. I guess this could potentially be done with a relay.

Overall, I think the biggest note is that this shutoff circuit is likely not to work if you have an HDMI monitor hooked up.

stormless made it! (author)2017-10-25

Thank you for this awesome project!

I'm new but am trying to follow this pretty closely. I'm using the videos to check my work as I progress.

It looks like the two capacitors on the over-discharge circuit don't connect to anything. Is this correct?

Here is a picture from the first video. Lower left is the 10uF, right is the 47uF.

ELECTROOPO (author)2017-10-02

the battery over-discharge protection circuit doesn't work :(

HazzyS23i (author)2017-07-24

Are the GPIO pins programmed to the controller's functions as mentioned in the picture reference? Or do you have to program it yourself? Thanks.

DeepSohelia made it! (author)2017-04-23

I made this for a school project! It was about 9 months work, from start to end. Uses a 2Ah LiPo, a TP4056 LiPo charging circuit, along with a cheap analog LCD screen and boost converter to give the required 12v.

Things I did wrong / What you should do:
Tactile switches are horrible to press, use the sillicone ones GreatScottLab did.
If you can, mount electronics on a single board rather than having lots of individual wires.
The TP4056 Charging modules are handy as they're about the size of two postage stamps, but they get very hot. I didnt measure but I'd say 80C+. I had to passively cool the device using an aluminium back.

I used a normal Pi Zero. The day I handed this in for marking was the day the Pi Zero W was announced. USE A PI ZERO W. Recalbox (as far as I am aware) requires you to add files over network, and if your device is connected to WiFi, this process is a lot easier. I have to insert the MicroSD into my Pi B and connect that to my WiFi router over Ethernet to add games.

I really enjoyed this project and I thank GreatScottLab for this instructable and the videos he produced.

lluisdoval (author)DeepSohelia2017-05-26

It looks really cool!!!!

Are you considering to post your own instructable??

FrancescoR4 (author)2017-05-16

Hi, I'm planning on building it! Great project! Do you think I can use the same protection circuit with a 2S Lipo?

SalvatoreS14 (author)2017-03-17

followed the instructions exactly. even looked on their wiki, i cant get video to come out from TV(composite) on my pi zero. it works for retropie.

DeepSohelia (author)SalvatoreS142017-04-23

I had a similar issue, the video was outputting to Composite for the menu and HDMI for the videos. I found that changing recalbox.conf over ssh didnt seem to set it, and i had to use their web based editor for this. Connect your recalbox to your network and input its IP into your browser address bar, which should bring up the relevant page

AndrewsTutorials (author)2017-04-19

I have a question.

I am confused about the pinout of the GPIO. Which one is the square one? I had plans to do this with my Pi 0 and I need help figuring out the pin diagram

The square pin is pin 1 and is used for 3.3v power. You can look at the GPIO configuration here: and

CrazyVito11 (author)2017-03-21

I have a question.

I have a raspberry pi zero and since im going to use a USB controller i wont need the GPIO pins. Now i do want stereo sound and not mono like you did. How can i do this? I want it to be Actual stereo and NOT dual mono. Thanks in advance :D

dmbalzer (author)2017-02-16

Why is the battery low voltage of 4.8 Volts scaled to 3.8V for the inverting input? Shouldn't this be scaled to 4.49V so it activates the comparator with the non inverting input at 4.5V?

dehein (author)2017-02-15

the stl file is in mm?

Jesusmexx (author)2017-01-26

Hey Scott is their another voltage regulator I could use?

GreatScottLab (author)Jesusmexx2017-01-31

If you find another one with a very low dropout voltage, then sure.

Korybit (author)2017-01-19

i have a question does it have to be the raspberry pi this thing linked or any raspberry pi zero

mateus romao da silva (author)2016-12-27

Great project I always follow you on YouTube ..

Mr PcF (author)2016-11-26

Hey Scott!
Is ther any Wiring diagram for the audio filter with the potentiometer?
Thank You!

Best regards from
Baden Wurttemberg, Germany

mikes12 (author)Mr PcF2016-11-30 <--- audio filter

Mr PcF (author)mikes122016-12-01

Thank you! But how do I connect the potentiometer?

mikes12 (author)Mr PcF2016-12-12

the r10k with the resistor, the video will also help

Mr PcF (author)mikes122016-12-13

Thanks! Ia stupid. This is not a normal Potentiometer. It is a spacial audio Potentiometer

mikes12 (author)Mr PcF2016-12-13

pin 1 line in pin 2 ground pin 3 line out 90% of potentiowheels use that. in this case the line is the ground and the other end in the diagram is the audio out.

mikes12 (author)2016-12-01

the over discharge protection diagram does not match the one you made in the video + max667 pins are attached differently in the video. did you update the design in the video after making the diagram?

mikes12 (author)mikes122016-12-01

looks like a pinout error, definatly got me

GuillaumeG17 (author)mikes122016-12-06

Hi, what was the mistake?

mikes12 (author)GuillaumeG172016-12-12

note thats copy and paste from above as it looks like you didn't read lmao. the diagram does not work. nearly burnt my max667 ic

GuillaumeG17 (author)mikes122016-12-13

You need to chill. The pinout in the diagram match the pinout in the max667 datasheet, so I was asking you what was your exact mistake, other people might have done it too.. and it could help them.

mikes12 (author)GuillaumeG172016-12-12

the over discharge protection diagram does not match the one you made in the video + max667 pins are attached differently in the video. possible pinout error

KazuakiM (author)2016-12-07

Hello "ma2" (handle name), please tell me.

I live in Japan.


In Japan, it is difficult to buy "MAX 667" separately.

I would like to use an IC with the same function as "MAX667". Please tell me the name if there is an equivalent IC.


Also, is it necessary to use an overdischarge protection circuit even if moving "Handheld Game Console" with a nickel-metal hydride battery and using "charger for mobile phones" as a power supply?

For example, such a charger:

I want two things to tell you.

cosmicr (author)2016-12-06

Can someone explain the op amp schematics for me? I think I understand, here's my take:

I get IC1A is a comparator which outputs 4.5v if the input voltage drops below 4.5v - but what's the purpose of the pot R2? Is it just to keep the input below the maximum?

So the IC1A outputs low if there is power.

Then there is a voltage drop across diode D1, taking it down to around 3.5v.

The second opamp IC1B is an inverting amplifier? It has a voltage divider making 2.25v on one input pin 6, and the 3.5v output from the IC1A on the second input pin 5.

But it's output pin 7 also goes back into it's input pin 5, with a 2v drop across diodes D2 and D3, making it approx 2.5v. Although I don't really understand why it's necessary if IC1A will always output either high or low.

I'm not sure of the purpose of diode D4 either.

So IC1B will output high 4.5v as long as it's input - is higher than 2.25v.

Finally there's the BC547 that turns on the MOSFET, but why not just connect the MOSFET directly?

Also on the schematic it looks like the MOSFET and Raspberry pi etc are connected directly to the battery anyway. Does this mean the MAX667 is only there for the benefit of the opamps?

I guess my questions are:

1. What is the purpose of R2?

2. What is the purpose of D4?

3. Why is the output of IC1B connected to it's input?

4. What is the purpose of the BC547?

LeonelB4 (author)2016-11-17

Hello, my appreciation for this excellent job. very good.

I have one doubt, because it connects the GPIO13 port to the audio filter?

what is your function?

GPIO13 does the audio out?

GreatScottLab (author)LeonelB42016-11-17


LeonelB4 (author)GreatScottLab2016-11-18

Could you tell me how to configure the GPIO13 as an audio output?

AndreasH17 (author)LeonelB42016-11-24

Watch the Video, he explained it there

DeepSohelia (author)2016-11-23

You say the sound is only Mono as we need the other GPIO pin for the Y key, can we not use one of the unused GPIO pins for the other audio channel?

GreatScottLab (author)2016-11-17

The .stl file is for one.

AUTMove made it! (author)2016-11-02

Hi! I have a question: I bought the display, but my Cicuit Board doesnt look the same. What should i do?

lobueno (author)AUTMove2016-11-12

Can you take a picture of that little IC (the compoonent with 8 pins) next to the right upper corner? Maybe we can help you then.

AUTMove made it! (author)lobueno2016-11-13

There are two: XL1509 and the other one is in the image below

lobueno (author)AUTMove2016-11-14

Indeed, the board is different, but probably just a different version (newer or older). The circuit looks pretty much the same.
You can use the same principle used by greatscott.

Remove XL1509, then proced to unsolder the red wire (the one that came from the input cable) and solder it on pin 2 (where the XL1509 was placed).

AUTMove (author)lobueno2016-11-15

Nice! Thank you.

jumpup_dnb_dj (author)2016-11-14

What is clearly a very cool project, I do not feel that this is a proper instructable, as it is quite lacking.

AnjeloK (author)2016-11-14

Hello there! I'm Extremely interested about this project! I would like to ask something. Does it matter if I buy the classic touch screen 3.5 inch monitor for raspberry pi 2/3/Zero and plug the outputs right on the GPIOs? This way we don't mess with any "remake" of the LCD's pcb as you do with this LCD monitor that you bought. I'm not quiet sure if this gonna work. If i'm wrong please correct me.

Megantonneke (author)2016-11-11


Great and inspiring stuff GreatScott. I am looking at your video's and reading your tutorials, because I have my own little retrogaming project in mind. It is similar to yours but involves a Raspberry Pi 3 in the shell of an Atari Lynx I (not the Lynx II which is already done) and adding 2 extra shoulder and 2 trigger buttons (not the Lynx II which is already done).

I am still quite a noob so I have an audio question, that maybe you can answer. I am wondering if it is possible to switch between mono on a single speaker to stereo on a headphone jack, using a hardware switch? I would be using the stereo output of a Raspberry Pi 3 and not a Pi zero in my case. I already nosed around several fora but did not find an useful answer.

Thanks in advance and keep up the creativity!

lobueno made it! (author)Megantonneke2016-11-12

Yes. it is possible, but you will not need a switch (as least not a conventional one). You can built it with the audio jack and a couple resistors.

You will need a female audio jack with 5 pins, like this

The circuit will be something like the image below. I don't think it will be necessary to use an amplifier, but, anyway, i'm uploading both circuits (one with the amplifier and one without it).

The jack works like a mechanical switch. The connector changes internally when you connect the headphone (closing or opening contacts), this way the audio will change it path between the headphone (stereo) or the speaker (mono).

The resistors are necessary in order to put both L and R signals together. This way you will have stereo sound with only one speaker (without this circuit you will have only left or right channel on the speaker).

I posted this on a rush so if you need any other tip just give a message and i'll try to post something with more details :).

*Im using the circuit above with my pi zero gameboy (something similar to the one that greatscott did).

Megantonneke (author)lobueno2016-11-12

Thanks Lobueno for pointing out the female audio jack with 5 pins, that acts as switch. It's obvious when you know it. Now on closer inspection of the original Lynx PCB, I even see it has one of those! Still a noob, yes I know...

lobueno (author)Megantonneke2016-11-13

No problem, it took me a few days to realize it too haha.
I'm probably on version number 5 of the board already (there is always a little thing to change).

About This Instructable




Bio: Awesome Electronics Tutorials, Projects and How To´s
More by GreatScottLab:Make Your Own Solid State RelayMake Your Own Simple ThereminDIY WiFi RGB LED Lamp
Add instructable to: