Automatic Chess Board

Return Home

Project Summary

A Core XY motion system moves an electromagnet from tile to tile in order to moves pieces around the board. Each piece is equipped with a NFC tag and each square uses an NFC tag reader. The game state is managed on a raspberry pi, which can interface with any UCI chess engine. We developed custom chess engines designed to represent the playstyles of individual players.

Chess Engine

I developed a custom PyTorch implementation of the Maia-1 CNN designed for finetuning. Maia-1 is a chess engine entirely trained on player data. The custom implementation includes additional fully connected layers at the end to prevent overfitting on smaller datasets. Before finetuning on individual player data, the engine's ELO is approximately 1600. Using Chess.com's API, one can take an existing trained model and fine tune it to exemplify traits and openings of a specific player's online profile. This drops the ELO by approximately 100 points.

Hardware/ Electronics

A Core XY Motion system is operated by a stepper motor driver and Arduino Nano. The nano as well as an additional Arduino Uno are each connected to 4 multiplexers, which are each connected to 8 NFC readers to constantly scan the board state. This allows all 64 tiles to be monitored at all times. The Arduino devices report their board state findings over a serial connection to a raspberry pi game manager. The game manager detects when legal moves are made, and requests UCI engines for responses to those moves.

Get in Touch

Email: harrisw522@gmail.com

Phone: 781-690-3302

Location: Belmont, MA