Skip to main content

Arcade Stick

Overview

Building an arcade stick to replace the HORI Real Arcade Pro 4 Kai that I got many years ago. The buttons on the HIRO stick are very spread out so my fingers get tired easily. Here is how I build a custom arcade stick by using RP2040 microcontroller and GP2040-CE firmware. I added an OLED Display for debugging and so many extra buttons to the controller. The page will focus on how to build a standard one and briefly cover what I did for the extra stuff.

Final Product

Front Back

Side by Side

Side by Side

Tools

ItemNotes
3D PrinterPrint the cases
MultimeterTest connections
Soldering Kit(Optional for small buttons)
Wire Stripper(Optional for OLED Display / extra buttons) Make DuPont connectors
Crimping Tool KitSame as above

Parts

Bold items are what I use for this project

ItemQTYNotes
Cases1
Microcontrollers1RP2040 Advanced Breakout Board V5.6E, Raspberry Pi Pico RP2040
Joystick1SANWA JLX-TP-8YT
Buttons-CROWN/SAMDUCKSA SDB-202 MX SCREWBUTTON
Type A-B Cable2One long, one short
A/B USB Feed-Through1Neutrik NAUSB-W-B
20-Pin Joystick/Button Harness1Making the wiring easier
4-Pin L3/R3/Touchpad Button Harness1Same as above
24 Gauge Stranded Wire-For extra buttons and stuff
M3 Flat Head Screws4Mounting the microcontroller
M3 Heat Set Threaded Inserts4Same as above
M4 Flat Head Screws16Assembling the case
M4 Heat Set Threaded Inserts16Same as above
Rubber Feet8

Steps

Making & Print Cases

My case is mostly based on Fightstick Case from the OpenStickCommunity. There are many other options online.

Case

I modeled in Houdini but I would like to give Autodesk Fusion a try next time.

Wiring Everything

I recommend reading RP2040 Advanced Breakout Board page first. The pins on the microcontroller are well labeled. We just need to follow the Button Labeling Table. The joystick orientation matters, so either find the product instructions or just plug it in, record the registered inputs, and then replug them.

Configuring Firmware

Using the Web-Configurator from the firemware, you can customize the controller to your preference.

Happy Fighting!

[Optional] Extra Buttons

GPIO26, 27, 28, 29 can be used as extra buttons, e.g. hitbox direction buttons while using the joystick.

[Optional] OLED Display

I have a 1.3-inch OLED Display SH1106 Module. It has GND, VCC, SDA, SCL pins on the module. I connected those pins to the G, 3x3, SDA, SCL pins next to the EXPANSION label. Beware that the order of the pins between the module and the microcontroller might not be the same. Using a wire stripper and crimping tool to make a 4-pin connecter can make the wiring looks cleaner.