The chess board is made up of 3 parts:

  • The piece detection (the top layer of the board) is an 8x8 matrix of reed switches using a button matrix circuit (I found this page useful) connected to an Elegoo nano.
  • The movement uses the CoreXY system ( as using 2 stationary stepper motors made it easier to design. Most of the parts are 3D printed on my Tevo Tornado and I used 8mm aluminium pipe with linear bearings for the runners. The pipe is hollow which led to the movement to be a bit flexible so if I were to do it again I would have used linear rails or aluminium extrusions as it would have made everything a bit sturdier. It is quite slow at the moment because of the weak frame however if it was sturdier and I could tighten the belts more I think it could run much faster. Attached to the gantry is a servo with a magnetic arm to grab and move pieces from under the board.
  • The final part is the chess code that control the movement and send moves to the LiChess servers to play online (although I haven't implemented this yet), this is all written in C++ using SDL2 to do graphics. I am planning to have this all running on a Raspberry pi 4 with a touchscreen. (current code:

Current progress:

The board uses A* pathfinding to avoid colliding with other pieces.

Testing piece detection:

Testing XY movement.

I designed all the movement using fusion 360, this is the most recent version although there have been some manual alterations to the physical version.