Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Apprendre à créer un jeu « Mix-Max » avec des cartes RFID

Jouer et créer son robot avec des cartes RFID

Il existe un nombre croissant de livres d'illustrations pour la jeunesse utilisant le principe du « Mix-Max ». Le principe consiste à constituer un personnage ou, ce qui nous concerne ici, un robot en mixant ses différentes parties : tête, corps et jambes. En tournant des fractions de pages séparément, on compose son personnage avec différents vêtements ou son robot avec une grande quantité de combinaisons possibles. (NDLR : vous avez un magnifique exemple illustrant ce principe sur http://www.bibliotheque.toulouse.fr//PELE-MELE-livresPopup.html).

L'idée consiste à utiliser des cartes RFID avec une illustration complète de robot dessinée dessus, mais seulement un tiers de l'illustration, la tête, le corps ou les jambes du robot sera retenu et affiché à l'écran en fonction du lecteur de carte (parmi les trois) où la carte sera présentée. Ce jeu a toujours fait sensation quand nous le présentions dans des salons et nous allons en présenter une version à bas coût à base de Raspberry Pi. Vous pouvez profiter des œuvres d'illustrateurs ou d'un projet scolaire dans une classe en faisant dessiner les illustrations aux élèves de façon à ce qu'elles puissent se combiner. Vous pouvez également ajouter des décors en arrière-plan avec des cartes dédiées, chaque carte pouvant faire afficher une des trois images possibles en arrière-plan dépendant du lecteur où la carte est présentée.

Commentez Donner une note à l'article (5)

Article lu   fois.

Les deux auteur et traducteur

Traducteur : Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Configuration matérielle

Image non disponible
(*) Une carte RFID avec un robot complet, tête, corps et jambes. (**) Sous chaque autocollant, un lecteur de cartes RFID.

Matériel nécessaire

  • 3 lecteurs de cartes RFID Mifare RC522
Image non disponible
  • Un jeu de 10 cartes Mifare RFID
Image non disponible
  • Un multiplexeur/démultiplexeur analogique 74HC4051 (boîtier DIL)
Image non disponible
  • Un support DIL à 16 broches
Image non disponible
Image non disponible
  • Un jeu de trois connecteurs coudés « Right Angle Pin Headers » à 8 broches
Image non disponible
  • Un connecteur 26 broches GPIO (GPIO header socket)
    (NDLR : ou 40 broches à partir du Pi 2)
Image non disponible
  • NDLR : les photos plus loin dans le tutoriel montrent des connecteurs femelles 8 broches Dupont
Image non disponible
  • Un assortiment de résistances, condensateurs et fils de câblage
 

Le lecteur RFID à bas coût RC522 est maintenant largement répandu. On peut en trouver trois pour moins d'une dizaine d'euros sur eBay. Bien que le chipset lui-même de ce lecteur supporte de nombreuses interfaces, ce genre de cartes peu coûteuses est configuré pour ne supporter qu'une seule interface série de type SPI (Serial Protocol Interface). C'est un peu compliqué sur le Pi qui ne dispose que de deux broches Chip Enable pour gérer deux périphériques sur un bus SPI. Mais si nous ajoutons un démultiplexeur analogique, nous pouvons piloter jusqu'à 16 lecteurs RFID, bien que seulement trois lecteurs soient nécessaires pour ce projet.

Le schéma électrique du dispositif est décrit plus basÉtape 1 : circuit de sélection du lecteur dans l'article. Toutes les broches MOSI, MISO, SCK et RST des lecteurs sont reliées entre elles pour former un bus. Chacune des broches Chip Select, curieusement nommées SDA, est reliée à part au démultiplexeur. Tous les détails de la réalisation du circuit sont donnés dans le chapitre IVConception du système de lecture de cartes.

II. Réunir les ressources

La première chose dont vous aurez besoin est le dessin des cartes. Il peut être réalisé en travail scolaire, en reprenant les illustrations d'un livre ou d'Internet, ou alors vous usez de vos propres œuvres artistiques. En fait, ce projet a profité du concours d'un ami artiste, Adam Farra. Vous pouvez voir son travail ci-dessous et télécharger les images à partir du dépôt GitHub de ce projet. Si vous dessinez les illustrations vous-même, elles doivent être sauvegardées au format PNG, 406 pixels en largeur et 615 pixels en hauteur. Il est important que la hauteur en pixels soit divisible par trois. Elles devront également avoir un arrière-plan transparent, de façon à ce qu'on puisse en ajouter un avec des cartes RFID spécifiques. Chaque carte dédiée peut permettre d'obtenir trois images d'arrière-plan selon le lecteur où elle sera présentée.

