Détection du placement d'objets sur une grille


11

Je travaille sur un projet Android ADK. Je cherche un moyen de détecter les emplacements des pièces d'échecs sur une planche (8x8). Je regardais des choses comme NFC mais ça a l'air trop cher. Y a-t-il une technologie différente que je devrais considérer. J'ai besoin de quelque chose que le monde puisse lire à tout moment l'état complet du tableau. Par exemple, certaines pièces peuvent être renversées et une fois qu'elles sont en place, j'ai besoin des emplacements. Pour expliquer cela plus en détail, dans une partie d'échecs au touroment, si les pièces sont déplacées au mauvais endroit et qu'aucun des deux joueurs ne remarque que la partie continuera. J'ai donc besoin d'enregistrer le jeu même si la position est impossible en fonction des règles du jeu.

Je veux simplement être orienté dans une direction générale sur la technologie à examiner.


"Dans un jeu d'échecs en tournoi si les pièces sont déplacées au mauvais endroit et qu'aucun des deux joueurs ne remarque que le jeu continuera". Je suis curieux. Les règles d'échecs le disent? (En fait, cela a du sens, car - s'il n'y a personne d'autre à regarder -, comment pourraient-ils ne pas continuer, si aucun d'eux ne le remarque?)
Telaclavo

@Telaclavo Je peux le confirmer, cela m'est arrivé lors d'un tournoi. Il n'y avait pas de solution apparente à mon faible niveau de jeu.
Stephen Collings

Réponses:


13

Première idée : la RFID. Une étiquette (très bon marché) sous chaque pièce. Chaque étiquette doit identifier de quel type de pièce il s'agit (sur {6 blanc} + {6 noir} = 12 types différents). Un circuit émetteur-récepteur et un multiplexeur 1 à 64 pour toute la carte. Aussi, 64 petites antennes, chacune sous chaque position de carte. L'émetteur-récepteur fonctionne à une puissance RF très faible (vous devriez trouver celle optimale, expérimentalement). En modifiant les connexions du multiplexeur, vous balayez les 64 positions et lisez les ID des étiquettes (le cas échéant) présentes sur chacune d'elles.

Je n'ai jamais utilisé les circuits intégrés dont il parle, mais ce document pourrait vous aider à mettre en œuvre le multiplexeur RFID (qui sera la partie la plus difficile, ainsi que sa mise en page soignée).

