Introduction: Leverless Arcade Controller Using a Raspberry Pi Pico

About: Game Art student at the Utrecht School of Arts (HKU)

[This Instructable was made for a project at the Utrecht School of Arts (HKU) by Merlijn van Ballegooijen]


I love playing fighting games, especially with an actual arcade controller! The way the buttons feel and the technique of moving the arcade lever to control your character is awesome. However, it is quite difficult to take with you. That's why I decided to make a flatter version and replace the lever with 4 movement buttons! The brain of this controller is a Raspberry Pi Pico running the GP2040-CE firmware. In this Instructable I will give insight into the design of the controller and how you could go about creating your own version!

Supplies

A list of supplies I used for my controller:

  • 12x Low profile keyboard switches (see step 1 for further information)
  • 4x Pushbuttons (see image for reference)
  • 4x Pushbutton caps
  • 4x M5 15mm Chicago screws (see image for reference)
  • 3mm MDF (black in my case)*
  • 3mm Clear acrylic*
  • a Raspberry Pi Pico
  • a 1m Micro-USB to USB-A cable (male to male)
  • a bunch of electrical wire
  • some glue


* amount/size of plates depends on size of controller, because my controller is so slim, I just layered multiple plates on top of eachother. I do not recommend this for taller cases because this is very inefficient material-wise. I ended up using 1 500x500mm clear acrylic plate and 3 400x500mm black mdf plates.


As for tools, I used a small Philips screwdriver for the chicago screws, a soldering iron (for soldering (duh)), some wire stripping pliers and a Dremel drill for the cable hole on the side.

Step 1: The Buttons/button Caps

First, I started thinking about what kind of buttons I would use for this project. Initially, I wanted to use traditional Sanwa arcade buttons, but those are far too tall to fit in a slim form-factor. I decided to use Kailh low profile chocolate switches, clear red ones specifically (see first attached image). These can be purchased at splitkb. I used choc v1 switches, but I heavily recommend using choc v2 switches. Mainly because the v1's have very unorthodox pinholes for fitting on button caps, and pretty much my only option for button caps was to 3D print them myself, whereas if you use the v2's, you get the advantage of having the cherry mx style cross pins. So you can fit on pretty much any keyboard button cap you can find.

After purchasing my switches, it was time to start work on the button caps themselves. This was a difficult process which even now I am not entirely satisfied with. At first I tried a design where the pins were a part of the cap, but due to them being printed up-right, this cause for inconsitencies between prints and they would rarely fit on the switch (see second attached image). Eventually what worked for me was printing the legs and cap seperately and glueing them together afterwards (see third and fourth attached images), this was a lot more consistent and was easy to do in larger batches.

I would have liked to work more on giving the buttons a nice finish (some of them are even a bit collapsed), but I was cutting it a bit short time-wise :(

Step 2: Enclosure

For the enclosure, as mentioned earlier, I used multiple layers of laser-cut MDF and clear acrylic (6 layers) to form a slim box. I then screwed it together using the chicago screws. The design of the enclosure was made in Illustrator, I have included the .ai file if you want to use my exact design (keep in mind that you need to cut each layer seperately, not all at once as they overlap, third attached image is only the acrylic layer). The enclosure is easy to assemble and take apart because I kept a margin in the screwholes, mainly because the screws are 15mm and the enclosure is about 18mm. I can screw it down tight with the male side of the screw, which is making it a bit longer (demonstrated in fourth attached image).

I then drilled a hole for my usb cable to go through on the top-right side of the enclosure (see fifth attached image), and glued the keyboard switches into the square holes of the acrylic. Now we're ready for soldering!

Step 3: Soldering

Soldering time! Because I am using GP2040-CE, I can follow their guidelines for soldering the pins to each specified header (see first attached image). I daisy-chained all the ground wires to one gnd pin on the Pico, and the rest to their corresponding pins (see second attached image for a diagram, third attached image for the finished soldering work).

Step 4: Assembly and Firmware

After having finished soldering and connecting the USB cable, it's time to flash the firmware so we can test if everything works! I could try to shoddily explain the installation process here, but the official GP2040-CE documentation does a far better job at that. Once you have installed it and everything works, it's time to close everything up, pop on the button caps and enjoy your custom made arcade style controller! Let me know if this Instructable has had any use for you and if you decide to follow it, I would love to see your own take on it. Thanks for reading!