Back to Jobs

Multiple custom PCBs for specially designed arduino based arcade stick

Remote, USA Full-time Posted 2025-11-03
I have been programming my own arcade stick style videogame controller using an Arduino Leonardo. My code successfully functions as intended testing each of the parts in isolation, now all that's left is to put it all together so I can test everything at once. What's special about my design is that it incorporates a simultaneous analog and digital arcade lever. By using a Ginfull hall-effect thumbstick module, with a custom designed arcade balltop style stickcap, that is designed to actuate 4 clicky mechanical keyboard switches. In addition a female PS/2 port is also connected directly to the Arduino, allowing an arcade style PS/2 trackball to be connected and function primarily as the right analog stick (though all the outputs are remap-able with toggle switches), for more precise mouse-like movement in first-person games. There are 8 primary action buttons arranged in a Viewlix style layout, as well as a row of 10 function keys for toggling things like turbo, auto-holding buttons down, and rebinding, as well as the Start and Select buttons. To the left of the lever is a set of 4 arrow keys which default as the d-pad, and 2 adjacent keys akin to shift and Space-bar in position. Surrounding the trackball on 4 corners are a set of keyswitches designed to be easier to reach while aiming with the trackball. In total there are 33 keyboard switches, the 4 for the lever are clicky, and the rest are all linear. the 4 clicky switches must be mounted perpendicular to the surface of the device, facing inward toward the analog stick. To be able to fit this many switches I have connected 2 PCF8575 GPIO expansion modules to the Leonardo, each at a different I2C address I have already tried putting everything together at once myself using a breadboard, but the noise is interfering with the analog stick signal. Bottom line is I already have all the parts, and am willing to handle getting these PCBs fabricated on my own. the only thing I'm looking for here is for someone to design all the files for me so that I can more easily put it all together. Now this device is pretty big, imagine a box that sits on your lap. where you let your wrists rest naturally over top of it. So I think the best approach going forward will be to design several PCBs split up and placed across the underside of the top panel of the chassis to keep manufacturing costs down 1 for the cluster of arrow keys 2 single switch PCBs for the shift and Space-bar keys 1 row of 10 function keys for all the extra features and customization options I've added. 1 for the 8 button Viewlix layout cluster ( I say button but again to be clear these are mechanical keyboard switches with 30 mm arcade button style keycaps) 2 for each pair of the 4 corner switches around the trackball. 1 for the top 2, and one for the bottom 2 That's 7 PCBS Plus one "mainboard" PCB that must connect everything together. Here is where I expect to be able to: Snap in the Arduino Leonardo and have its power, and GND lines split up appropriately, as well as its SDA and SCL lines fed into the expansion modules Snap in the PCF8575 expansion modules. Note I will be soldering the pin headers on these upside-down. So that i will be able to snap the modules in on top of the board and still clearly see each of the pin labels. And finally this is also where I will connect my PS/2 port. It must be fed 3.3v power from the Leonardo to prevent interference with the analog stick and PCF8575 GPIO expansion modules. I am currently using a breakout board with screw terminals https://tinyurl.com/bt84sehf, but I think throughholes for soldering a bare port would be acceptable. As long as CLK goes straight to the Arduino on pin 7, and DAT goes to pin 8, on the screw-terminal breakout those are pins "6" and "2" for CLK and DAT. Everything else as far as I can tell should share a common GND with the Arduino (GND on the PS/2 breakout is pin 4) One quick note on pin-outs, as I've said before, the PS/2 port will be powered from the 3v3 line of the Arduino Leonardo (pin "3" of my screw terminal breakout), while everything else such as the analog stick and expansion modules can be powered from 5v. No external power supply is used, only the Arduino Leonardo's mini usb cable is used for power. The pins labelled less than 100 (10-13, 7 and 8) correspond to the GPIO pins directly available on the Leonardo itself. The pins over 100 correspond to the first PCF8575 GPIO expansion module on I2C address 0x20. The pins over 200 correspond to the pins on the second module at I2C address 0x24. These are the modules I'm using https://www.amazon.com/ACEIRMC-PCF8575-Expander-Extension-Arduino/dp/B0B3TG6FLF?th=1 and note that for pins labelled P10-P17, in my code I have found that these actually correspond to pins 108-115 for the module on address 0x20 and 208-215 on the module at address 0x24 respectively. The circular hole on the left represents where the analog stick goes. I'm using this module https://tinyurl.com/ymez7ojw, with this breakout pcb https://tinyurl.com/yv2y2wt7, the reason pin 108 is floating in the middle of this hole is because that pin is used for the L3 button, which I would like to have correspond to the clicking of the analog stick's internal tact switch, making it effectively the 33rd switch, counting all the rest alone nets only 32. The 4 pins surrounding it are the clicky lever switches. And that big square hole on the right represents where the ball of the PS/2 trackball will poke through so the user can spin it while the rest of it sits underneath, I will likely have it replaced with a circular hole later at some point but that's beyond the scope of this post which is just for those 8 PCBs. Which again only really need to function as wiring. The only component I might want built into the boards would be the hotswapable MX profile keyswitch sockets (something like these https://tinyurl.com/vcj8ufdd) but I probably want to solder those myself. Apply tot his job Apply To this Job

Similar Jobs