Skip to the content
PCBKitNew board
2 layers132.1 × 96.5 mmController2, the printed circuit board in 3D

Custom Gamepad Controller

Size
132.1 × 96.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
38
Nets
41
Pads
174
Tracks, vias
361, 52
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
10 Sep 2026
Updated
10 Sep 2026

Overview

Controller2 is an open-source printed circuit board by Somet647, from the Somet647/Controller repository on GitHub. It is a 2-layer board of 132.1 × 96.5 mm with 38 parts on 41 nets, routed with 361 tracks and 52 vias.

It is built around the ATMEGA32U4-AU. Its parts include 14 switches, 10 capacitors, 6 resistors, 2 connectors and 1 IC. It belongs with the keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

Custom ATmega32U4 USB HID Gamepad

A custom USB gamepad designed and built around an ATmega32U4 microcontroller. This project started as a breadboard prototype using an Arduino and was developed into a standalone custom PCB, combining embedded firmware, digital and analog inputs, USB HID communication, and PCB design.


Features

Hardware & PCB Design

  • Custom ATmega32U4 Design: Designed a standalone gamepad around the ATmega32U4, integrating the microcontroller, clock circuitry, USB interface, programming header, analog inputs, and digital inputs onto a custom PCB.
  • USB-C Interface: Implemented a USB-C device interface with 5.1kΩ CC pull-down resistors, 22Ω D+/D− series resistors, and dedicated power decoupling for reliable communication.
  • Analog Input System: Integrated analog data processing using the ATmega32U4's ADC channels to provide joystick functionality.
  • Power & Decoupling: Distributed the +5V USB supply across the board with local 100nF and bulk 10μF capacitors to reduce noise and add stability.
  • External Clock: Implemented a 16MHz crystal oscillator with 22pF load capacitors to provide the ATmega32U4 with a stable system clock.
  • ISP Programming: Added a dedicated 6-pin AVR ISP header for directly programming the ATmega32U4 on the custom PCB.
  • PCB Layout: Designed the complete schematic and multi-layer PCB layout in KiCad.

Firmware

  • Standalone USB HID: Configured the ATmega32U4 as a USB HID gamepad, providing direct PC compatibility without a secondary USB-to-UART bridge or custom PC software.
  • Analog Input Handling: Used the ATmega32U4's 10-bit ADC to support 2 analog joysticks across 4 axes (X, Y, Rx, Ry).
  • Digital Input Handling: Configured 14 button inputs using the MCU's internal pull-up resistors and active-low logic, eliminating the need for external pull-up components.
  • Low-Latency Input: Sampled button and analog inputs at approximately 100 Hz using a 10 ms control loop for responsive controller input.
  • Input Mapping: Developed a software mapping between the ATmega32U4 GPIO/ADC pins and the corresponding gamepad buttons and analog axes.

Hardware Specifications

ComponentSpecification
MCUATmega32U4
Supply5 V from USB
USB ConnectorUSB-C
USB DataD+ / D− with 22 Ω series resistors
CC Configuration5.1 kΩ pull-downs on CC1/CC2
Digital Inputs14 buttons, internal pull-ups
Analog Inputs4 × 10-bit ADC channels
Analog Controls2 × dual-axis joysticks
System Clock16 MHz external crystal
ISP6-pin AVR ISP header
PCBCustom multi-layer PCB
Design SoftwareKiCad

Repository Structure

text
├── firmware/         # C++ / Arduino controller logic and USB HID descriptors
├── hardware/         # KiCad schematics, PCB board layout, and Gerber manufacturing files
└── README.md         # Project technical summary

Parts

38
QtyValueFootprintReferences
14SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12, SW13, SW14
4100nCapacitor_SMD:C_0805_2012MetricC4, C5, C6, C8
4R_PotentiometerConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalRV1, RV2, RV3, RV4
210kResistor_SMD:R_0805_2012MetricR5, R6
210uCapacitor_SMD:C_0805_2012MetricC7, C9
222Resistor_SMD:R_0805_2012MetricR3, R4
222pCapacitor_SMD:C_0805_2012MetricC2, C3
25.1kResistor_SMD:R_0805_2012MetricR1, R2
10.1uCapacitor_SMD:C_0805_2012MetricC10
116MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
11uCapacitor_SMD:C_0805_2012MetricC1
1ATmega32U4-APackage_QFP:TQFP-44_10x10mm_P0.8mmU1
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ2
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4085J1

Questions

How big is the Controller2 PCB?

It measures 132.1 × 96.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Controller2 use?

38 parts, built around the ATMEGA32U4-AU. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Controller2 KiCad files?

From the Somet647/Controller repository on GitHub, at the commit this page was made from: the board is Hardware/Controller2/Controller2.kicad_pcb and its schematic Hardware/Controller2/Controller2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Controller2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask Somet647 before reusing the design.

Similar boards

  • 2 layers243.2 × 106 mm3W6, the printed circuit board in 3D

    3W6

    weteor/3W6

    a small compact 3x5+3 split ortho keyboard

    113 parts488
  • 2 layers228.4 × 85 mmLeChiffre, the printed circuit board in 3D

    LeChiffre

    tominabox1/Le-Chiffre-Keyboard

    Great thanks goes to Jake at P3D for really making the case amazing and open sourcing his work. Check him out at P3Dstore.com

    105 parts183GPL-3.0
  • 2 layers228.6 × 76.8 mmSchwann Rev0.5b, the printed circuit board in 3D

    Schwann Rev0.5b

    The-Royal/The_Royal_Open-Source-Projects

    A Master Repository For All things Royal Made

    127 parts159MIT
  • 2 layers30 × 65 mmKeyboard mcu, the printed circuit board in 3D

    Keyboard mcu

    dpapavas/lagrange-keyboard

    A configurable, handwired, ergonomic keyboard

    26 parts137AGPL-3.0
  • 2 layers88.4 × 80 mmLHS Controller PCB, the printed circuit board in 3D

    LHS Controller PCB

    dmcke5/ZenDeck

    This is the second revision of my Mini PC based handheld Gaming PC! It is designed for a Beelink SER 5 Mini PC but could be adapted to other systems by changing the mounting brackets and outlet plate.

    76 parts133CERN-OHL-S-2.0
  • 2 layers259.5 × 89.1 mmSteno, the printed circuit board in 3D

    Steno

    crides/steno

    Embedded steno firmware + custom steno PCBs

    61 parts75MIT
  • 2 layers99.1 × 99.1 mmPower supply panelized, the printed circuit board in 3D

    Power supply panelized

    thebiguno/microcontroller-projects

    A home for a bunch of microcontroller projects which don't warrant their own repos.

    223 parts75
  • 2 layers323.9 × 95.1 mmUnSplit, the printed circuit board in 3D

    UnSplit

    swiftrax/UnSplit

    Ergo 40% mechanical keyboard with all components on the top with diodes arranged in an array

    110 parts68GPL-2.0