This combination uses breadboardable components if you’d just like to mess around a bit before recycling everything into another project. There’s also an option to use most of the same components in a custom printed circuit board — this is the best and cleanest route for using a NES or SNES controller and if you want something permanent and purpose-built for the task.
Here are some of the parts used in this version of the project. You might already have some of these around! Additionally, common soldering bits-and-bobs (iron, solder, flush cutters, etc.) are needed.
There are several versions of the Pico board; with or without headers, with or without wireless, any variant can work here. Wireless isn’t used in this project, but if that’s what you’ve got on hand, the board’s still compatible (only difference is you won’t see an LED “heartbeat” on this board).
This is one part that can’t move over directly; the breadboard build requires headers, while the PCB build relies on the castellated pads and must sit flat. Fortunately Pico boards are super affordable like popcorn, and there are tons of other cool projects to make if you end up with a spare.
Other microSD adapter boards should work fine for breadboard use. Some might have 5V input instead of 3.3V; power these from the Pico’s VBUS pin rather than 3V3. For the custom PCB, confirm your microSD adapter has a compatible pinout, or use the Adafruit breakout board specifically.
Nothing special about this HDMI cable. If you have something around already, use that!
Additional parts specific to different builds or controllers are explained as we go…
Input Options
Wii Classic Controller is not supported with this hardware combo.
To use one of the supported Sony USB controllers:
- A suitable USB-OTG splitter cable is needed; this is something we don’t stock but can be found online. Look for USB micro-B plug for the Pico board, USB-A socket for the controller, and then whatever connector you would prefer for connecting power (USB micro-B and USB-C are common).
To use NES or SNES compatible gamepads:
- Wire up a NES or SNES controller port (these can be found on eBay)…or, if you don’t mind sacrificing a junky controller, cut the plug off and wire directly between the circuits.
The USB-OTG cable can be omitted if using an NES/SNES gamepad. Conversely, the NES/SNES port (and connections described below) can be omitted if using a USB controller.
Breadboard Method
Breadboarding’s great for temporary projects. If you play around with this and decide you really like it and want something permanent, almost everything can be moved over to the custom PCB explained later.
Note: for the breadboard build, the Pico board must have pin headers. The PCB build must have no headers (but the other boards do use headers in either case).
Here’s some additional parts used in the breadboard build. If you’ve been doing electronics for a while there’s a good chance you have most of this around already:
A visual breadboard representation:
Notice the microSD clock SO and SI pins cross on their way over; these are not in the same order on both boards.
The NES or SNES controller port is not directly breadboard-friendly; you’ll need to solder on some jumper wires to make this work. The ports are shown here from the front; wire order is mirrored if looking at the back.
A schematic view if that’s easier to follow:
Or a pin-by-pin list of connections:
Pico RP2040 |
microSD Breakout |
NES/SNES Controller |
DVI Breakout |
3V3 |
3V |
VCC |
|
GND |
GND |
GND |
GND |
GP2 |
CLK |
||
GP3 |
SI |
||
GP4 |
SO |
||
GP5 |
CS |
||
GP6 |
Clock |
||
GP7 |
Data |
||
GP8 |
Latch |
||
GP12 |
0+ |
||
GP13 |
0– |
||
GP14 |
TXC+ |
||
GP15 |
TC– |
||
GP16 |
TX2+ |
||
GP17 |
TX2– |
||
GP18 |
1+ |
||
GP19 |
1– |
Any variety of momentary button/switch can be connected between Pico RUN and any available GND pin to provide a reset button.
Connecting everything on a purpose-made circuit board makes this project robust. An NES or SNES controller can be used with a solid connection to a physical port. Mounting holes facilitate installing in a case if you like.
This shows both the NES and SNES ports installed. You don’t need to do this; one or other is fine, it’s up to you! Unfortunately there is no two-player support, but for single player you can use whichever gamepad type you prefer.
The custom circuit board can be ordered from services such as PCBWay, using files provided below. At the time this was written, a set of 5 boards cost $22 USD plus postage. Most other small-run PCB services should be able to work with these files (for a little more, OSH Park has a very good reputation with hobbyists, and might arrive sooner for US addresses). Be patient and allow ample time for panelization, production and shipping.
To get the PCB files, click the following link:
The PCB production service — PCBWay, OSH Park or other — will ask for a ZIP file. Upload the still-compressed ZIP file and they should be able to decode the board size and details and provide a quote.
If you previously built the breadboard version, the microSD and DVI breakout boards will move right over. After soldering in place, the long pins can be trimmed on the underside of the board. A fresh, headerless Pico board must be used as this sits flat against the PCB…tack down two pins at opposite corners and the rest should proceed smoothly.
Software
Here is a pre-compiled .UF2 file for the Pico/breakout combo. Install as you would most .UF2 files: hold down the BOOT button when connecting USB, and the board appears to your computer as a small flash drive called RPi-RP2. Just drag the file over and allow it some time to complete the transfer.
If the RPi-RP2 drive does not appear on your computer, try a different USB cable. Even in this modern age some devices come bundled with a budget “charge only” cable, but this needs a proper “charge and sync” cable.
Text editor powered by tinymce.