PM_K‑1 Kit
Build it yourself: a Raspberry Pi Pico on the 52Pi breadboard kit becomes a touchscreen polymeter metronome — same engine, same program strings, with MicroPython firmware you flash in two minutes.
What it is
This is the first member of the family you can actually build today from off‑the‑shelf parts: a Raspberry Pi Pico seated on the 52Pi EP‑0172 "Pico Breadboard Kit Plus", which carries a 3.5″ ST7796 320×480 capacitive‑touch screen (GT911), a PSP joystick, a WS2812 RGB LED, a buzzer and two buttons — all pre‑wired, so you don't solder anything; you just seat the Pico and copy one file onto it.
It runs the same polymeter engine and the same program strings as the web editor: design a
groove on the site, copy its program string into the firmware's PROGRAMS list, and it plays on
the device. Tap the screen, nudge tempo with the joystick; the RGB flashes each beat (amber accent / cyan
normal / violet ghost) and the buzzer clicks. Powered over the Pico's USB.
Wiring — the EP‑0172 fixed pinout (Raspberry Pi Pico)
Everything is wired on the board; this is just what the firmware drives. No breadboarding required.
| Component | Raspberry Pi Pico pins |
|---|---|
| Display — 3.5″ ST7796, 320×480 (SPI0) | |
| SCK / MOSI | GP2 / GP3 |
| CS / DC / RST | GP5 / GP6 / GP7 |
| Touch — GT911 capacitive (I2C0) | |
| SDA / SCL — addr 0x5D | GP8 / GP9 |
| Controls & feedback | |
| PSP joystick X / Y | ADC0 (GP26) / ADC1 (GP27) |
| Button A (play/stop) / Button B (tap) | GP15 / GP14 |
| WS2812 RGB LED | GP12 |
| Buzzer | GP13 |
Parts
An off‑the‑shelf kit, not a custom board — ballpark one‑off prices (USD).
| Part | Qty | ~$ |
|---|---|---|
| Raspberry Pi Pico (or Pico W / Pico 2) — the brain | 1 | 5 |
| 52Pi EP‑0172 "Pico Breadboard Kit Plus" — 3.5″ ST7796 cap‑touch, GT911, PSP joystick, WS2812 RGB, buzzer, 2 buttons, breadboard, acrylic panel | 1 | 38 |
| USB cable — power + flashing | 1 | 2 |
| Total (one‑off) | ≈ $45 |
Reference: 52Pi EP‑0172 wiki · vendor code. Lots may ship the screen as ST7796 (320×480) — this build targets that.
Firmware — flash it in two minutes
Download main.py ↓ Source + README ↗
Two separate steps — and main.py is not a drag‑and‑drop file. The
RPI‑RP2 drive only accepts a .uf2 firmware file; a .py copied there is
discarded on reboot. You drag‑and‑drop the firmware once, then copy main.py over USB serial.
- Install MicroPython (drag‑and‑drop, one time): hold BOOTSEL, plug the Pico into USB, and drop
the MicroPython
.uf2onto theRPI‑RP2drive (Pico / Pico 2). It reboots on its own and the drive disappears — that's correct. - Copy
main.py(the Pico is no longer a USB drive, so use a serial tool): in Thonny pick the interpreter MicroPython (Raspberry Pi Pico), then File ▸ Save as ▸ Raspberry Pi Pico asmain.py; ormpremote cp main.py :main.py. - Reset — it boots straight into the metronome.
- Add your own grooves by pasting program strings from the editor into the
PROGRAMSlist at the top ofmain.py. If colours, touch, or the joystick look off, flip a flag in theCONFIGblock (see the README's calibration notes).
It's one self‑contained file — the ST7796 driver, GT911 touch, WS2812 RGB, buzzer and the polymeter engine, no external libraries.
CircuitPython edition — USB drive + editor (experimental)
An alternative firmware that makes the Pico mount as a USB drive carrying the
firmware, your tracks (programs.json) and a copy of this editor — design grooves on the
web and write them straight to the device, no Thonny. A full lanes/pads display with anti‑aliased
text drives the touchscreen. The MicroPython firmware above stays the simple, rock‑solid option.
(USB‑MIDI audio out to your computer's speakers is the next step.)
Download CircuitPython bundle ↓ Source + README ↗
- Flash CircuitPython (raspberry_pi_pico)
via BOOTSEL → the
CIRCUITPYdrive appears. - Unzip the bundle onto
CIRCUITPY(it's a normal drive — just drag everything on). It runs on boot. - Reprogram it from the web: build a set list in the editor, then the
set‑list ⋯ menu → 📟 Save to device → pick the
CIRCUITPYdrive. The Pico auto‑reloads with your grooves. (In Chrome/Edge it writes straight to the drive; otherwise it downloadsprograms.jsonto drag on.) 📥 Load from device reads it back.
Embed this widget elsewhere with one <div> + a script —
see the embed docs.