Remote Chess
When building the online chess game I have here, I realized I thought it'd be cool to be able to play physical chess with someone but remotely. The goal is to be able to play chess with a remote friend, but on physical boards. Moves I make on my board are translated to the other board and vice versa.
As of writing this, I'm still working on my proof of concept. I'm taking advantage of my 3d printer for XYZ movement (eventually, I'd like to build my own system). I have a Raspberry Pi running a local server that controls the printer through OctoPrint as well as an Arduino that's controlling a hand that grabs the pieces.
I'll add some nicer pages here later once I compile all my images and whatnot. For now, you can check out the source for what's running the game on this website here or the source for what will run to support this system here.
Proof of concept progress
-
Pick up piece: [done]
• designed a printable grabby hand, all pieces will have bases that work with the grabby hand -
Board: [done(ish)]
• designed pieces and spaces that fit together to ensure expected positioning for grabby hand
• printed minimal set of pieces and spaces for testing -
Grab pieces: [done]
• added z-axis movement and hand close movement to grabby hand controlled via Arduino and stepper motors -
Access spaces: [done]
• using 3D printer with OctoPrint as a crutch (for now), set up a server that translates a space ("A5" or "E1") to an OctoPrint request that moves printhead to corresponding position on print bed. -
Grab pieces on 3D printer: [done]
• designed a way to mount the grabby hand to the print head of the 3D printer -
Move piece: [done]
• given the movement of piece (A1 --> A3), move the print via OctoPrint API and the hand via the Arduino
• buuuut, there's some issue with translation. Moves near A1 (0, 0) work well, but the as I send the head farther along a rank or file, the head falls shorter of the expected position. I'm thinking I can just ignore this for now, since it should be easily resolvable once I have my own X-Y axis system [RESOLVED] • Turns out, the translation issue wasn't a translation issue, but instead, due to the size of the print space and the means by which I attached the grabby hand to the printhead. This went misdiagnosed mostly because I never had a full board laid out, but only printed out a few spaces to place. The grabby hand's offset from the printhead was actually much farther than I had though. -
Play online chess with physical output: [done, in theory]
• hook up online chess game to remote chess API to perform every move once it's been executed in browser • In theory, this is done. The chess game can be hooked up through OctoPrint and the moves are all sent to the printer and run. The "in theory" part is due to the fact that I haven't printed out a full board and set of pieces to make it work. There are also some consistency issues with the grabby hand and unless I make the board smaller, we're still going to run into the placement issue seen in the previous point.