UPDATE: For connecting original controllers from game consoles or arcade machines, there is now the ControlBlock. It supported various controller types and provides even a power switch functionality. The ControlBlock is has its own page here.
In a previous post, I described my idea of a universal console with the Raspberry Pi. I presented, what I called, the SNESDev-RPi, which is an SNES-controller interface for the Raspberry Pi. A core element of this interface is a SNES-adapter PCB that I recently designed and that does nothing more than providing all needed connections between the GPIO pins and two SNES connectors. In this post I describe the details for assembling the SNES-adapter that I showed in the previous post. Furthermore, I show how a single SNES socket can be directly connected to the GPIO pins of the Raspberry Pi.
This post is organized in two sections: The first section describes the details for assembling the SNES adapter with the PCB. The second section describes, how a single SNES socket can directly be connected to the Raspberry Pi.
Before I begin with the descriptions I want to say that both described approaches need soldering and work with heat and electricity. This means that you should know what you are doing when following these instructions!
Assembling the SNES adapter with the PCB
In this section I describe how to connect two SNES connectors to the SNES-adapter PCB that I recently designed. The PCB replaces some wires and makes it easily possible to attach two SNES connectors to the Raspberry Pi. If you are interested, here is an illustration of the board layout (click on it to enlarge):
For the assembly we need the following components:
- 1x SNES-adapter PCB
- Ribbon cable – 26 wire
- Ribbon Cable – 6 wire (from which we only use five wires)
- 1x Ribbon Crimp Connector, 2×13 pins
- 2x SNES connectors (I got these from two extension cables for SNES controllers)
As you might have noticed I left out the shrouded pin headers used for the prototype as shown in the previous post. I realized that these take quite a lot of space. To allow for putting the whole adapter into a nice small case I decided to discard them here. The assembly consists mainly of dismantling the wires and soldering them to the pins and pads.
Here is a diagram that illustrates all needed connections between the connectors and the PCB (tap to show it in large). To be on the safe side, use pin 1, which provides 3.3V! According to other sources the polling of the SNES controller should also work with 3.3V.
The red lines illustrate the connections between the GPIO connector and the PCB. Here I chose those GPIO pins that are used in the SNESDev-RPi implementation. The connections between the SNES connectors and the PCB are indicated by pairs of numbers or capital letters and are shown in purple.
For the sake of completeness also the pin out for two optional LEDs and a button is shown. A button can be attached between the “b”s. An LED can be attached (watch the polarization!) between “n” and “GND” or “m” and “GND”, respectively. As already mentioned, the LEDs and the button are not used here. But if you want to use them, you also have to connect the LED and BTN pins on the left of the PCB to the GPIO connector. Also, you need to solder three resistors on the boad to make the circuits work. I used 2.2k Ohm 1/4W resistors, but similar ones would also do here.
Connecting a single SNES socket to the Raspberry Pi
In this section I describe how to attach a single SNES connector to the Raspberry Pi. We need the following parts for this:
- 1x Ribbon Crimp Connector, 2×13 pins
- 1x SNES connectors
The following illustrations shows the connections between the SNES connector and the 2×13 crimp connector. To be on the safe side, use pin 1, which provides 3.3V! According to other sources the polling of the SNES controller should also work with 3.3V.
The wiring between the crimp connector and the single SNES connector is equal to the one of the second SNES controller when using the SNES-adapter board. Notice that the button mapping within the source code of SNESDev has to be adapted to your needs in this case! Alternatively, you can connect the data pin of the connector with P22. If you do so, no changes to the source code of SNESDev should be needed.
I hope you find these descriptions helpful. Please tell me, If anything is still unclear so that I can add the missing information. If you have any ideas for improvements for the SNES-adapter PCB it would be great to share them here. While I wrote this post, for example, I got the idea that it might be easier to have a 2×13 connector directly attached to the SNES-adapter board. Also, some over-voltage protection would be reasonable for a future revision of the board.
If there are enough people interested in the SNES-adapter board, I already thought about designing another revised version of it …
What do you think?