Mini SNES Pi Zero w/ Functional Switches

by carjo3000, published

Mini SNES Pi Zero w/ Functional Switches by carjo3000 May 10, 2017


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

4070Views 322Downloads Found in Video Games


This is my take on a retro gaming console using a Raspberry Pi zero. The SNES case is scaled to 42% the size of the original. To differentiate my design from other SNES Pi cases, I made the top switches functional. The power switch slides up and down to the turn the system on and off, and the reset switch is spring loaded to shutdown and reset the pi. I also changed the power input to a barrel jack, and included a full size HDMI adapter for easier use.

I began designing this around the time Nintendo released the NES classic edition. I was having a really difficult time finding one in stores, so I wanted an alternative to play some retro games while still having that classic console look.

SNES Pi Main Parts List

1X – Raspberry Pi Zero
1X – Micro SD Card (Enough capacity to load Retro Pi + ROM files)
1X – HDMI Mini adapter - Amazon Link

  • This is a pretty common adapter which can be purchased from other sources.

1X – 4 port USB hub

  • I used a USB “Hub man” that I found at Microcenter for $2 but any small USB hub will work.

1X – Perforated Prototype Board (with solder pads)
1X – 5V power supply with a barrel plug
2X – USB gamepads (SNES style obviously…)

  • I made the mistake of buying a pair of cheap controllers from eBay. You get what you pay for so I recommend spending a little extra for a good set of controllers
Electronics Parts List

The parts I used are fairly common components. You may already have most of them lying around from past projects. If not, you can source them from a local electronics shop or an online source such as Digikey, Mouser, or Ebay.
1X – Barrel jack
1X – Barrel plug (use this if you need to make your own connector)
1X – Right angle tact switch
1X – SPDT slide switch
1X – 3mm red LED
1X – 270 ohm resistor
2X – USB A connectors

3D Printed Parts List

1X – SNES Pi Top
1X – SNES Pi Bottom
1X – PWR Switch
1X – PWR Key
1X – RST Switch
1X – PWR Key
4X – Spacers (use these if your Pi Zero mounting screws are too long)

Hardware List
  • SAE #4 or 3mm Metric self-tapping screws can be used for this project.

7X – #4-3/8” (M3 – 8mm) screws to secure the Pi, USB board, and switches
4X – #4-5/8” (M3 – 16mm) screws to secure the top and bottom parts of the SNES
1X – Spring

  • I sourced my spring from a Pilot G2 pen, but nearly any pen spring will work.


You can find full details on how to install and run RetroPie on ypur Raspberry Pi Zero from this Github Link.
Likewise, you can find many useful tutorials from other online sources

Functional Power Switch

Much like the original SNES, the exterior switch is connected to a slide switch on a circuit board inside the case. The power switch for this project is connected in between the power source and the Pi. Turing the switch off will remove power for the Pi. DO NOT use this switch as a primary method of turning off the Pi as it may corrupt the SD card. The best practice is to shutdown the Pi from the RetroPie menu or by executing a shutdown command. After it is properly shutdown, you can then remove power from the Pi.

Functional Reset Switch

I used a pen spring to re-create the same action as the reset switch on the original SNES. When pushed, the 3D printed part actuates a small tact switch that will either shutdown or reset the Pi. The switch will then spring back into place. There are several ways to setup a reset or power switch on your Pi. Any method should work so long as you wire the switches accordingly.

I chose to to make the reset switch on my SNES serve as a shutdown button. Essentially when I press the switch, a script is executed that performs a soft shutdown of the Pi; pressing the button a second time will start the Pi up again. This is accomplished by connecting the switch to GND and GPIO3 on the Pi, and installing a Python script that will execute a shutdown command when the state of the pin is changed. I prefer this method because it allows me to safely shutdown the Pi, which can then be unplugged by turning the power switch off. It's a fairly involved process to setup so I will not go into greater detail beyond that.

