Hi all, I am a programmer but somewhat inexperienced in the realm of microcontrollers and creating hardware circuits, took a logic design course in college but that was several years ago and I am a bit rusty.
The goal of this project is to take a physical chessboard and allow a player to play against an online opponent (probably through Yahoo Chess or something similar). The basic workflow that I see goes something like this:
1. Player indicates that they want to play a match (via a button bush or something), arduino connects to online chess service and starts a match
2. Player is informed that the game has started and a timer starts on a text-screen hooked up to the arduino
3. Player makes their move on the physical board which is sensed by the arduino
4. Arduino submits move to online service and waits for opponents move
5. On opponent's move, two led's will light up underneath the board to indicate the opponents move start and finish positions
6. Player moves the opponent's piece and starts over at step 3
At this point I foresee the following challenges:
1. Interfacing the arduino with an online chess service: Not sure how difficult this would be, if any of the big players have an api that would be great, if not I'm sure I could sniff whatever the browser is sending and spoof that.
2. Indicating when the opponent has moved: I plan on having a LED underneath each one of the board squares, again these would have to be hooked up to the arduino somehow. I suppose I could have each of the two squares alternate flashing, since if I only need one light lit up then I could just connect this two the arduino's out pins with some binary logic right? 64 squares means 2^6 so I would only need 6 pins
3. Determining where the player has moved: This is where I need the most help. The plan right now is to have two pins on each board square and some conductive material on the bottom of each piece, so when a piece is placed it would complete a circuit. I think I need to hook each of the 64 squares up to the arduino's pins via some sort of multiplexer arrangement but I haven't figured this all out yet. The only information I need to submit a move is the starting and ending squares, if I could loop through the board and check each square at the start of the turn, and then again when the player hits a "submit" button or something, then that would work.
Any help you could give me would be appreciated