@

Xiao-Ukulele

Xiao-Ukulele controller

A compact MIDI and HID instrument interface using XIAO RP2040, a 3x3 key matrix, capacitive touch pads, and NeoPixel feedback.

Fabrication Files

Xiao-Ukulele PCB overview

PCB Overview

Trace export placeholder

Trace Export (pending)

Cut export placeholder

Cut Export (pending)

Bill of Materials (BOM)

Core parts used in the Xiao-Ukulele build.

Item # Ref. Comp # Description Package Link
1 U1 XIAO RP2040 Main microcontroller board Seeed module Seeed
2 K1-K9 MX switches 3x3 key matrix for note/command input Through-hole -
3 TP1-TP4 Touch pads Capacitive pads for string-like interactions PCB pads -
4 LED1 WS2812 strip 7-LED RGB strip for state feedback Addressable LEDs Adafruit

Assembly

Assembly starts with soldering low-profile components and matrix routing first, followed by the XIAO headers and NeoPixel strip connection.

After soldering, check continuity row-by-row and column-by-column for the key matrix and validate touch-pad isolation before powering the board.

Programming Process

The firmware supports multiple interaction modes including MIDI chord output and HID keyboard behavior. The XIAO RP2040 can be flashed via CircuitPython or Arduino depending on the build you want to run.

Capacitive thresholds were tuned using step-response readings so each string pad remains responsive without accidental triggering.

Project Demo

Xiao-Ukulele demo animation

Example Code (CircuitPython)

CircuitPython

import board
import digitalio
import time

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = True
    time.sleep(0.2)
    led.value = False
    time.sleep(0.2)