Projets:Perso:2011:Echiquier

From Electrolab
Jump to: navigation, search
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

Projet Interface de jeu

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.
Hélas, si les d'échecs jeux autonomes étaient à la mode il y a une vingtaine d'année, ce n'est plus le cas aujourd'hui ; et si on souhaite avoir un plateau connectable à un PC les prix s'envolent...
D'ou l'idée de ce projet : créer une plateforme ouverte permettant à tous de se fabriquer un plateau d'échecs électronique connectable ET autonome "à pas cher"




Introduction

Donne un appercu des tenants et aboutissants du projet.

Objectifs

Fabriquer un plateau d'échecs électronique pas cher (moins de 150 euros) et :

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

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 ;)

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