Ultra-Low-Cost DIY Internet-Chess-Table. Der Internet-Chess-Table ermöglicht das Spielen von Schach-Partien über den freechess.org Internet-Server auf einem 3D-Brett mit 3D-Figuren. Die Züge des Gegners werden über einen DIY 20W LED low-resolution LCD Projektor auf einem transparenten Schachbrett dargestellt. Die eigenen Züge werden über eine Webcam-basierende Zug-Erkennungssoftware erfasst und an den Server geschickt.
1 Motivation
Seit 2001 spiele ich Schach und habe seitdem um die 1200 Partien über ein 2D-Interface auf dem Internet Chess-Server freechess.org gespielt. Neulich besuchte ich einen Schachclub, wo ich auf normalen Brettern mit normalen Figuren spielte.
Das Schachspiel kam mir - trotz regelmäßige Spielpraxis auf dem Schach-Server - ziemlich unvertraut vor, was sich auf meine Spielstärke auch sehr negativ auswirkte. Ich fing an, nach einer Lösung zu suchen, die es mir gestattet, über den Schach-Server auf einem richtigen Brett mit echten Figuren zu spielen.
Zunächst versuchte ich ein Brett mit Figuren neben meinen PC stellen und die Züge von Monitor auf das Brett zu übertragen und umgekehrt, was sich aber als sehr ablenkend herausstellte.
Weiterhin ergaben Suchen im Internet, dass es zwar richtige Bretter als USB-Eingabegerät gibt, diese jedoch die zu spielenden Züge des Gegners nicht anzeigen können, weshalb man wieder einen PC benötigt, von dessen Monitor man die Züge auf das Brett überträgt. Andererseits gibt es Schachcomputer, die Züge erfassen und anzeigen können, diese aber nicht über eine Internet-Verbindung zu einem Schach-Server verfügen.
Das daraus entstandene Projekt ist daher eine Art aus beidem. Ein 3D-Interface zum Erfassen und Darstellen der Züge mit Internet-Anbindung zum freechess.org Server.
2 System
2.1 20W LED DIY LCD Projektor
Die Anzeige des Internet-Chess-Servers stellt ein selbstgebauter LCD Projektor dar, der über eine 20W LED-Lichtquelle verfügt. Als Display kam ein sehr günstiges 128x64 Pixel LCD zum Einsatz, von dem allerdings nur ca. 64x64 Pixel nutzbar sind. Weiterhin kam ein Objektiv vom Flohmarkt, ein alter CPU-Kühler und Kunststoff- und Glas-Linsen aus China zum Einsatz.
2.1.1 Konstantstromquelle / LED-Treiber
Die µC-gesteuerte Konstantstromquelle wurde ebenfalls selbst entwickelt und verfügt über eine Soft-Start-Funktion. Mit ihr ist es ohne Probleme möglich, eine 20W-LED ohne Kühlung des Treibers zu betreiben.
2.2 Webcam
Zur Eingabe dient eine uralte 320*240px Webcam, die ich in meiner Bastelkiste irgendwo noch gefunden hatte. Diese nimmt von unten Bilder auf, und eine selbstgeschriebene Client Software versucht die gespielten Züge zu erkennen, was erstaunlich zuverlässig funktioniert. Ein wesentlicher Bestandteil ist hier auch die vollständige Implementierung der Schachregeln, um mögliche falsch-erkannte Züge zu korrigieren.
2.3 Multitouch
Bei diesem System handelt es sich eigentlich um ein low-cost multitouch System. Der Unterschied zu Systemen, die FTIR (frustrated total internal reflection) or DI (direct illumination) verwenden ist, dass nur Umgebungslicht verwendet wird. Durch das Umgebungslicht verursachen die Figuren Schatten auf der Oberfläche, die dann ausgewertet werden können. Aufgrund dessen, dass keine zusätzliche Lichtquelle benötigt wird, wie es bei FTIR und DI der Fall ist, wird die ganze Konstruktion noch günstiger.
Very nice... I've looked at a couple of your other things and it looks like some of your boards are commercially made but your power supply board here looks like an in-house proto. I'm curious what method you typically use to do your protos. I've been having decent luck with toner transfer and a sealer (with TRF), but I'm always curious about what others with success are doing.
Do you currently have any plans to release the source code of the program that tracks the movement with the webcam? I would LOVE to make one of these myself, but do not have the time to write that much code.
im curious if youve been able to calculate the lag your presenter introduces into the game. this is obviously critical for people playing any sort of timed chess game where anything close to 100ms per move would inhibit their gameplay.