Matrix Hexpansion v2 (lite)
Status: designed and ordered but not yet assembled, tested, or linked to a badge app.
A versatile hexpansion breakout and co-processor board for prototyping or controlling many LEDs very cheaply.
This is the second and current version (see overview and comparison) marked v2 lite. Note the layout of the pads is not compatible with the v1 prototype.
BOM
- v2 lite
2026-04-22: 1mm, ENIG, purple
Examples
Usage (with the generic badge app)
Status: badge software to be developed
Source files, pinout, and making a daughter board
Status: schematics and example boards will be published once the prototypes are confirmed working!
A daughter board for the matrix hexpansion does not need to be expensive: five copies of a typical board can be procured from regular PCB houses for about £5 (shipped). Unlike a regular hexpansion PCB, this does not need an edge connector or the more expensive ENIG coating. Of course, you still have to assemble it with your choice of size and count of LEDs (or pay for PCBA).
It must have space for the parent board footprint to be placed. The SMD version has pads on the bottom of the daughter board only and but may require a hot air rework tool and solder paste for assembly; there also is a through hole version for assembly with a regular soldering iron, the latter is also compatible with standard 2.54mm pin headers.
Example schematics for the charlie-plex wiring are provided for two different matrix layout options. The first joint-matrix example can drive 156 LEDs in 13 columns (with reduced brightness and refresh rate). The second dual-matrix has 72 LEDs in individual matrics of 7 and 6 columns (where most of the time, two columns are active at once).
In both cases, 13 resistors (one per GPIO pin or column) are required. Ideally, all LEDs should be the same colour to get more or less uniform brightness across the matrix. With the dual-matrix approach two colours may be used with different resistors on each set of column pins. However, brightness will also slightly reduce as more LEDs per column are active because the output voltage on the GPIO pins drops with higher current draw.

Pinout
There are three rows of 13 rectangular pads with 2.54mm spacing and 1.5mm round holes; the holes are larger than usual to facilitate soldering from the bottom side to another PCB to be placed on top of this one. Silkscreen labels mark the purpose of each pad, with the inverted labels indicating pins from the hexpansion connector, and the other pins being directly connected to the co-processor GPIO pins.
| LSA | PC0 | PC1 (SDA) | PC2 (SCL) | PC3 | PC4 | PC5 | PC6 | PC7 | PA1 (LED) | 3V3 | ||||
| LSB | PD0 | PD1 (SWDIO) | PD2 | PD3 | PD4 | PD5 | PD6 | PD7 (NRST) | PA2 (Config) | GND | ||||
| LSC | LSD | 3V3 | GND | LSE | HSF | HSG | SDA | SDA | HSH | HSI |
The first two rows contain all the GPIO and power pins for the co-processor and two low-speed badge pins. Perhaps excluding the two outer columns, this is expected to be used for boards that mainly display a matrix. This requires about 40×10mm of space at the top edge of the daughter board.
The third row has the remaining badge pins (four further low-speed GPIOs, all four high-speed GPIOs, power, and the I2C data and clock lines). It is intended for more general prototyping and can be used even if this board is not populated with a co-processor.
Special pins
There are some GPIO pins that can not be used as matrix outputs, leaving 13 that can (including PD7 unless used for badge interrupts). There are solder jumpers on the back of the board for these where it may make sense to disconnect them from their special use.
- The PC1 and PC2 I2C data and clock pins are connected via jumpers to the hexpansion connector and pull-up resistors R3 and R4. Remove the jumpers if you do not want the processor to communicate with the badge.
- PD1 is the SWIO programming pin and cannot be used as a GPIO; optionally this can also be connected to HSF (unlikely to be useful, unless you want to try your hand at making the badge into something like the esp32-s2-funprog).
- PD7 is the reset pin but is usually configured as a GPIO via user option bytes. NRST is not needed for programming. This pin can optionally be connected to HSF if you need to send interrupt flags to the badge.
- PA1 drives the on-board LED D2; break the jumper to use if for something else.
- PA2 can be pulled to GND with a solder jumper and should be set as an input with internal pull-up if used for assembly-time configuration.