This is a work in progress; absolutely untested!
The estimated cost per gamepad when a set of five is built, is on the order of USD $2 - $3. The design (both schematic and the board design) are in Public Domain.
The microcontroller used is WCH CH551G, and the board uses 5V logic throughout. All components should be obtainable from LCSC, and the board is 98mm × 48mm, for manufacturing at JLCPCB.
There are 12 normal buttons: two sets of four 12mm buttons, and two sets of two 6mm buttons. These are in a 4×3 matrix with dual Schottky diodes, so each button state is detected separately, regardless of the states of the other buttons. The pads are connected diagonally, so any 4-pin buttons of the correct size (12mm×12mm and 6mm×6mm) can be used. The bill of materials (BOM) does NOT include the button caps for the eight 12mm buttons.
Near the bottom edge of the board, there are two optional buttons, for reset and programming, respectively. These can be omitted. (The reset button needs to be pressed, or the two diagonal pads shorted, when plugging the gamepad, to enable programming over USB.)
There are five through-hole pads at the bottom of the board. These provide 5V MOSI, SCK, and Data/Command pins for display modules. An optional upper board with the same dimensions can be used as the top surface, and that can contain necessary voltage conversion and buffering (to 3.0V for OLED displays, for example) and the display panel, with holes for the tactile buttons' caps to poke through. (Note: You'll want to use 6mm buttons with longer stems than the ones in the BOM. The optional reset and programming buttons should be hidden underneath the upper board, with just holes to poke the buttons with a paperclip or similar.) The four holes in the board are intended for standoffs between the two boards. The regions marked with small silkscreened circles on both sides of the board are for additional supports; it is safe to drill a small hole inside these circles.
Alternatively, one can 3D print a shell for the gamepad. The board shape is an oval, formed by two Ø48mm circles 50mm apart. There is clearance at the outer edge of the board for a clamshell to clip to, so that four screws (through the four holes) clamp the two sides together robustly. I recommend using the silkscreen-circled areas for support stems to the shell.
In case the CH551G pins are output-high at bootup, the pins are protected by the Schottky diodes (outputs OUTA-OUTD) and by 10 kOhm current-limiting resistors (inputs IN1-IN3). The inputs also have 100 kOhm pull-down resistors. Debouncing will be done in software. This should make the design rather robust against programming errors. There is no protection against USB issues, though; it is cheaper to replace the microcontroller than add protection against USB voltage spikes.
|ID||Name||Designator||Footprint||Quantity||BOM_Manufacturer Part||BOM_Manufacturer||BOM_Supplier||BOM_Supplier Part|
|1||U-F-F5DD-Y-L2||USB1||MICRO-USB-SMD_U-F-F5DD-Y-L2||1||U-F-F5DD-Y-L2||Korean Hroparts Elec||LCSC||C283552|