Matrix Hexpansion

This is a hexpansion for controlling a large number of LEDs on a secondary board with charlie-plexing, with the second version also serving as a generic breakout board for a CH32V003/006 processor and the hexpansion connector.

→ see Matrix Hexpansion v2 (lite) for the current board.

The matrix output pins (and GPIO, data, and power pins in v2) are brought out as large through hole pads with 2.54mm spacing. This allows a second, much cheaper, board to be grafted onto this one. I hope this lowers the bar of entry to making (LED matrix or not!) hexpansion boards: those secondary boards do not require the expensive ENIG surface, or necessarily the soldering of tiny SMD parts.

For more details and examples: see the version 1 prototype (for reference) or version 2 lite (current) guides.

v1 prototype v2 lite
IS31FL3731 LED driver 144 (2×9×8)
optional, cannot be fitted when the GPIO matrix outputs are used
-
CH32V003 processor 110 (11×10), or
50 (6×5+5×4)
Reduced from 156/72 as two of the resistors clash with badge standoffs and cannot be used.
156 (13×12), or
72 (7×6+6×5)
CH32V006 processor
Resistors on GPIO pins Yes No, resistors must be provided on daughter boards.
Fits over USB ports Only fits over low profile connectors Yes
Daughter board connection 18 matrix outputs (11 usable with GPIO pins, 18 with dedicated driver), in two rows. All CH32V003 GPIO pins (13 usable for matrix outputs), and all badge connector pins, in three rows.
Dimensions 36.65 (W)×33.75mm (H, including hexpansion connector) 40 (W)×36mm (H, including hexpansion connector)
Other connections SMD pads for power, I2C, programming.
SMD pads for LED driver Audio In and Standby.
Through-hole pads with 2.54mm spacing for power, I2C, and programming.

Updates

May, 2026

The prototype boards arrived. Unfortunately JLC missed the V-Cuts because by default kikit does not put them in the Edge.cuts layer (because that breaks KiCad's preview rendering). It's a bit annoying but the panels are easy enough to cut apart with a wire cutter (I'm doing this inside a bag to avoid injury from sharp pieces going flying). I've hand assembled the CH32V003 part of the main board and two of the subway daughterboards.

As this was a version-1 prototype, unfortunately there were a few issues. The connections to the daughter board didn't all work on the first attempt using a soldering iron, but were better when using solder paste and a hot air tool. I think I've also had some bridging on the microcontroller pins as some of the columns don't light up or light up multiple at once. Finally, the outermost resistors on the bottom clash with the mounting screw stand-offs on the badge. I haven't tried assembling the big-loop example yet, and I only have one 3731 driver that I haven't yet tried to solder. But they are also quite expensive, so instead of a straight-up v2 I will first make a lite board that only uses the CH32V003/006, leaves the resistors to the daughter board, and doesn't have any components on the back.

I started this lite board and an equivalent loop daughter board. It doesn't feel so lite if it means assembling 936 LEDs to make a full loop. I'm also adding a third row of connecting pads to expose all of the Badge GPIO pins and power so it can be more generally useful for prototyping with.

April, 2026

Initial concept, designed and ordered the main board (ENIG panel) and the first two daughter boards.