
michess
Chess you can see#
michess is a physical chess board that knows where every piece is. NFC tags embedded in the base of each piece communicate with readers hidden beneath all 64 squares. A Raspberry Pi 4 tracks the game state in real time and lights up LEDs to display computer-suggested moves - no cameras, no fuss, just electronics you can play with.
The entire project is open source: hardware schematics, firmware, and software are freely available to build, modify, and improve.
How it works#
- Tag and scan - Each chess piece has a small NFC tag embedded in its base. When a piece is placed on a square, the reader beneath that square identifies it via its unique tag ID.
- State tracking - The Raspberry Pi 4 maintains a live board model, updating it on every move and detecting illegal placements or piece lifts.
- Engine integration - The board connects to a chess engine (Stockfish by default) over a local socket. After each player move the engine evaluates the position and returns its best reply.
- LED feedback - An 8×8 LED matrix overlaid on the board illuminates the engine’s suggested from-square and to-square, guiding the human player without a screen in sight.
Hardware overview#
| Component | Role |
|---|---|
| Raspberry Pi 4 (2 GB+) | Main controller - runs the engine, board logic, and LED driver |
| 64× PN532 NFC readers | One beneath each square; detect and identify pieces via I²C/SPI bus |
| NFC stickers (NTAG213) | Embedded in each piece base; hold a unique UID |
| WS2812B LED strip | Routed beneath the board to illuminate individual squares |
| Custom PCB | Routes power and data across all 64 reader positions |
| 5 V / 4 A PSU | Powers the Pi and all readers simultaneously |
The board is designed to be assembled with hobbyist tools - a soldering iron, a drill press, and a laser cutter for the enclosure panels are all you need.
Get involved#
michess is built in the open. Star the repo, open an issue, or submit a pull request - all contributions are welcome.
Photo by Callum Mullin on Unsplash