Ongeki Style Controller
Go to file
2024-11-23 17:31:18 +08:00
cad PCB - a dirty start 2024-09-04 00:08:31 +08:00
doc Rename shaft to rotator 2024-11-23 17:31:18 +08:00
firmware Dual sensor mode optimization and doc 2024-11-07 07:14:30 +08:00
PCB PCB v1.4 supports dual ToF 2024-11-05 18:37:30 +08:00
Production Better lever slots and button holes 2024-11-18 12:36:52 +08:00
.gitignore gitignore update 2023-09-29 20:22:33 +08:00
.gitmodules AIC submodule included 2024-09-15 22:08:02 +08:00
README_CN.md Rename shaft to rotator 2024-11-23 17:31:18 +08:00
README.md Rename shaft to rotator 2024-11-23 17:31:18 +08:00

Geki Pico - ONGEKI Style Mini Controller

点这里可以切换到中文版

Features:

  • It's small but closely replicates the feel of the arcade controller.
  • Smooth lever action with adjustable resistance.
  • Air WAD with sound feedback.
  • IO4 emulation.
  • Built-in AIME card reader.
  • Command line for configurations.
  • All source files open.

Thanks to many respectful guys/companies who made their tools or materials free or open source (KiCad, OnShape, InkScape, Raspberry things).

Special thanks to community projects and developers.

My Other Projects

You can check out my other cool projects.

Disclaimer

I made this project in my personal time with no financial benefit or sponsorship. I will continue to improve the project. I have done my best to ensure that everything is accurate and functional, there's always a chance that mistakes may occur. I cannot be held responsible for any loss of your time or money that may result from using this open source project. Thank you for your understanding.

About the License

It's CC-NC. So DIY for yourself and for your friend, don't make money from it. And plagiarism that doesnt even dare to mention the original author is not acceptable. Plase note that pooling orders and group buying for raw materials is acceptable. Selling off any leftover components without profit is also acceptable.

If you're interested in buying from me or some kind of commercial use, please contact me (Discord, QQ group, Wechat group or leave your contact in issue section).

My Discord Invitation

https://discord.gg/M8f2PPQFEA

HOW TO BUILD

PCB and Components

3D Printing

  • Printing parameters
    • PLA or PETG.
    • Layer height: 0.2mm
    • Support: Yes, always.

Lever Parts

  • Lever Base: Production\3DPrint\geki_pico_lever_base.stl, white.
  • Lever Rotator: Production\3DPrint\geki_pico_lever_rotator_*mm.stl, white, choose the one that matches your magnet diameter.
  • 2x Lever Fixer: Production\3DPrint\geki_pico_lever_fixer.stl, white.
  • Lever Handle: Production\3DPrint\geki_pico_lever_handle.stl, red.

Housing Parts

You need to rotate 135 degrees on Z axis to fit the bed.

  • Housing Bottom: Production\3DPrint\geki_pico_bottom.stl, I chose sakura pink, what's your choice?
  • Housing Support: Production\3DPrint\geki_pico_support_*.stl, semi-transparent. Choose the one that matches your ToF sensor configuration.
  • Housing Top: Production\3DPrint\geki_pico_top.*, white. If you have multi-color printing equipment and skill, use the 3mf one (button outlines and logo are black).

Button Caps

  • 6x Main Button Cap: Production\3DPrint\geki_pico_button_main_choc_*.stl, white, print up-side down so you get nice button surface and stem. Choc v1 and v2 are different, choose the right one.
  • 2x Aux Button Cap: Production\3DPrint\geki_pico_button_aux.stl, semi-transparent, print up-side down.

Lever

  • Required components
  • Assemble Steps
    1. Print out the parts.
    2. Stick PTFE/UHMW tape to the sliding surfaces of the fixer and the rotator. Then trim the tape to match the surface shape. If you have some damping grease (medium or medium-high stickiness), apply a tiny bit on the sliding surfaces. Turn the M2*6mm screws into the bearing fixers halfway, dont and never tighten them.
    3. Install the 2 bearings on both sides of the rotator and put it in the base, then use M2*16mm screws to fix the two bearing fixers on the base.
    4. Use some instant glue to stick the magnet to the bottom of the rotator. Make sure the poles are placed horizontally. A little trick is you connect several magnets together and draw a line to cross all the magnets, and then you know the poles.
    5. Install the lever handle onto the double-ended stud screw, put aside. Later when the housing is ready we need to screw it into the lever rotator.