If you wish to setup your reset switch this way then I recommend these tutorials. There are also many youtube videos on the subject, just search "retropie reset switch."

Power LED

A red LED will turn on when the system us booted up.The power LED can also be setup in numerous ways. You can connect it directly to your power source, connect it to the Pi, connect it to the USB hub, or even connect it to one of the GPIO pins and run a script to turn it on.

For simplicity, I recommend connecting the LED to the 3.3V pin of the Pi. For this you will also need a 270 ohm resistor. Please see the schematic in the build guide below.

Build Guide

All 3D printed parts and major components needed

The underside of the Top shell should look like this. For the switches to work properly, the surfaces indicated must be smooth

Likewise, the surfaces on the Keys need to be sanded smooth

Insert the pen spring as shown. The Power switch can be attached directly using a #4-3/8'' screw.

The spring and Reset switch should look like this. Test it out to make sure the spring will push the switch back into place.

The two switches should look like this. The screws should be loose enough for the switches to actuate properly. If you get a lot of resistance, loosen the screws or try sanding the parts smoother. Petroleum jelly works as a decent lubricant for plastic parts. Try adding a small amount in between the parts for smoother operation.

Follow the diagram to populate the perfboard. Drill 1/16'' holes for the USB connectors and tact switch. Drill a 7/64'' hole for the mounting screw. The placement of these components is critical for everything to line up properly so carefully follow the diagram.

The board should look like this once all components are soldered into place. At this point you should test fit the board into the bottom shell to ensure the USB ports line up properly. You should also test the functionality of the Top switches.

This is how the major components should fit into the bottom shell. At this point you should check that the barrel plug, HDMI cable, and USB controllers fit into the openings. Next, we need to check the alignment of the switches.

Lining up the power switch can be tricky. First, make sure that the top 3D printed switch and the bottom slide switch are in the same position. Next, line up the top and bottom shells and press them together. You can test alignment by moving the switch up and down, removing the top shell, and checking that the slide switch moved positions. The best way to test the reset switch is to connect two wires to the tact switch, thread them through one of the back openings, and connect them to a multimeter. Test for continuity by moving the switch.

OPTIONAL: If you are having trouble lining up the power switch, I have incorporated an alternative configuration to use. Here, you attach it directly to the 3D printed PWR_Switch. The wiring of the switch will be the same and should be done prior to assembly.

To use the alternate configuration you must remove a section of the PWR_Key to allow the slide switch to fit. You can then screw it in place and make adjustments as before.

After you ensure everything fits properly, you can begin wiring all the components together. Use this diagram for reference.

Follow this schematic. You basically need to tear down your USB hub and re-route the wires to the Pi and the USB ports on the perfboard. The power switch is connected between the Pi and the barrel jack. The reset switch is connected to GND and GPIO3 on the Pi. The LED is soldered to the 3.3V pin and GND on the Pi. NOTE: There are several ways of setting up a reset switch and power LED for use with RetroPie; this is just my version, feel free to change it for your own build.

Gather the materials needed to assemble the power LED.

Begin by applying a small piece of heat shrink tubing to the LED. This will prevent light from bleeding through the sides of the case.

Solder a resistor and some length of wire to the LED. Do a test fit to ensure you have the right length of wire.

At this point you should install Retropie on your SD card and configure it. I will not include a guide for this since there are many online tutorials available. But if you have any questions, just leave a comment and I'd be more than happy to help :)

Once you have everything soldered together, all the components should fit into the bottom shell as shown. You will need to press the power LED into the cavity. The screws I used to secure the Pi Zero were too long so I used the round spacers. I also removed the LED on my USB hub since the light bled through the case. Tape should be applied to the underside of your USB hub pcb to prevent shorting.

Here is a different angle.

Final assembly. Line up the power switches and screw the top and bottom shells together.

Rear view.

Paint the Eject panel and controller ports a dark grey as a final touch. Enjoy your new retro gaming system!

More from Video Games

view more

All Apps

