Ich arbeite an einem Android ADK-Projekt. Ich suche nach einer Möglichkeit, die Positionen von Schachfiguren auf einem Brett (8x8) zu erkennen. Ich habe mir Dinge wie NFC angesehen, aber es sieht zu teuer aus. Gibt es eine andere Technologie, die ich in Betracht ziehen sollte? Ich brauche etwas, das die Welt jederzeit in der Lage ist, den vollständigen Status der Tafel zu lesen. Zum Beispiel könnten einige der Teile umgeworfen werden und sobald sie wieder aufgebaut sind, brauche ich die Orte. Um dies weiter zu erklären, wird in einem Touroment-Schachspiel das Spiel fortgesetzt, wenn die Figuren an den falschen Ort verschoben werden und keiner der Spieler bemerkt, dass das Spiel fortgesetzt wird. Ich muss das Spiel also aufzeichnen, auch wenn die Position aufgrund der Spielregeln nicht möglich ist.
Ich möchte nur in eine allgemeine Richtung weisen, welche Technologie zu betrachten ist.
Antworten:
Erste Idee : RFID. Ein Etikett (sehr billig) unter jedem Stück. Jedes Tag sollte identifizieren, um welche Art von Stück es sich handelt (von {6 Weiß} + {6 Schwarz} = 12 verschiedenen Typen). Eine Transceiverschaltung und ein 1-zu-64-Multiplexer für die gesamte Karte. Außerdem 64 kleine Antennen, jede unter jeder Platinenposition. Der Transceiver arbeitet mit einer sehr geringen HF-Leistung (Sie sollten experimentell den optimalen finden). Durch Ändern der Multiplexer-Verbindungen scannen Sie alle 64 Positionen und lesen die IDs der Tags (falls vorhanden), die über jeder dieser Positionen vorhanden sind.
Ich habe noch nie die ICs verwendet, über die gesprochen wird, aber dieses Dokument könnte Ihnen bei der Implementierung des RFID-Multiplexers helfen (der zusammen mit seinem sorgfältigen Layout der schwierigste Teil sein wird).
Zweite Idee : Unterscheiden Sie jeden Stücktyp durch seine einzigartige magnetische Permeabilität. Zu jedem Stück fügen Sie unten eine bestimmte Masse hinzu. Diese zusätzliche Masse ist für alle 32 Teile gleich (damit sich die Benutzer mit ihnen wohl fühlen). Jede zusätzliche Masse ist die Summe zweier Massen: eine "magnetische" Masse plus eine "kompensierende" (nicht magnetische) Masse. Der einzige Zweck der Ausgleichsmasse besteht darin, die gesamte zusätzliche Masse für alle Arten von Teilen gleich zu machen. Sie müssen 12 verschiedene Arten von Stücken unterscheiden. Jeder Stücktyp muss eine magnetische Masse mit einer einzigartigen magnetischen Permeabilität . Sie werden wahrscheinlich Materialien mit einem hohen μ auswählen , aber es gibt viele Materialien, aus denen Sie auswählen können, jedes mit einem anderen μ (siehe eine Tabelle hierμ μ μ ).
Unter jeder Platinenposition müssen Sie mehrere Drahtwindungen wickeln (so dass der Durchmesser fast der Seite des Quadrats entspricht). Sie haben 64 Spulen. Verwenden Sie erneut einen 1-zu-64-Multiplexer, um nur einen von ihnen an ein Induktivitätsmessgerät anzuschließen. Der Unterschied besteht nun darin, dass der Multiplexer nicht mit HF umgehen muss. Sie können einen Knoten aller Spulen miteinander verbinden und 64 analoge Schalter (sehr billig) verwenden, um, wie gesagt, eine Spule zum Induktivitätsmesser zu leiten. Die Schaltung muss in kürzester Zeit bestimmen, wie hoch die an jeder der 64 Spulen gemessene Selbstinduktivität ist. Es braucht nicht viel Genauigkeit. Es müssen nur 13 verschiedene mögliche Werte für L bestimmt werden (das sind weniger als 4 Bits!). Sie können mit Methoden im Zeitbereich experimentieren (z. B. Anlegen einer konstanten Spannung und Messen der Steigung des Stroms). oder im Frequenzbereich (z. B. der Versuch, mit einem bestimmten hinzugefügten Kondensator schnell nach der Resonanzfrequenz zu suchen). Um diese 12 verschiedenen Werte für L zu erreichen, können Sie mit unterschiedlichen Permeabilitäten und unterschiedlichen Abmessungen für das magnetische Material spielen.
Da Sie in angemessener Zeit 64 Positionen scannen müssen (64 Selbstinduktivitäten messen), würde ich mich wahrscheinlich für Zeitbereichsansätze entscheiden. Wenn Sie sich beispielsweise 1 Sekunde Zeit lassen, um den gesamten Zustand der Karte zu lesen, haben Sie 15,6 ms für jede Induktivitätsmessung. Herausfordernd, aber machbar.
Wenn Geschwindigkeit wirklich der Engpass ist, können Sie Ihr System 8x schneller machen, wenn Sie 8 analoge Frontends anstelle von einem einschließen. Jedes Frontend würde für jede Zeile in der Tafel reserviert. Auf diese Weise können Sie 8 Selbstinduktivitäten gleichzeitig messen (was 125 ms für jede Messung ergibt und Sie würden in 1 Sekunde immer noch einen vollständigen Platinenzustand haben). Ich bin sicher, dass eine MCU, selbst mit einem einzelnen ADC (mit 8 Kanälen), ausreichen würde.
Vorteil dieser zweiten Idee: keine RF beteiligt. Sie müssen jedoch Ihre eigenen "Tags" mit unterschiedlichen Permeabilitäten erstellen.
quelle
Ich habe viele elektronische Schachbretter gesehen, die in der Mitte jedes der 64 Quadrate ein Loch gebohrt haben, mit einem einfachen Fotodetektor unter jedem Loch, der nur 1 Bit ergibt - "nichts hier" oder "eine Art ist" den Detektor abdecken ". Dies erfordert (a) etwas Speicher und Code, um sich an die alte Konfiguration des Bretts zu erinnern und zu verfolgen, welches Stück sich wohin bewegt hat, und (b) etwas Besonderes, um die Bauernwerbung zu handhaben. Dies kann erkennen, welche Felder belegt sind und welche Felder zu einem beliebigen Zeitpunkt geöffnet sind, jedoch nicht den vollständigen Status der Tafel.
quelle
GlyphChess löst dieses Problem mithilfe eines transparenten Schachbretts. Ein Scanner darunter liest den eindeutigen Barcode, der an der Unterseite jedes Stücks angebracht ist, um herauszufinden, welches Stück sich wo befindet. "PARC's Secret Code" Slashdot: Spielen Sie GNU-Schach auf Ihrem Scanner Dies kann jederzeit den vollständigen Status des Bretts erneut lesen. Da sich weniger als 18 einzigartige Arten von Stücken auf dem Schachbrett befinden, ist es möglicherweise besser, leicht zu erkennende Passermarken wie D-Touch-Marker zu verwenden, als hochauflösende Barcodes, mit denen Millionen von Objekten unterschieden werden können.
quelle
Ich würde dies tun, indem ich für jedes Quadrat einen Farbsensor herstelle und ein anderes Farbetikett auf die Unterseite des Stücks klebe.
Der Farbsensor würde mit drei LEDs (wahrscheinlich Rot, Grün und Blau) und einem Fototransistor hergestellt, der für alles sichtbare Licht empfindlich ist. Schalten Sie die LEDs nacheinander ein und messen Sie, was der Fototransistor misst, wenn er von der Schachfigur reflektiert wird.
Sie können es auch umgekehrt machen, wenn Sie eine weiße LED und drei verschiedene Fototransistoren haben, die für verschiedene Farben empfindlich sind. Das ist aber schwieriger. Die meisten Fototransistoren sind nicht so farbselektiv. Sie könnten Filter verwenden, aber es ist einfacher, nur LEDs mit verschiedenen Farben zu verwenden.
Wenn die LEDs kurz genug leuchten, sehen Sie sie nicht "zu viel". Die LEDs können auch für andere Zwecke verwendet werden, z. B. zum Markieren des Bretts oder für coole kleine Lichtshows, wenn das Spiel gewonnen ist.
Das ist ein kleiner Trick, der es einfach macht, alles zu verkabeln und aufzubauen. Avago hat etwas Umgebungslicht für I2C-Chips, was es möglicherweise einfacher macht. Andere Unternehmen haben ähnliche Dinge.
Der nächste Trick besteht darin, genügend verschiedenfarbige Etiketten zu erstellen, damit Sie eine eindeutige Farbe pro Stück erhalten. Dies erfordert nur einige Versuche und Irrtümer, da wir das genaue Spektrum der verschiedenen Druckertinten- / Tonerpigmente nicht kennen. Trotzdem sollte es nicht zu schwierig sein, vorausgesetzt, Sie können vom Lichtsensor eine Auflösung von 6 Bit erhalten. (6 Bit würden Ihnen viel Rauschabstand geben.)
quelle
Keine Notwendigkeit, Farbe zu erkennen, nur Graustufen. Jedes Stück hat einen Grauton auf der Unterseite und ein einfaches IR-Emitter / Detektor-Paar in der Platine liest den Analogwert.
quelle
Eine Firma namens "Zowie" produzierte einmal einige Spielsets, darunter "Ellie's Enchanted Garden", die sich mit einem Computer verbinden ließen und die Position einiger Token auf einer Spielfläche erfassen konnten. Jeder Token bestand aus einem Kondensator und einer Drahtspule, und auf der Spielfläche befand sich ein Drahtgitter. Wenn ein Strom durch einen horizontalen Draht mit einer Frequenz geleitet wird, die mit der LC-Frequenz einer Coil-Cap-Baugruppe übereinstimmt, würde diese Frequenz auf den vertikalen Drähten auftreten. Das Drahtgitter betrug ungefähr sechs Drähte / Zoll in beiden Richtungen, und die scheinbare Positionierungsauflösung betrug wahrscheinlich ungefähr 0,05 ", aber es waren nur ungefähr 16 Drähte mit der CPU-Platine verbunden; ich würde vermuten, dass die Drähte in einem Muster so angeordnet waren, dass jeder Token würde auf zwei oder mehr horizontale Drähte reagieren und mindestens zwei vertikale Drähte stimulieren; Durch Feststellen, welche Kombination von Drähten auf Reize reagieren würde, konnte die CPU herausfinden, wo sich das Token befand. Ich erinnere mich nicht, was Zowie in ihrem Patent behauptet hat oder welchen Stand der Technik es zitiert hat, aber es ist durchaus möglich, dass der Stand der Technik einen inzwischen gemeinfreien Ansatz beinhaltet, der für Ihre Zwecke angemessen wäre.
quelle