Custom Keypad

A custom keypad with 6 keys and a volume knob.

This project is a custom keypad that allows for six customizable keys (in embedded software) and a volume knob that can send volume up, volume down, and volume mute commands.

This device utilizes the USB HID device interface and custom HID report using Consumer + Keyboard HID reports to allow me to send both media commands such as volume control and play/pause and regular keyboard commands. I also utilized the EXTI pin interrupt system and a quadrature decoder to decode the rotary encoder to ensure proper volume control.

I modeled the circuitry and designed the PCB in KiCAD after prototyping and selecting the individual components. I also solderered some of the components onto the board, programmed the firmware onto the microcontroller, and modeled the case in Fusion 360 and 3D printed it with black PLA filament.

The Fully Assembled PCB:

An image of a pcb of a keypad device.

The drive is controlled by a STM32H7 microcontroller, utilizing Cherry MX brown switches and non-descript black keycaps for the keys, a rotary encoder and knurled black knob for the volume knob, and a usb-c connector for a wide-spread connectivity standard to the device.

I programmed the keys on the device to be bound to rewind, play/pause, and skip for the top row to provide media commands, and space, x, and z on the bottom row for osu! functionality.

The Device:

An image of a keypad device.

The source code, CAD models of the casing, and the schematics and PCB design can be found here.

Back