I love the game of chess and hacking hardware, so I set out to make a robot that could play chess better than any human ever could. Combining my idea of robotics with heavier software, we decided to build a web app from which users could play against other users or against an AI, all with the game taking place on a real chess board.
What it does
Users can play chess on our web app, iochess.com, against another user or an AI. IoChess is designed such that one chess player can play chess on a physical board against a user on the other side of the world playing on the internet. A Raspberry Pi camera mounted above the board samples the current game state and user RGB analysis of pixels from the board photos to determine moves made by the physical user.
How we built it
IoChess is built using two stepper motors to have control in the x and y axes. A solenoid mounted on a moving platform is able to drag ferromagnetic pieces from beneath the board. Our custom designed and built API handles game states and passes data to the raspberry pi, which stores the current game state. Any changes in game state learned about from the API side are then passed via serial to an Atmel microcontroller, which interprets changes as coordinates and moves the pieces into their newly assigned positions. Pieces that are taken by a web user or AI are placed along a plane beside the board by the robot.
Challenges we ran into
This was an incredibly ambitious project for a 36 hour hackathon, in terms of both hardware and software. We simply did not have enough time to get everything up and running to our meticulous standards, and we certainly to continue this project over the coming weeks. We did, however, have the opportunity to make an incredible amount of progress in just two days, and we learned to hack on a lot of new technologies.
What's next for IoC (Internet of Chess)
We ultimately intend to produce IoChess as a stand alone, web-connected unit such that players can play their friends without being in the same room. The robot will simply be present to assist the absent party in physical move making.