This is an old revision of the document!
This project demonstrates an implementation of a game piece set inspired by the popular Rummikub, the main distinction and starting point being the ability to reprogram the pieces (for example, for quick shuffling, or to use the pieces for other games).
The project contains two main types of hardware modules: the reprogramming board and the pieces themselves. The pieces are placed on the board in up to 15 stacks, with electrical connections made through magnetic pogo connectors (both between any two pieces and for piece-to-base links). When the pieces are placed correctly, the reprogramming function can be activated. The pieces contain no batteries or other components requiring periodic maintenance, as the displays used retain their state long-term in the absence of power. The board receives power via USB-C at 5V.
For practical reasons, the number of pieces to assemble is one suited to a demo, sufficient to demonstrate the connectivity and communication mechanisms. Even so, the design was conceived to work for a large number of pieces (100+), which among other things motivated the power supply approach.
The essential characteristics of the presented implementation are:
* Efficiency of the reprogramming process - the entire process takes under 30 seconds, independent of the number of pieces * Visual detail - the displays used on the pieces are multicolored (4 colors), with a DPI of 210 * Spatial efficiency - for reprogramming, the pieces are placed in stacks of 7+ pieces (configurable via software), with the entire assembly usable on a small surface area * Autonomy and longevity - there are no batteries, and the electronic components do not wear out quickly * Pieces use a custom-made PCB designed to minimize their footprint * The pieces stack easily on top of one another, each connector being magnetic and contributing to alignment and stability
Essentially, this is my attempt at trying to get the best of both worlds - the simplicity of a physical piece set with the software-driven freedom of general purpose displays.
A USB-C breakout board powers both the Raspberry Pi Pico 2W, and a step-down regulator that provides the 3.3V power rail (the Pico's internal 3.3V output is unused).
As part of the piece programming protocol, the stacks must be turned on in prefix sequence (stack 1, stacks 1 and 2, …). For this, two chained 8-bit serial-parallel registers feed gate inputs of 15 P-channel MOSFETs, one per piece stack.
Two data signals (DATA, LATCH) are shared across all stacks simultaneously. Each stack is connected to the base board by a 4-pin magnetic pogo connector pair, the other 2 lines serving to power the pieces. The DATA UART line is daisy-chained up the stack through each piece, while LATCH is shared and provides simple signals.
The ATtiny404 listens and forwards on the DATA lines while waiting for signals on LATCH.
The E-Paper display is configured and updated via unidirectional SPI, provides output signals via dedicated pins.
Certain pins are exposed through a 2×3 pin header unpopulated footprint on the PCB, intended to be accessed through a pogo pin clip. Most importantly, these allow firmware flashing through UPDI, while also providing debugging utility.
TODO: software
Per-piece components:
| Qty | Manufacturer | Name | Description/Purpose |
|---|---|---|---|
| 1 | Microchip | ATtiny404 | MCU |
| 1 | GoodDisplay | GDEM0097F51 | E-Paper display |
| 1 | RTLECS | MG0425BE | Magnetic Pogo Connector (M/F pair) |
| 1 | generic | 100nF MLCC | MCU decoupling |
| 1 | Jushuo | AFC24-S18FIA-HF | Display FPC Connector Assembly |
| 3 | generic | 470 resistor | Series Termination |
| 1 | generic | 10K resistor | Pull-up |
| 3 | JSCJ | MBR0530 | Display Charge Pump |
| 1 | Vishay | SI1308EDL-T1-GE3 | Display Charge Pump |
| 1 | Taiyo Yuden | NR3015T100M | Display Charge Pump |
| 7 | generic | 4.7uF/25V MLCC | Display Charge Pump |
| 3 | generic | 1uF/50V MLCC | Display Charge Pump |
| 1 | generic | 2.2 resistor | Display Charge Pump |
Base plate components:
| Qty | Manufacturer | Name | Description/Purpose |
|---|---|---|---|
| 1 | Raspberry Pi | RPi Pico 2W | MCU Dev Board |
| 1 | GroundStudio | USB-C Module | USB-C Breakout Board |
| 2 | TI | SN74HC595 | 8-bit Shift Register |
| 1 | Pololu | D36V28F3 | 3.3V 3.6A Step-Down Regulator |
| 2 | generic | 100nF MLCC | Shift Register Decoupling |
| 3 | generic | 100nF capacitor | Stack Line Bulk |
| 1 | generic | 1mF capacitor | Stack Line Bulk |
| 2 | generic | 5.1K resistor | USB CC Pull-down |
| 1 | generic | 470 resistor | Series Termination |
| 17 | generic | 10K resistor | Pull-up |
| 15 | Diotec | MMFTP3401 | Power Gating PMOS |
| 15 | RTLECS | MG0425BE | Magnetic Pogo Connector (M) |