Mini Arcade Stick
A miniature arcade joystick with USB and Bluetooth support.
When I worked on my bigger Arcade Stick, the idea came up to have a miniature version of this as well. Actually, I was so obsessed with this idea that I stopped working on the bigger stick for quite a while to work on the miniature version. Since I wanted to make the stick as compact as possible, I dropped the analog channels and OLED display and decided to use 8 SMD pushbutton switches for the buttons. I kept the LiPo charger and the
Bluetooth module of course.
The main problem though was to create a usable microswitch joystick. I toyed with several ideas but settled for a ball bearing solution with a 3D printed bearing and a metal ball screwed to the joystick shaft (which is actually an M4 screw). There is a 3D printed disc screwed to the shaft which pressed down the flat SMD switches. The bearing and outer shell are 3D printed, the top and bottom panel are cut from 2mm acrylic.
The fully assembled stick looks like this (the bluetooth module and LiPo battery are not visibile as they are mounted below the PCB):
I don't want to conceal that there are some issues with this design that I would reconsider if I'd ever rework the design:
- I originally wanted to use larger SMD switches for the buttons but their footprint made routing difficult. So I settled for the smaller buttons but messed up the vertical distance. So the two buttons rows are a bit too far apart.
- While I ordered 2mm acrylic for the top and bottom panel, it came out around 2.5mm. Therefore the button caps just protrude a little bit. The buttons can still be pressed, but another 0.5mm would have been helpful.
- When I 3D printed the case, the holes came out a bit too tight to place the drive-in nuts inside them. When I increased the diameter just a tiny bit, they damaged the outer shell. Besides, the PCB didn't just fit. So I needed to extend the inner and outer diameter of the shell a bit to compensate for that. This became a total nightmare in FreeCAD and even I tried a dozen times, broke something inside the model which I couldn't totally fix. As a result, I needed to add the fillets in a second step
since the "Refine Shape" feature would crash. Also, since the shell size increase a bit, the laser cut panels don't fit 100% perfectly anymore.
- 3D printing the bearing was a bit optimistic. It needed a lot of acetone polishing to let the joystick move somewhat unrestricted. Since only the switches push back the joystick into middle position, the firction has to be as small as possible.
- I originally planned to mount a feather above the disc similar to that in a Competition Pro. This proved to be unfeasible. I redesigned the disc a bit and mounted a small magnet below the bearing but still only the switches push back the joystick.
For the moment, it seems to work good enough. A pragmatic solution would be to put some elastic material between disc and upper panel to increase the push back force.
All files related to this project can be found in the BitBucket
This is a spare time project I did without any commercial interest.
Everything is released under the Creative
Commons CC-BY license.
In a nutshell this means that you can do share, modify and use
everything released under this license even for commercial projects.
You just need to give me appropriate credit, indicate what changes you
made and agree not to try to force a more restrictive license on my
See the CC BY license for details.