Image non disponible
Image non disponible

Nous aurons également besoin d'une bibliothèque pour gérer le lecteur RFID. Nous en avons utilisé une à cette adresse. Les exemples de code fournis sont pratiques pour tester chaque lecteur séparément. Quand tout sera prêt, déplacez le fichier MFRC522.pyc dans le répertoire contenant le programme mixUp.py. Ce répertoire devra également contenir un sous-répertoire nommé Cards comprenant les fichiers des illustrations.

III. Le programme

Le programme fonctionne avec le framework Pygame et débute en initialisant le dispositif. À chaque carte est associée une illustration à afficher à l'écran, mais à travers un masque différent selon le lecteur où est présentée la carte. De cette façon, seuls la tête, le corps ou les jambes du robot seront affichés selon le lecteur. La ligne qui définit la liste tokens sera à modifier en fonction des numéros d'identifiants des cartes dont vous disposez. Exécutez le code et présentez une carte devant n'importe quel lecteur pour récupérer son identifiant et faites des copier-coller des identifiants pour compléter la liste Token. Faites la même chose avec les cartes dédiées aux illustrations en arrière-plan et modifiez la liste backToken en conséquence. Lancez ensuite à nouveau le programme et observez quelle carte génère quelle image, puis collez une impression de cette image sur la carte.

mixUp.py
CacherSélectionnez

Vous pouvez permuter les variables headReader et feetReader pour inverser l'association tête et jambes du premier et dernier lecteur, au cas où vous auriez inversé leur position dans le boîtier. Si les illustrations que vous avez dessinées ne s'alignent pas, un programme que vous trouverez dans le dépôt GitHub du projet a été écrit afin de les décaler et les remettre en bonne place.

IV. Conception du système de lecture de cartes

IV-A. Étape 1 : circuit de sélection du lecteur

Image non disponible

NDLR : une petite explication sur le fonctionnement du circuit schématisé ci-dessus avant de jouer du fer à souder n'est pas inutile…

La communication série de type SPI entre le Pi et chaque lecteur RFID se fait via les lignes unidirectionnelles MISO (Master In Slave Out) et MOSI (Master Out Slave In). Les échanges de données sont synchronisés avec une horloge générée par le maître (le Pi) sur la ligne SCK. Les lignes d'échange de données et l'horloge sont communes aux trois lecteurs, mais il n'y a qu'un seul lecteur à la fois qui doit échanger des données avec le Raspberry Pi. Pour notre jeu, la stratégie consiste à scruter la présence d'une carte en activant les lecteurs chacun leur tour et en boucle. Dans le protocole SPI, la sélection du lecteur sur le bus avec qui le Pi échangera les données est obtenue en abaissant au potentiel 0 V sa broche Chip Enable, curieusement nommée SDA sur le lecteur (par défaut, amenée au +3,3 V avec des résistances de tirage de 10k).

