I don’t know about you, but whenever I’m able to make something myself, I’m rewarded with a huge sense of accomplishment. And with the introduction of low-cost single-board computers and microcontrollers, a whole new world of possibilities has opened up.
With just a bit of patience, you can make anything from a web server to a time-lapse camera. You can even make your own video game controller. Here’s a simple project featuring a Raspberry Pi Pico that will help you to do just that.
Related
Arduino vs Raspberry Pi: Which board should you buy for your next DIY project?
Don’t be fooled by their appearance — there’s a world of difference between the tiny Arduino and Raspberry Pi boards!
What you need to get started on the build
Making a controller for your video games is a pretty straightforward task, you just need to have the basic parts.
First you’ll need the GP2040-CE open-source firmware, something that’s purpose built for making controllers and is compatible with PC, PS3 and PS4, Nintendo Switch, Steam Deck, MiSTer and Android. You’ll also need a RP2040-based microcontroller like the Raspberry Pi Pico. And of course, you’ll need buttons and wire to connect all of this together.
Finally, you’ll need a breadboard as a construction base for all of this, since this build will be for a prototype controller to help you understand the basic principles involved. It might seem basic but if you can build this one, you can build one of the many more complicated controllers online.
UCTRONICS for Raspberry Pi Pico Starter Kit
$25 $30 Save $5
The first thing to do is flash the GP2040-CE firmware to your Raspberry Pi Pico.
- Start by downloading the firmware file to your computer.
- Once you have the file, connect your Pico to your computer with a USB cable while holding down the BOOTSEL button.
- Your computer should recognize the Pico as a USB drive. Copy the firmware file into the Pico drive.
The Raspberry Pi Pico should restart on its own after the file has been copied, and the Pico will now be recognized as a game controller!
Now you have to wire up your controller. To keep things simple, you’re going to make an old-school NES-style controller, so you’ll need eight buttons (Up, Down, Left, Right, Start, Select, A, B). Lay them out however makes sense to you on your breadboard.
Using the GP2040-CE wiring diagram as a guide, use your jumper wires to start connecting the GPIO pins on your Pico to one side of the switch on your buttons. Up, Down, Right, and Left will connect to pins GP02–GP05, respectively; A and B will connect to GP06 and GP07; and Start and Select will connect to GP16 and GP17.
Next, connect one of the GND pins on your Pico to one of the power rails on your breadboard. Finally, connect the other end of your button switches to the power rail that connects with the GND pin.
Congratulations, you’ve just prototyped your first gaming controller!
If you’re curious about what’s going on inside the Pico, when you push a button, you’re completing a circuit. The Pico recognizes that the circuit has been closed and sends a signal to your computer, Steam Deck, Android device, Xbox, PlayStation, or Switch telling it that a button has been pushed. And if you’re worried that your janky breadboard controller isn’t good enough for gaming, consider that the GP2040-CE firmware can achieve sub-millisecond latency, so its response time is just as good as a prebuilt controller.
Even though this project doesn’t look pretty, it’s good practice before you dive into the Open Stick Community and build your own fight stick.