Abonnement aux commentaires

S'abonner pour recevoir les commentaires suivants par email

まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Sound Voltex -7-

Suite de la bidouille précédente :

Pour aller plus loin en réalisme et en fonctionnalités, on va voir ici comment intégrer un lecteur RFID et un pavé numérique permettant de s'authentifier en tant que joueur·euse, afin de charger son profil, accéder à la sauvegarde des scores et autres joyeusetés !


L'Arduino va donc communiquer avec les deux modules en I²C via les broches SDA et SCL, c'est plutôt très pratique ce protocole de communication !

  • Attention cependant, autant y'a pas de soucis avec le PN532 qui fonctionne en 5V, autant il faut bien faire attention avec le MPR121 qui lui fonctionne en 3,3V.

Donc on ne l'alimente pas en 5V par erreur, mais avec le 3,3V issu par exemple d'un LM317 ou autre, et on lui parle correctement en niveaux logiques compatibles, d'où l'utilisation du convertisseur, chargé de la transformation 5V <-> 3,3V.
L'Arduino va alors proposer la lecture de badges NFC, et via son port USB, un HID device sous forme d'un clavier, limité au pavé numérique.

Câblage :

  • J'ai soudé ce montage sur une petite plaquette à trous. Pour gagner de la place le convertisseur de niveau est planqué sous l'Arduino.


Rien de compliqué, ça doit bien se passer si on est rigoureux, c'est juste long à faire ces machins-là.

Intégration au panel :

La question de savoir où placer les touches tactiles, une fois vérifié qu'elles étaient bien détectées à travers le plastique, bah elle a été vite répondue.
Droitier, donc à droite là où y'a de la place, et le lecteur RFID, à gauche. On dessinera un petit visuel sur la déco pour localiser tout ça.

  • On creuse le dessus du panel donc, pour loger le pavé tactile MPR121, ici au ciseau à bois, ne disposant pas de la défonceuse électrique.


Puis un trou pour passer les câbles et un creux supplémentaire pour ne pas gêner les puces.

  • Et voilà l'idée en image, c'est maintenant clair…


Pour les câbles j'ai pris soin de faire les soudures les plus plates possible afin de ne pas gêner le plexi, voire même de limer les plus gênantes.

  • Pour le lecteur RFID, c'est plus simple, deux vis… Reste à raccorder ça sur la plaquette Arduino.


  • Avec la déco ainsi marquée, on sait maintenant ou apposer son badge et où taper le code.


À propos de badge, deux m'ont été livrés avec le module PN532, et pour en obtenir d'autres il faut faire attention de bien choisir un modèle compatible avec ce lecteur, à savoir ISO14443A MF Classic 1K S50, 13.56MHz

Code Arduino :

C'est une nouvelle fois grâce à CrazyRedMachine que j'ai pu progresser très vite sur la partie RFID, grâce à un dérivé du code écrit à la base pour un autre type de lecteur RFID, disponible donc dans une branche de son dépôt github. Pour la partie tactile, je me suis débrouillé avec les exemples que j'ai pu trouver.

J'ai donc mixé le code que j'ai écris pour le MPR121 utilisé comme clavier USB (avec les touches du pavé numérique configurées), avec le code PN532-cardio de Mr Red, en simplifiant celui-ci pour ne garder que l'essentiel, ce qui à mon niveau me simplifie grandement sa lecture.

Concernant le MPR121, j'utilise la librairie Adafruit_MPR121, qu'il faut bien penser à la modifier manuellement, afin d'augmenter la sensibilité des touches pour qu'elles puissent être détectées à travers le plastique de 2,5 mm d'épais.

  • Donc d'origine, le fichier Adafruit_MPR121.h stocké chez-moi sur ~/Arduino/libraries/Adafruit_MPR121 propose ces réglages de THRESHOLD :
// The default I2C address
#define MPR121_I2CADDR_DEFAULT 0x5A        ///< default I2C address
#define MPR121_TOUCH_THRESHOLD_DEFAULT 12  ///< default touch threshold value
#define MPR121_RELEASE_THRESHOLD_DEFAULT 6 ///< default relese threshold value
  • Qu'il faut donc passer de 12 à 2, et 6 à 0 :
// The default I2C address
#define MPR121_I2CADDR_DEFAULT 0x5A        ///< default I2C address
#define MPR121_TOUCH_THRESHOLD_DEFAULT 2  ///< default touch threshold value
#define MPR121_RELEASE_THRESHOLD_DEFAULT 0 ///< default relese threshold value

À ajuster sinon aux matériaux dont on dispose.

  • Une petite vidéo :

Ressources :
- https://diyelectromusic.wordpress.com/2021/07/04/arduino-mpr121-midi-touch-piano/
- https://learn.sparkfun.com/tutorials/mpr121-hookup-guide/all
- https://electropeak.com/learn/interfacing-mpr121-touch-3x4-keypad-module-with-arduino/
- https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/wiring
- http://wiki.sunfounder.cc/index.php?title=PN532_NFC_RFID_Module

Fin !

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet