Introduction: Wooden Super Nintendo Entertainment System (SNES)
At a maker-faire in Vienna, I happend to stumble across a wooden Super Nintendo Entertainment System (SNES). I used to play with such a game console with my older brother when I was a child. As I recognised becoming addicted again to Super Mario the moment I started playing, I decided to build a SNES for my brother and me. Searching the internet brought me to Jules1050's instructable on how he built a wooden SNES (I guess it's the same console I saw at the fair) which inspired my wooden SNES. There is also a really cool instructable on how to build a wooden SNES controller.
The console is not as big as the original one and measures 180x155x45 mm, which is the absolute necessary size - a smaller box could not contain all components (Trust me, I tried -.-). It is made out of plywood-layers which are glued together - the design is not exactly as the original SNES but it is unmistakable a SNES. The top cover can be opened and includes an LED and a power-button. The system is based on a Raspberry Pi running Retro-Pie. All necessary connectors (USB, Micro-USB, HDMI) are brought out and to make sure the Pi does not get too hot, a mini fan is included. Most of the parts are from Ali-Express so if you have enough time, you can built the SNES for about € 110,-
I hope you enjoy my instructable and I can help you to bring your childhood memories back to life :)
Step 1: Materials & Tools
- Lasercut Plywood (4 mm) e.g. Poplar (See drawings in next step for size)
- Raspberry Pi power cord (Micro USB)
- Raspberry Pi (Model 3B)
- Micro SD-Card (at least 8 GB)
- Raspberry Pi 3B Heat Sinks
- Mini Fan for Raspberry Pi
- S8050 NPN Transistor
- USB Extension Cable Male-Female Right-Angled 10cm (2x)
- HDMI Extension Cable Male-Female 11cm
- Micro USB Extension Cable Male-Female 20cm
- LED 5mm diameter
- Metal film resistor 220R
- Mini Push Button 6x6x5mm 4 pin
- Jumper Cables Female-Female
- Jumper pins (from male jumper cables)
- Heat-Shrink tube
- Soldering tin
- Hot glue
- Uhu all-purpose glue
Total costs about € 110,-
- Raspberry Pi with SD-Card and power cord about € 70,-
- Game-Controllers about € 15,-
- Other electronic stuff about €15,-
- Plywood about € 5,-
- Other material € 5,-
- Lasercutter (There exist companies which offer a lasercut-service as well as open labs like the Happylab in Vienna)
- Abrasive paper with fine grain
- Soldering iron
- Hot glue gun
- Computer and Wifi
- USB-Keyboard to setup the Raspberry Pi
Step 2: Lasercutting and Glueing the Case
The first step to building the case is cutting all parts with a laser cutter. There are companies which provide lasercut-service as well as open labs such as the Happylab in Vienna where a laser cutter is being offered. The case is smaller than the original SNES housing (180x155x45 mm) and consists of 10 layers. The last layer can be lifted and fits into the 9th layer. All necessary parts are provided as DXF and DWG files. Furthermore all Solidworks-CAD-Data is included.
The cut parts have to be grinded with abresive paper. Be careful to not lose small parts! All parts which can be disposed are marked yellow in the layer-image.
Afterwards the parts have to be glued together with the all-purpose glue. The enclosed 3D-PDF shows the positions of the layers. The ground-layer and the 2nd layer are aligning at the back and the sides. All other layers are glued together with the central cut-out aligned.
When reached the connector-layer (5 and 6), the plugs of the cable should be placed inside the holes while the small spacers are placed to make sure they fit later.
The top cover consist of the visible cover and a smaller layer, which fits into the last layer of the SNES (9a). Glue the top cover parts together before glueing layer 9 to the SNES. Therefore, place layer 9 with the inner part 9a on the table and put glue just on layer 9a! Then press the outer and inner part of layer 10 onto 9a, aligning the hole for the LED with layer 9. When the glue is cured, the cover 9a+10 can be removed and part 9 glued to the rest of the SNES. The cover 9a+10 stays separate and can be used to close the case. If you want you can paint some of the top parts for some accents before glueing them like I did with the button-bezels. Leave the hole for the push-button open. Besides this part, another slightly bigger rectangular part should be left, which will be needed later to install the button.
Step 3: The Circuit
The circuit diagram shows the connection of all electronic components which are descirbed in the following steps and offer the following functionalities:
- Fan can be switched on/off to cool temperature-dependend with the Raspberry Pi via an S8050 transistor (since the Raspberry can't handle enough current) - inspired by Edo Scalafiotti
- Switch is able to turn the Raspberry Pi on/off - inspired by Tyler
- LED with 220R series resistor (to reduce current) shows if the SNES is running or not - inspired by Zach
This stuff of course just works with the right software - therefore see the software-section of this instruction.
The fan is connected to the raspberry's 5V and GND, whereby it can be switched via the transistor and pin 12 (GPIO18). Don't try to connect the fan directly to 5V and GND - this can destroy your Raspberry Pi! The power-button is connected to pin 5 (GPIO3) and GND directly. To switch the LED on and off with the Pi, it is connected to the Raspberry's UART_TX-pin (pin 8) which is switched on and off by the Pi automatically. A resistor reduces the current for the LED which is connected to GND with its second contact. Don't try to connect it directly to your Raspberry - this can also harm your hardware!
To make the circuit easier to understand, all GND-lines are connected together to one GND-pin of the Raspberry Pi. The three ground lines are in the following steps connected to different GND-pins for easier installation.
Step 4: Adding the Electronics
This step just gives a brief overview of the electronics. In the following steps, the installation of the electronics is described:
- Preparation of the Raspberry Pi
- Routing of the extension cables (USB, HDMI and Power-USB)
- Installing the fan
- Adding the LED
- Installing the push-button
As can be seen in the images, the LED is located in the small hole in the case. Also the fan is located in a notch in the case and the button is installed with longer cables in the top cover of the SNES.
Step 5: Preparing the Raspberry Pi
To make sure the Raspbery Pi will not get too hot, glue the heat sinks onto it.
Step 6: Installing the Cables
Place the Raspberry Pi as can be seen in the image in the case and attach 2 USB cables, as well as the HDMI cable and the micro-USB cable. Since the cables are hard to fix with cable straps to the case due to the limited space, use hot glue to make sure they stay in place.
Step 7: Installing the Fan
The cirduit for the fan consist fo the fan and a transistor. To make everything easily plugable with jumper-cables, a pin from a male jumper-cable was soldered to each pin of the transistor. The solder joints were isolated with heat-shrink tube. Then the GND-cable (black) of the fan was connected to the transistor as visible in the circuit. Female-female jumper-cables were connected to the other two pins to connect them to the Raspberry Pi. The central pin is connected to the Raspberry's GND, the other one to pin 12 (GPIO18) to switch the fan on and off.
Step 8: Installing the LED
The circuit for the LED consists of the LED and a resistor. The necessary series resistor can be soldered directly to the LED's pin. A male-jumper pin should be connected to the other pin of the resistor and everything should be isolated with heat-shrink tube. Note that due to the limited space the resistor must be bended 90 degrees - better do that before shinking the tube. Then, female-female jumper-cables can be connected to the pins and the LED can be connected to the Raspberry Pi's UART_TX-pin (pin 8) and to GND.There is a smaller and a bigger part visible in the LED. It has to be connected to GND with the bigger part pin!
Put the LED into the case from inside. The diameters of the holes should make it impossible for it to slip outside. To keep the LED in place use hot-glue.
Step 9: Installing the Push-Button
The push-button is located in the top cover of the SNES. To fix it there, solder a male jumper-pin to the two push-button pins. Then make small holes for each pin into the rectangular piece of wood which will later be glued to the cover and put the pins of the buttom through them. Because of the limited space, the pins must be bended with pliers.
Since the push-button is about 5 mm high when not pressed and the wood is only 4 mm it would stick out of the cover. Cut a window out of cardboard and glue it to the rectangular piece of wood to prevent that. Then glue this piece onto the cover from the inside. To cover the button put a really small amount of all-purpose glue onto it and press the wooden button against it. This worked perfectly for me. Don't use too much glue since this could block the button!
Use two female-female jumper-cables to connect the push-button to the Raspberry Pi's pin 5 (GPIO3). It's important to use this pin, since the Pi has a built-in wake-functionality. Use long cables to make opening the case possible.
Step 10: Adding Software
Congratulation! If you made it until here, you have officially built all the hardware-stuff! Now its software time...
The Raspberry Pi is running RetroPie, which is especially designed to play retro games. You can find a very good installation instruction here, which guides you through all necessary steps. Follow the instructions at least until you have set up the Wifi connection and make sure to write down your IP.
Activating UART for LED
To switch the LED on and off with the Raspberry Pi, it is connected to the Pi's UART-Pin, since this pin is set when it starts as described by Zach. Just press F4 on the Pi to enter the terminal and edit the file /boot/config.txt. Set enable_uart=1 - that's all. Then open the raspi-config by typing sudo raspi-config and go to Interfacing Options --> Serial and enable it.
Downloading files for fan and button
Download the 3 files and rename the file listen-for-shutdown.REPLACE_THIS_WITH_sh to listen-for-shutdown.sh, since this website can not upload .sh-files.
The files are put together from files from Edo Scalafiotti (fan) and Tyler (power-button).
- listen-for-shutdown.sh starts the two .py files
- listen-for-shutdown.py waits until GPIO 3 get's a high signal and shuts down the Raspberry
- run-fan.py monitors the CPU temperature and switches the fan on and off accordingly. You can change the temperature limit in this script.
Transferring the files
To transfer the files from you computer to the Raspberry, you first have to enable SSH. Therefore enter the Raspi-Config by typing sudo raspi-config and go to Interfacing Options --> SSH and enable it.
Open a terminal on your computer and type:
- scp yourPathToFile\listen-for-shutdown.sh pi@yourPisIP:~
- scp yourPathToFile\listen-for-shutdown.py pi@yourPisIP:~
- scp yourPathToFile\run-fan.py pi@yourPisIP:~
The first part tells where the file is on your computer, the second part includes the user on the raspberry (in this case pi), the IP of the Pi and the root path (~) where the files are stored. You may have to enter you password at this step.
Making the files executable
To make the files executable and to run them automatically at startup, you have to move them and change their permissions with the following commands:
- sudo mv listen-for-shutdown.py /usr/local/bin/listen-for-shutdown.py
- sudo mv run-fan.py /usr/local/bin/run-fan.py
- sudo mv listen-for-shutdown.sh /etc/init.d/listen-for-shutdown.sh
- sudo chmod +x /usr/local/bin/listen-for-shutdown.py
- sudo chmod +x /usr/local/bin/run-fan.py
- sudo chmod +x /etc/init.d/listen-for-shutdown.sh
- sudo update-rc.d /etc/init.d/listen-for-shutdown.sh defaults
The first 3 commands move the files to the correct directories, the second 3 commands give permissions and the last command registers the .sh-file to run upon startup.
That's all, you can test if the LED, power-button and fan work if you have restarted the Raspberry Pi. To test the fan, you can either heat up your Pi or change the temperature in run-fan.py (don't forget to re-run listen-for-shutdown.sh to make the changes active).
Step 11: Adding Games
To transfer games from your computer to the Raspberry Pi, you can use for example a USB drive. I copied the steps from the installation guide and made a nice manual which can be glued at the inside of the SNES cover:
- Ensure that your USB is formatted to FAT32 or NTFS
- First create a folder called retropie on your USB stick
- Plug it into the Pi and wait for it to finish blinking
- Pull the USB out and plug it into a computer
- Add the roms to their respective folders (in the retropie/roms folder)
- Plug it back into the raspberry Pi
- Wait for it to finish blinking
- Refresh emulationstation by choosing restart emulationstation from the start menu
You can get games really easy on the internet. Just google SNES ROMs or something.
I hope you enjoyed this instructable! Have fun playing with your own SNES :)