Deuxième idée : distinguer chaque type de pièce par sa perméabilité magnétique unique. À chaque pièce, vous ajouterez une certaine masse à sa base. Cette masse supplémentaire sera la même pour les 32 pièces (afin que les utilisateurs se sentent à l'aise avec eux). Chaque masse supplémentaire sera la somme de deux masses: une masse "magnétique", plus une masse "de compensation" (non magnétique). Le seul objectif de la masse de compensation sera de rendre la masse supplémentaire totale égale pour tous les types de pièces. Vous devez distinguer 12 types de pièces différents. Chaque type de pièce doit avoir une masse magnétique avec une perméabilité magnétique unique, . Vous choisirez probablement des matériaux avec un élevé , mais vous pouvez choisir parmi de nombreux matériaux, chacun avec un différent (voir un tableauμ μμμμici ).

Sous chaque position de planche, vous devrez enrouler plusieurs tours de fil (de sorte que le diamètre soit presque du côté du carré). Vous aurez 64 bobines. Encore une fois, utilisez un multiplexeur 1 à 64 pour connecter un seul d'entre eux à un inductance. La différence, maintenant, est que le multiplexeur n'a pas besoin de traiter les RF. Vous pouvez relier un nœud de toutes les bobines et utiliser 64 commutateurs analogiques (très bon marché) pour diriger, comme je l'ai dit, une bobine vers l'inductance. Le circuit devra déterminer, dans les plus brefs délais, quelle est l'auto-inductance mesurée à chacune des 64 bobines. Il n'a pas besoin de beaucoup de précision. Il suffit de déterminer 13 valeurs différentes possibles pour L (c'est-à-dire moins de 4 bits!). Vous pouvez expérimenter avec des méthodes dans le domaine temporel (par exemple, appliquer une tension constante et mesurer la pente du courant), ou dans le domaine des fréquences (par exemple, en essayant de rechercher rapidement quelle est la fréquence de résonance, avec un certain condensateur ajouté). Pour atteindre ces 12 valeurs différentes pour L, vous pouvez jouer avec différentes perméabilités et différentes dimensions pour le matériau magnétique.

Étant donné que vous devez balayer 64 positions (mesurer 64 self inductances) dans un délai raisonnable, j'opterais probablement pour des approches dans le domaine temporel. Par exemple, si vous vous permettez 1 seconde pour lire tout l'état de la carte, vous avez 15,6 ms pour chaque mesure d'inductance. Difficile, mais faisable.

Si la vitesse finit vraiment par être le goulot d'étranglement, vous pourriez rendre votre système 8 fois plus rapide, si vous incluez 8 frontaux analogiques, au lieu d'un. Chaque partie avant serait consacrée à chaque ligne du tableau. De cette façon, vous pourriez mesurer 8 self inductances simultanément (vous donnant 125 ms pour chaque mesure, et vous auriez toujours un état de carte entier en 1 seconde). Je suis sûr qu'un MCU, même avec un seul ADC (avec 8 canaux), serait suffisant.

Cela pourrait être (sans tous les détails) le schéma pour chaque extrémité avant (qui pourrait être un pour toute la carte ou un pour chaque ligne, comme mentionné), et un moyen d'estimer rapidement les self inductances à (N étant 8 ou 64). Le nœud commun pour les bobines serait le nœud supérieur, et les signaux de commande pour les commutateurs analogiques ne sont pas représentés, par souci de simplicité. TS serait constant, et VX échantillonné à TS serait utilisé pour calculer l'auto-inductance. TG serait juste un peu plus long que TS.L NL1LN

Idée 2

Bénéfice de cette seconde idée: pas de RF impliqué. Cependant, vous devez créer vos propres "balises", avec différentes perméabilités.


Je vous remercie. Votre première idée semble être la voie à suivre. J'aime la créativité de votre deuxième idée. Il pourrait être préférable pour un produit commercial où les pièces pourraient être fabriquées sur mesure. Cependant, je fais juste ça pour le plaisir.
theJosh

@theJosh Même après avoir répondu, il y a une phrase dans votre question qui m'embrouille encore. Celui "Par exemple, certaines pièces pourraient être renversées et une fois qu'elles sont en place, j'ai besoin des emplacements" n'a pas beaucoup de sens pour moi, car si des pièces sont renversées, ce devrait être la mémoire de votre système qui devrait indiquer à l'utilisateur où placer les pièces, et non l'inverse. J'ai interprété cette phrase comme suit: vous voulez que le système soit capable de lire l'état de n'importe quel tableau arbitraire, sans s'appuyer sur l'historique, et j'ai rejeté les réponses plus simples en gardant cela à l'esprit.
Telaclavo

@theJosh (suite). Si ce n'était pas le cas, la solution de davidcary serait plus simple.
Telaclavo

Le problème avec la première idée est qu'elle nécessite une portée assez courte pour la RFID. Si la plage est trop importante (plus d'un carré), il devient alors plus difficile de détecter la position correcte de la pièce. Pas impossible (j'espère), juste beaucoup plus difficile.

@DavidKessner C'est vrai, c'est pourquoi j'ai dit qu'il aurait besoin de trouver expérimentalement la puissance RF optimale. La distance de l'antenne à l'étiquette est beaucoup plus courte que la distance entre deux carrés adjacents, donc cela devrait être faisable.
Telaclavo

4

J'ai vu de nombreux échiquiers électroniques qui ont un trou percé au centre de chacun des 64 carrés, avec un simple photodétecteur sous chaque trou, qui ne donne qu'un bit - "rien ici", ou "un morceau quelconque est couvrant le détecteur ". Cela nécessite (a) de la mémoire et du code pour se souvenir de l'ancienne configuration de la carte, et pour suivre quelle pièce s'est déplacée où, et (b) quelque chose de spécial pour gérer la promotion du pion. Cela peut détecter quels carrés sont occupés et quels carrés sont ouverts à tout moment, mais pas l'état complet de la carte.


1
Intelligent! Matériel très simple soutenu par la logique!
clabacchio

Cela fonctionne tant qu'une seule pièce est déplacée à la fois. Cela ne fonctionne pas pour le cas où l'OP a mentionné que plusieurs pièces sont renversées puis remises en place. Sinon, c'est une bonne solution.

1

GlyphChess résout ce problème en utilisant un échiquier transparent. Un scanner en dessous lit le code-barres unique collé au bas de chaque pièce pour savoir quelle pièce se trouve où. Slashdot "Code secret de PARC" : Jouez aux échecs GNU sur votre scanner Ceci peut relire l'état complet de la carte à tout moment. Comme il y a moins de 18 types uniques de pièces sur l'échiquier, il serait peut - être préférable d'utiliser facile à reconnaître mires tels que les marqueurs d-touch plutôt que des codes à barres à haute résolution capables de distinguer des millions d'objets.


Juste curieux. Étant le panneau transparent, comment montrent-ils des carrés noirs et blancs à l'utilisateur? Peut-être avec une certaine transparence intermédiaire? Et, l'utilisateur ne voit-il pas les lumières?
Telaclavo

@Telaclavo: Je ne sais pas - peut-être que des carrés presque transparents teintaient le vert et le chamois traditionnels? Si je construisais cela aujourd'hui, je rendrais l'intérieur de la boîte blanc, puis mettrais une caméra en bas et placerais l'échiquier en verre sur le dessus. S'il y a suffisamment de lumière pour que les humains voient les pièces, il y a plus qu'assez de lumière qui rebondit sur l'intérieur blanc et illumine le code-barres au bas de chaque pièce pour qu'un appareil photo puisse le lire - aucune lumière n'est nécessaire.
davidcary

1

Je le ferais en créant un capteur de couleur pour chaque carré et en mettant une étiquette de couleur différente au bas de la pièce.

Le capteur de couleur serait fabriqué à l'aide de trois LED (probablement rouge, verte et bleue) et d'un photo-transistor sensible à toute la lumière visible. Allumez les LED en séquence et mesurez ce que le phototransistor mesure en réfléchissant sur la pièce d'échecs.

Vous pouvez le faire à l'envers, où vous avez une LED blanche et trois phototransistors différents sensibles à différentes couleurs. Mais c'est plus difficile à faire. La plupart des phototransistors ne sont pas sélectifs en couleur. Vous pouvez utiliser des filtres, mais il est plus facile d'utiliser simplement des LED de couleur différente.

Si les LED sont allumées pendant un temps assez court, vous ne le verrez pas "trop". De plus, les LED peuvent être utilisées pour d'autres choses comme marquer le tableau ou faire de petits jeux de lumière sympas lorsque le jeu est gagné.

Il y a un peu d'astuce à cela, qui rend tout facile à câbler et à construire. Avago a un peu de lumière ambiante sur les puces I2C qui pourraient le rendre plus facile. D'autres entreprises ont des choses similaires.

L'astuce suivante consiste à créer suffisamment d'étiquettes de couleurs différentes pour avoir une couleur unique par pièce. Cela nécessitera juste quelques essais et erreurs, car nous ne connaissons pas le spectre exact des différents pigments d'encre / toner de l'imprimante. Néanmoins, cela ne devrait pas être trop difficile à condition que vous puissiez obtenir peut-être 6 bits de résolution du capteur de lumière. (6 bits vous donneraient beaucoup de marge de bruit.)


1

pas besoin de détecter la couleur, juste des nuances de gris. Chaque pièce a une nuance de gris sur le fond et une simple paire émetteur / détecteur IR placée dans la carte lit la valeur analogique.


0

Une société appelée "Zowie" a produit une fois quelques ensembles de jeux dont "Ellie's Enchanted Garden" qui se connecteraient à un ordinateur et qui pourraient détecter la position de quelques jetons sur une surface de jeu. Chaque jeton était composé d'un condensateur et d'une bobine de fil, et la surface de jeu comportait une grille de fils; le fait de faire passer un courant dans un fil horizontal à une fréquence correspondant à la fréquence LC d'un ensemble bobine-capuchon ferait apparaître cette fréquence sur les fils verticaux. La grille était d'environ six fils / pouce dans les deux directions, et la résolution de positionnement apparente était probablement d'environ 0,05 ", mais il n'y avait qu'environ 16 fils se connectant à la carte CPU; je suppose que les fils étaient disposés selon un motif tel que chaque jeton réagirait à deux fils horizontaux ou plus et stimulerait au moins deux fils verticaux; en notant quelle combinaison de fils réagirait aux stimuli, le processeur pourrait déterminer où se trouvait le jeton. Je ne me souviens pas de ce que Zowie a revendiqué dans son brevet, ni de l'état de la technique qu'il a cité, mais il est tout à fait possible que l'état de la technique inclue une approche désormais du domaine public qui conviendrait à vos besoins.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.