Upgrade this Thing with Thingiverse Apps

Tools and Utilities

Repair, slice, or enhance this Thing

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

I'm trying with various usb hubs, but it didn't worked. Only OTG cable with one USB port works.

Does the USB hub work when you directly connect it to the micro USB port on the Pi through the OTG cable? Do the USB hubs require an external power supply? If you are trying to solder the wires to the pi, make sure you have the D+ and D- connected to the right pads.

I don't have a 3d printer.where do I get your mini snes pi printed? Can I order it from you

Hi, I'm glad to hear you want to print my design! Unfortunately, I am not really setup to take part orders. You should look into a makerspace, hackerspace in your local area that can print one for you. Some libraries have 3D printers as well. There are also many online services where you can have parts printed and sent to you, like 3dhubs.com. Thingiverse also has their own 3D printing services that you can look into. Happy printing!

Hi. Love the design and am planning on making it. Just wondering if you could link me to the prototype board you used because I have no idea where to look for it.

Hey, glad to hear you want to print it out. The board I use is very common and you can find it in most electronic shops or different places online. Here is an example from Amazon.

Thanks carjo :)

I love this design! I originally tried something similar with my design, but went with a simpler approach. My problem was getting the buttons to slide smoothly without "sticking" on the textured printed surfaces. I intend to revisit the "sliding button" concept in the future after finishing some other projects. Glad to see someone else pulled it off! I like your tutorial layout also.

Thanks for the feedback! Indeed getting the switches to slide properly is a challenge. You really need to make sure your sliding surfaces are as smooth as possible, and that you have enough clearance between the parts so they don't stick. Adding some lubricant in between also helps!

This is my first time seeing this design, it looks pretty cool. Basically the same concept as most snes/pi case designs. I like how he used breakout boards for the usb ports, makes assembly a bit easier. I also like how he used decals to add more detail, I might have to try that. I hope to have a scaled up version of my case soon that can fit a pi3 like this one. I'm trying to add more functionality to it in addition to the switches on my pi zero version.

First of all, your work was wonderful! Have you thought about adding a functional eject and maybe a mini cartridge as micro sd extender?

Thanks! I did consider making a functional eject and cartridge slot but I couldn't make them work with the current version of the case. I would need to scale it up to allow for more clearance inside. For this version I actually scaled it based on the size of the USB ports so that they mimic the original controller ports. Aside from that I was going for a similar form and style to the NES Mini console, which just has the functional switches and the rest being purely cosmetic.

I'm currently working on a larger version that will fit the more powerful Pi3. I'm still playing around with the design and doing some test prints, but hopefully I can upload it soon...

great case and instructions. its just too bad the pi zero struggles with some of the more popular games making them unplayable.

Thanks! Yeah the pi zero is a bit under powered for some later gen games. I would love to play Starfox on it! I'm actually working on a Pi 3 version of this case. I just need to do a couple more test prints before I can upload it to thingiverse. Stay tuned!

That's great, can't wait to try out the new version, you rock!

wonderful design and very solid instruction set

I love it, gonna test out this controller adapter i bought for this exact project i did a while ago on an atom board, http://www.raphnet-tech.com/products/4nes4snes/ if it works it will be perfect!

Pretty cool, I've never heard of this adapter board before. Let me know how it turns out!

so, it works swimmingly, however, you can only use either one nes with an snes or two snes or two nes controllers at a time, so.... you could easily get a dual snes to usb adapter on ebay for less. id gladly buy one for you if you could make the front ports a bit over sized, id try myself but im horrible at remeshing. would, you mind if i blast this all over facebook?

Thanks, I'm really happy to hear it worked out for you! I spent a lot of time making test prints and writing detailed steps. Its nice to know that you were able to follow them and get great results. Yeah I guess one of the limitations is the number of usb ports, but I wanted to keep a similar form factor to the original. I'm not sure what adapter you're talking about, can you post a link?

Great Work!
Your tutorial is very comprehensive.