lundi 17 avril 2017

Module RFID RC522 et Raspberry Pi (Python)


Pour la quatrième fois depuis le début du mois, je vous propose de lire le numéro de série d'un tag RFID au moyen d'un module RC522.  Cette fois, c'est un Raspberry Pi qui aura l'honneur de piloter notre module RC522, grâce à un script rédigé en Python (les articles précédents mettaient plutôt en scène un Arduino, un MSP430 Launchpad et un STM32 Nucleo).

Si vous n'êtes pas déjà l'heureux propriétaire d'un module RC522, des commerçants chinois se feront un plaisir de vous en vendre un (accompagné d'un ou deux tags RFID) pour moins de 2 euros.


Activation de SPI sur le Rasbperry Pi

Le module RC522 utilise le protocole de communication SPI.  Vous devez donc vous assurer que le SPI est activé sur votre Raspberry Pi.  Pour ce faire, vous choisissez "Configuration du Raspberry Pi" dans le menu "Préférences"...


...et vous vous assurez que SPI est activé.


(C'est fou comme les choses évoluent rapidement dans le monde du Raspberry Pi:  y a-t-il quelqu'un quelque part qui s'ennuie de raspi-config?)

Installation de la bibliothèque pi-rc522

Nous utiliserons la bibliothèque pi-rc522 par ondryaso.  Pour ce faire, la façon la plus simple (à mon avis), est d'utiliser pip:

sudo pip install pi-rc522

La bibliothèque est alors installée dans le répertoire /usr/local/python2.7/dist-packages.

Circuit (connexions)

Les connexions à effectuer sont:
  • Pin SDA du RC522 --- Pin #24 (GPIO 8) du Raspberry Pi
  • Pin SCK du RC522 --- Pin#23 (GPIO 11) du Raspberry Pi
  • Pin MOSI du RC522 --- Pin #19 (GPIO 10) du Raspberry Pi
  • Pin MISO du RC522 --- Pin #21 (GPIO 9) du Rasbperry Pi
  • Pin IRQ du RC522 --- Pin #18 (GPIO 24) du Raspberry Pi
  • Pin GND du RC522 --- Une des pins GND du Raspberry Pi
  • Pin RST du RC522 --- Pin #22 (GPIO 25) du Raspberry Pi
  • Pin 3V3 du RC522 --- Pin 3V3 du Raspberry Pi
  • LED verte (et résistance) --- Pin #15 (GPIO 22) du Raspberry Pi
  • LED rouge (et résistance) --- Pin #16 (GPIO 23) du Rasbperry Pi



Script pour récupérer l'UID

Voici un premier script en Python qui affiche  dans le terminal l'UID (numéro de série) d'un tag RFID qu'on approche du module RC522.




Sur la capture d'écran ci-dessus, vous pouvez constater que l'UID de la carte que j'ai utilisée est constituée des valeurs 144, 207, 148, 117 et 190.  Ces nombres seront utilisés dans le prochain script.


Script qui accepte ou rejette l'UID

L'idée est d'accomplir une action seulement si l'utilisateur présente un tag RFID dont l'UID est approuvé.  Avec ce script en Python, la LED verte s'allume uniquement lorsqu'on approche un tag RFID portant le bon UID.  Si on approche un tag RFID portant un autre UID, c'est la LED rouge qui s'allume.

Avant d'utiliser le script, n'oubliez pas de remplacer le contenu de la variable "bonUID" par l'UID de votre carte.

Vous pourrez ensuite modifier ce script de base pour en faire quelque chose de plus utile ou plus spectaculaire (actionner une serrure, mettre à jour une base de donnée consignant l'heure d'entrée et sortie des employés, etc.).



Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...