Assembly

  • Other components needed

    • 4x M3*8mm regular screws for fixing the lever to the bottom.
    • 8x M3*16mm regular screws for the housing.
    • Some VHB double-sided tape to fix the speakers and the ToF sensors.
    • Some thin soft wires for the speakers and the ToF sensors.
  • Steps

    1. Install the lever to the bottom part, using M3*8mm screws.
    2. Wire (solder) the ToF sensors to the main PCB, each needs 4 wires.
      If you're using an older PCB that only supports one sensor on each side, you can manually wire the secondary sensor. The secondary sensor uses the same SDA, SCL and GND pins as the primary sensor, but the VCC pin should be directly connected to the pins of the Pico, GP7 is for the right secondary sensor, GP9 is for the left secondary sensor.
    3. Use VHB tape to fix the ToF sensors on the ToF seats on the bottom part.
    4. Wire (solder) the speakers to the main PCB, each needs 2 wires.
    5. Use VHB tape to fix the speakers on the floor of the bottom part.
    6. Install the main PCB to the bottom part, no screws needed.
    7. Bend the hall-effect sensor (SS49E) so it stays on top of the lever magnets. Remember to leave a tiny gap so the rotator can move freely.
    8. Solder the PN532 module, 8002A modules to the main PCB if you haven't done it yet.
    9. Install the main button caps and the aux button caps onto the switches.
    10. Now it looks like this. Please note that in the picture it is the PCB v1. I've done some optimizations in the later version.
    11. Now it's the perfect chance to adjust the lever resistance. Slowly and gently turn the M2 screws to adjust the tension on the sliding surface. You may need to turn all the screws evenly.
    12. Put the support part on the bottom part, then put the top part on the support part.
    13. Align these parts and use M3*20mm screws to fix them together. You may need to carefully adjust the position of the ToF sensors so the IR cover (or the tiny sensor chip) fit into the windows on the support part.
    14. Finally screw the lever handle into the lever rotator.

Firmware

  • UF2 file is in Production\Firmware folder.
  • For the new build, hold the BOOTSEL button while connect the USB to a PC, there will be a disk named "RPI-RP2" showed up. Drag the UF2 firmware binary file into it. That's it. There's a small hole at the bottom side of the Geki Pico, it is facing right to the BOOTSEL button.
  • If it's already running Geki Pico firmware, you can either use "update" in command line or hold down at least 4 buttons while connecting to USB to enter update mode.
  • To access the command line, you can use this Web Serial Terminal to connect to the USB serial port of the Geki Pico. (Note: "?" is for help)
    https://googlechromelabs.github.io/serial-terminal/

Usage

  • You need to calibrate the lever by "lever calibrate" command after you flash the firmware.
  • If you feel the lever direction is in correct, you can use "lever invert <on|off>" command to change it.
  • Volume of sound feedback can be set by "volume <0~255>" command.
  • ToF sensors have triggering zones, the purple zones are for the WAD, the orange zone is for SHIFT.
  • To emulate IO4 TEST/SERVICE/COIN, you can put your hand in SHIFT zone. When you see the WAD lights flashing, the AUX buttons become TEST and SERVICE, and swinging the lever for "INSERT COINS".
  • AIME is on a secondary COM port. You can set mode or toggle virtual AIC function.
  • ToF mixing algorithms in dual sensor each side configuration.
    • primary and secondary: always use primary or secondary sensor, fallback to the other one if the chosen one has no reading, strict option means no fallback.
    • max and min: use the larger or smaller reading of the two sensors, strict option means if one sensor has no reading, result will be no reading.
    • average: use the average of the two sensors, window option means readings from both sensors must be within a certain range, otherwise result will be no reading. window set to 0 means no range check.
  • You can set trigger window for left WAD, right WAD and shift by tof trigger <left|right|shift> ... command. The window is in millimeters. In is the window to trigger, out is the window to release.
  • You can use tof diagnose [on|off] command to toggle diagnose mode. In diagnose mode, the ToF sensor will continuously print the raw distance data from all sensors. It's useful for diagnostics.

CAD Source File

I'm using OnShape free subscription. It's powerful but it can't archive original designs to local, so I can only share the link here. STL/DXF/DWG files are exported from this online document.
https://cad.onshape.com/documents/eb38f3add988969c42b50060/w/86bcbeae8562f01c1a81c53e/e/feecb6f371a076c968584d3c