All
SOLID MODELSingle Board Computers (SBCs)9-Jun-2026

PicoKeys - Raspberry Pi Pico MIDI Keyboard

matthewleekr1
matthewleekr1
14 Files
step, stl Formats

Description

PicoKeys

Raspberry Pi Pico 2 USB MIDI Keyboard

Hello! This is Matthew from Canada.

I am currently a Grade 12 student, and I started this project as my engineering final project. After finding the Pico Builders Challenge, I thought it would be a fun idea to take the project further and submit it here as well.

PicoKeys is a compact USB MIDI controller built with the Raspberry Pi Pico 2. It includes 25 keyboard keys and 8 arcade-button drum pads. The keyboard covers two octaves plus one extra C, and the drum pads are mapped to common drum sounds such as kick, snare, hi-hats, crash, ride, and toms.

The keyboard uses a 5×5 diode matrix, while the drum pads use a separate 2×4 diode matrix. The Pico 2 runs an Arduino IDE firmware sketch and appears as a USB MIDI device when connected to a computer.

I designed the case, key layout, switch mounts, button panel, keycaps, and assembly structure to be 3D printable. Preparing this project for the challenge was really fun and meaningful because it let me combine CAD modeling, electronics, soldering, firmware, and music into one project.

Video

https://youtu.be/phN-4s52sR4

(Sorry I am really new to piano! 😅😅 Also, you can bind any instruments on the drumpads.)

Features

* Raspberry Pi Pico 2 based USB MIDI controller

* 25-key keyboard layout, covering two octaves plus one extra C

* 8 arcade-button drum pads

* 5×5 keyboard diode matrix

* 2×4 drum pad diode matrix

* Arduino IDE firmware included (You will need to download MIDI Library to use it)

Bill of Materials (BOM)

Electronics

* Raspberry Pi Pico 2 × 1

* Mechanical key switches × 25

* Arcade buttons × 8

* 1N4148 diodes × 33

* Wire

* Solder

* USB data cable × 1

3D Printed Parts

* Main case parts × 1 set

* Bottom panels × 1 set

* Side panels × 1 set

* Switch mounts × 1 set

* Button panel × 1

* Keycaps × 25 (Keys.zip file)

* Alignment pins × 3

* Bindings × 1 set

* Pico pin covers × 4

Hardware

* 3.5 mm screws × 8

* Glue, optional

BOM Notes

* The 1N4148 diodes are used to prevent ghosting in the keyboard and drum pad matrices.

* The keyboard uses a 5×5 diode matrix.

* The drum pads use a separate 2×4 diode matrix.

* A data-capable USB cable is required for programming and USB MIDI use.

* Glue is optional and only needed if the printed panels fit loosely.

* I used Outemu Red Cherry MX-compatible switches for the keyboard.

Included Files

* STL files for the printed parts

* STEP source files

* Assembly Guide PDF

* Circuit schematic PNG

* Arduino IDE firmware sketch

Notes

* Keys in the same position across octaves use the same model. For example, the C key in the first octave and the C key in the second octave are identical in size and shape.

* The sharp keys are also identical to each other, so you can import one sharp key model and duplicate it 10 times.

Downloads

PicoKeys.step
2.3 MB
Main_case_L.stl
130.3 KB
Main_case_R.stl
132.8 KB
Bottom_panel_L.stl
20.2 KB
Bottom_panel_R.stl
76.4 KB
Side_panel_L.stl
5.6 KB
Side_panel_R.stl
5.6 KB
Switch_mount_L.stl
78.0 KB
Switch_mount_R.stl
96.2 KB
Button_panel.stl
78.8 KB
Alignment_pin.stl
4.6 KB
Binding_1.stl
5.2 KB
Binding_2.stl
4.0 KB
Pico_pin_cover.stl
9.3 KB