Du côté du Pi, les broches dédiées au SPI sont les GPIO 9, 10 et 11 ainsi que les deux broches GPIO 7 et 8 pour la sélection (Chip Enable 0 et 1). Et il manque donc une broche Chip Enable pour le troisième lecteur, d'où le choix du 74HC4051 en démultiplexeur analogique qui peut écrire l'état de son entrée (la GPIO 8, Chip Enable 0) vers une des huit sorties possibles au choix (seules trois d'entre elles serviront ici). Ce sont les signaux numériques PB0, PB1 et PB2 envoyés par le Pi (codage en binaire naturel sur 3 bits, soit 2= 8 possibilités) qui permettent de sélectionner la sortie et donc d'orienter l'état de la broche Chip Enable 0 du Pi vers le lecteur souhaité.

Image non disponible

Le circuit de sélection du lecteur sera réalisé sur une plaque de veroboard, 24 par 11 trous. Pensez à couper les pistes du veroboard situées sous la puce 74HC4051, ainsi qu'aux endroits visibles sur la figure ci-dessus. La puce sera insérée sur un support DIL soudé sur la carte. Positionnez les connecteurs coudés « Right Angle Pin Headers » et soudez-les également. Puis, soudez les fils de connexion sur la carte suivant le schéma.

Enfin, soudez les dix extrémités d'un câble plat multibrin sur la carte d'une part, pour la réception des signaux en provenance du Pi. À l'autre extrémité du câble, on soudera un connecteur qui pourra s'enficher directement sur le port GPIO du Pi.

IV-B. Étape 2 : connexion des lecteurs

Image non disponible

Premièrement, soudez un connecteur coudé sur le circuit du lecteur. Il faut maintenant préparer un câble plat comprenant huit brins et des connecteurs femelles pour relier les lecteurs à la carte. Il est bien de faire une petite marque à chaque extrémité du câble pour s'orienter et ne pas câbler à l'envers. À ce stade, vous devriez pouvoir tester chaque lecteur et voir s'ils fonctionnent tous correctement.

Comme les lecteurs interfèrent avec le métal, il est important d'employer le moins de parties métalliques possible dans la construction du boîtier. À noter que les lecteurs peuvent aussi interférer entre eux, réduisant ainsi leur portée de détection. En conséquence, maintenez un écart d'au moins 70 mm entre chaque lecteur.

IV-C. Étape 3 : réalisation du boîtier

Nous avons utilisé des panneaux MDF pour réaliser la base du boîtier et son couvercle, avec des bandes en pin de 12 mm d'épaisseur pour les côtés du boîtier. La base et le couvercle font 280 x 105 mm, et des entretoises hexagonales de hauteur 10 mm sont prévues pour visser le couvercle sur la base. Les côtés sont assemblés entre eux par collage et collés ensuite sur la base. De petits trous borgnes ont été percés dans la planche pour avoir une réserve de colle supplémentaire et améliorer la prise. De la colle à bois polyuréthane a été employée et les différentes parties sont maintenues avec des serre-joints pendant le séchage. Pour obtenir le bon alignement des entretoises, maintenez le couvercle et la base du boîtier avec des serre-joints tandis que vous percez les trous dans les deux parties en même temps. Notez que les colles polyuréthane requièrent des joints humides, d'où la pulvérisation d'eau.

Image non disponible

IV-D. Étape 4 : finition du boîtier

Le boîtier a été assemblé et les coins ont été légèrement arrondis pour supprimer les angles vifs.

Les lecteurs ont été positionnés sur des plots en pin collés sur la base du boîtier, l'antenne du lecteur tourné vers la base, et fixés avec des vis autotaraudeuses. Faites en sorte que la façade du lecteur soit aussi proche que possible de la paroi du couvercle afin d'avoir la meilleure portée de lecture. On applique une première couche d'apprêt, puis deux couches de peinture laquée sur le boîtier. Enfin, des autocollants du logo Raspberry Pi sont placés sur le couvercle, au-dessus de chaque lecteur. Imprimez les illustrations de robot et collez-les sur les cartes RFID. Nous y avons également ajouté une feuille de plastique transparente adhésive pour une longévité supplémentaire.

Image non disponible

V. Aller plus loin

Une évolution sensible serait d'émettre un son lorsqu'une carte est présentée devant un lecteur. Vous pourriez aussi ajouter une LED à proximité de chaque lecteur qui s'illuminerait lorsqu'une carte se présente. Pourquoi pas encore ajouter la possibilité d'imprimer l'illustration finale du robot, pour en garder une trace ? Votre œuvre artistique est dessinée au crayon ? Que diriez-vous d'utiliser un logiciel de dessin pour la colorier ? N'importe lequel avec un simple outil de remplissage conviendrait. Respectez seulement le choix de quelques couleurs pour chaque robot, cela rendra votre œuvre plus attrayante lorsque les différentes parties des robots seront mélangées.

Cependant, le plus amusant vient si vous changez complètement d'illustrations. Nous avons fait une version utilisant des images de dinosaures provenant d'un livre d'illustrations de type Mix-Max. Elle mélange aussi les syllabes dans des noms afin d'en créer de nouveaux et les enfants adorent cela. Cette version n'implique pas seulement un nouveau travail d'illustration, mais aussi un passage du format portrait au format paysage pour l'affichage à l'écran.

Êtes-vous prêts à relever ce défi ?

VI. Notes de la Rédaction de Developpez.com

Cet article est une traduction de l'article écrit par Mike Cook et paru dans le n° 47 du magazine Image non disponibleTheMagPi, sous le titre Image non disponibleMixed Up - An RFID picture making game.

Retrouvez les projets de l'auteur publiés dans le magazine TheMagPi sur la plateforme GitHub.

Nous remercions les membres de la Rédaction de Developpez pour le travail de traduction et de relecture qu'ils ont effectué, en particulier :

Merci également à Claude Leloup pour sa relecture orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Licence Creative Commons
Le contenu de cet article est rédigé par Mike Cook et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.