The Internet teaches us that we can accept stand-ins for the real world. We have an avatar that looks like us. We have virtual mailboxes to read messages out of make-believe envelopes. If you want to play chess, you can play with anyone in the world, but on a virtual board. Or, you can use [karayaman’s] software to play virtual games on real boards.
The Python program uses a webcam. You point it at an empty board and calibrate. After that, the program will track your moves on the real board in the online world. You can see a video of a test game below.
The basic idea is a chessboard that a player can use in the typical way, moving the pieces on the board as normal. The opposing pieces are then moved automatically to reflect an opposing player’s moves as received from an online chess server.
The board outwardly appears normal, with little to suggest anything is amiss. Only the metallic gleam at the base of each piece gives the game away. Pieces are moved by a SCARA arm hidden inside the board, which uses a magnet to drag them around from position to position. It’s quite something to watch the pieces glide around as if by magic, even more so when one is dragged off the board in a combat situation.
As for the control system, an Arduino Nano 33 IoT handles online connectivity to fetch game data from the Lichess chess server, while an ESP32 is responsible for all the motors, and a regular Arduino Nano scans a matrix of Hall effect sensors responsible for locating pieces on the board.
The system allows for seamless play, detecting when pieces are moved by the player via the Hall effect sensors, and reporting back to the chess server online. Similarly, when the game state is updated, the SCARA arm steps in to move the relevant pieces reflecting the moves of the distant player.
Unsatisfied with the present options for chess computers and preferring the feel of a real board and pieces, [Max Dobres] decided that his best option would be to build his own.
Light and dark wood veneer on 8mm MDF board created a board that was thin enough for adding LEDs to display moves and for the 10mm x 1mm neodymium magnets in the pieces to trip the reed switches under each space. The LEDs were wired in a matrix and connected to an Arduino Uno by a MAX7219 LED driver, while the reed switches were connected via a Centipede card. [Dobres] notes that you’ll want to test that the reed switches are positioned correctly — otherwise they might not detect the pieces!