Projets:Perso:2011:Echiquier
Interface de jeu | |
---|---|
Auteur | Jeff |
Date de proposition | 28/08/2011 |
Tags du projet | PPC |
Lieu d'utilisation final | Anywhere |
Utilisateur final | Youngsters |
Type de projet
Projet personnel de Jeff |
Jouer (et se faire écraser) aux échecs contre un ordinateur, c'est bien ; mais avec des vraies pièces plutot que sur un écran, c'est mieux.
|
Introduction
Donne un appercu des tenants et aboutissants du projet.
Objectifs
Fabriquer un plateau d'échecs électronique pas cher (moins de 150 euros) et :
- rendre ce plateau compatible avec les logiciels actuels (compatible DGT : http://digitalgametechnology.com/site/index.php/Electronic-Boards/)
- en faire également un plateau autonome, avec un logiciel libre adapté au microcontroleur retenu ; élo visé de 1600 (joueur de club) sur Arduino à 2400+ (grand maitre) sur carte plus performante
- participer au tournoi français d'échiquier électroniques de Paris-Saints en 2012 (http://www.zanchetta.net/default.aspx?Categorie=ECHIQUIERS&Page=paris-saints)
- mettre les plans, schémas, logiciels nécessaire à la construction sur un site collaboratif (in english)
- en profiter pour apprendre quelques trucs en électronique vu que je pars de zéro :p
Principe
- Les pièces sont dotées d'aimants et le plateau est équipé de 64 interrupteurs ILS (reed switch) ; ces interrupteurs sont organisés avec une matrice de diodes de manière à ce que seulement 16 pins soient nécessaires à la lecture de l'échiquier
- Le lien entre un PC et l'échiquier est effectué via l'interface série émulée de l'Arduino
- La logique du jeu et la validation des coups légaux avant transmission au PC se fait dans l'Arduino
- On ajoute un écran LCD permattant le paramétrage ainsi qu'en offrant un fonction de pendule
Fonctionnalités
Le plateau doit avoir 3 modes de fonctionnement :
1: Mode émulation DGT
Il s'agit d'un mode ou le plateau est complètement esclave d'un PC (pour jouer sur internet, ou contre un logiciel tournat sur le PC). Le but est d'émuler du mieux possible un plateau DGT ; (protocole ici : http://digitalgametechnology.com/site/index.php/Download-document/85-DGT-Electronic-Board-Protocol-Description-version-200912.html) On pourra également enregistrer les parties ou gérer l'horloge sur l'écran LCD.
2: Mode plateau autonome
Le but est ici de pouvoir jouer contre le plateau SANS le connecter à un PC. Il s'agit surtout de développer un logiciel adapté à la plateforme (ou sont passés mes gigaoctets de RAM? :p). Je dispose d'une bonne base avec mon logiciel maison : http://gaiachess.free.fr
3: Mode module UCI
Le but est de pouvoir faire jouer le plateau comme si c'était un programme 'normal' dans le PC grace au protocole UCI (http://wbec-ridderkerk.nl/html/UCIProtocol.html). On utilisera principalement ce mode pour faire des tests de positions ou contre d'autres programmes lors du développement.
Réalisation
Prototype 1
Réalisation d'un plateau 2x2 cases et détection des pièces
Matériel
- Carte arduino MEGA 2560 (49€) (http://arduino.cc/en/Main/ArduinoBoardMega)
- 4 diodes + 4 interrupeurs ILS (moins de 3€)
- Du carton
Objectifs
- Prise en mains et validation de la plateforme Arduino
- Validation de l'idée de la matrice de diodes
Réalisation
28/08/2001 : Le prototype fonctionne ! Détection OK sur quel que soit le nombre de pièces. Voir photo : http://www.wuala.com/api/preview/jromang/Photos/Public/IMGP7730.JPG
Problèmes rencontrés
- Lecture de valeurs aléatoires sur les entrées de l'Arduinio - solution passage en mode "pullup" sur les précieux conseils de Clem
- "Mais pourquoi ca fait des grosse patates d'étain quand je soude?" - solution demander mardi prochain :p
Prototype 1.5
le même que le 1, mais avec un plateau en bois. L'objectif est de tester si ca fonctionne encore/de trouver un moyen pour que ca fonctionne encore !
Matériel
- cf ci dessus (identique)
- suite aux premiers tests de dev, passage au microcontrolleur ckipKit Max32 (http://www.digilentinc.com/Data/Products/CHIPKIT-MAX32/chipKIT%20Max32_rm.pdf) ; 8ko de RAM ca laisse trop peu de stack pour implémenter PVS sur l'arduino. Pour le même prix sur le chipKit Max32 on gagne une fréquence x10, 128ko de RAM (on peut envisager d'en réserver 64 pour une hashtable), et 512k de flash.
- Du bois
- différents aimants, de différentes forces.
- outillage: une défonceuse
Objectifs
- tester la réalisation du plateau en bois (épaisseur max admissible selon aimants, etc)
Réalisation
02/09/2011 : Avec des pièces magnétiques d'un échiquier commercial (novag citrine), l'épaisseur maximale d'un support en papier et les ILS pour faire un contact est de 5mm ; à priori 4mm paraissent préférables. Exit donc l'idée d'un design avec les ILS reposant sur une plaque de plexiglas et un plateau de bois standard posé au dessus :/ De plus, la position des ILS par rapport aux pièces est importante : il ne faut pas centrer la pièce sur l'ILS, mais sur l'une de ses deux lames. D'après mes tests le plus efficaces est un centrage sur la lame à "attirer". Il va donc falloir envisager deux solutions :
- découper un échiquier "maison" : un simple planche avec quelques perçages et découpages (pour les boutons, l'écran LCD, et les pieds). Pour la représentation des cases (à priori d'une taille de 40mm vu la dimension des pièces), faute de mieux, j'envisage de coller un papier imprimé sur la planche.
=> mieux: découpe/gravure laser dudit plateau, ou marquetterie/fabrication sur mesure d'un plateau à la bonne épaisseur (bon courage ;)
- travailler dans un echiquer en bois (style http://www.baron-des-echecs.fr/chess-B4040.htm) à la défonceuse.
Problèmes rencontrés
- trouver une défonceuse (yen a t il une au lab ? Sinon, est-ce que quelqu'un peut ramener/prêter ca ?)
- avec le passage au chipKit Max32, on pert la fonctionnalité 'pull-up resistor' (http://chipkit.cc/forum/viewtopic.php?f=13&t=245)...et on mesure n'importe quoi ; je vais donc cabler des résistances en pull-down.
- toujours suite au passage vers le chipKit Max32, la fonction 'tone' (http://www.arduino.cc/en/Reference/Tone) ne fonctionne plus...décidément on est loin du "100% compatible arduino"
Remarque à propos du 100% compatible: ce n'est que vis à vis de la def des connecteurs (et encore, je dis ca sans avoir regardé le détail). C'est évident que bon nombre de librairies développées spécifiquement pour arduino (et faisant appel à des fonctions bas niveau du uC utilisé à la base) ne vont *pas* marcher sur une plateforme différente. M'enfin après, "c'est que du soft (c)"...
Prototype 2
Réalisation d'un plateau 8x8 cases et détection des pièces.
Matériel
- Carte arduino MEGA 2560 (49€) (http://arduino.cc/en/Main/ArduinoBoardMega)
- 64 diodes + 64 interrupeurs ILS (~40€)
- Un écran LCD
- Du plastique/plexi transparent
- Un set de pièces magnétiques (facile a bricoler)
Logiciel
- Implémenter un générateur de mouvements légaux dans l'Arduino
- Implémenter le protocole DGT
- Gestion de l'écran LCD (affichage de la position, pendule)
- Implémenter un module simple pour le jeu autonome
Objectifs
Il s'agit ici de construire le plateau interrupteurs/diodes "définitif" qui servira pour tous les protos suivants
Réalisation
- Hourra :-) Après de loooongues heures de soudure, la détection des pièces fonctionne sur le plateau 8x8
- L'écran LCD est branché et fonctionnel (photos avec le lien ci-dessous)
- Trois interrupteurs, du bois, une peu de colle....et la partie hard est terminée ! :-) : les photos http://www.wuala.com/jromang/Photos/Public/proto/
Questions ouvertes/problèmes
acteurs impliqués dans le projet
- Jeff
- Clem (malgré lui car je vais probablement lui poser plein de questions ^^)
- Toute personne intéressée est bienvenue !
Macro planning
- aout 2011: protoype 1 (FAIT)
- septembre 2011 : partie "hard" du prototype 2
- octobre 2011 : implementation du générateur de mouvements et du protocole DGT
- novembre 2011 : module autonome