Automatic DIY Arduino Chess Board

#arduino #diy #chess

This was an early prototype for a class project. For the curious, here are some quick design details: The player moves were detected using hall effect sensors and magnets embedded in each piece. The board’s moves were handled by a 2-axis movement system much like what you’ll find in 3D printers or CNC machines. The pieces were picked up using a magnet attached to a servo on the carriage. A RPi 3 was used to process moves and send them over WiFi to a simple web server, which let multiple people with boards play each other remotely, play against opponents on Lichess, or play against Stockfish.

As you can probably tell, there were a bunch of issues with this early design. Some of them, like the pawn sticking to the knight and undetected moves, were fixed by making the board larger (more space between pieces), the pieces heavier, and the magnets stronger. Piece captures were handled better by first moving the captured piece off to the side of the board. Castling was done by moving the rook halfway off the board and sliding it behind the king.

There were a bunch of problems I never did manage to solve, however. For example, I never really handled promotion properly. In the case of the player, I always made the assumption that they promoted to a queen. RFID may be a possible solution to detect underpromotions. In the case of the board, the player would have to manually replace the piece. A possible solution for this may be to have the board slide the pawn off the board and pick up a major piece from a predetermined slot at the side of the board to replace it. The stepper motors were also really loud and slow, but I sadly never got the chance to upgrade them since I had run out of budget.

If you guys are interested in something like this, you should check out the Square Off board. They sell an automatic chess board that looks super cool and is definitely infinitely more polished than this thing I made.

Leave a Reply

Your email address will not be published. Required fields are marked *