Table des matières
Utiliser un lecteur RFID ACR 122U avec GNU/Linux
Présentation
Dans le cadre de la réalisation d'une table interactive, il m'a été demandé de pouvoir interagir avec un ordinateur avec un objet. Pour ce faire, j'ai identifié la technologie RFID comme étant adéquate. Pour plus d'info sur la technologie, faîtes un tour chez Wikipédia : https://fr.wikipedia.org/wiki/Radio-identification .
Après quelques recherches sur les internets, je suis tombé sur la référence ACR 122U, produite en Chine, et qui semble être la plus diffusée. Un capteur coûte aux environs d'une cinquantaine d'euros.
Installation du driver
Voici maintenant la suite de commande détaillée qui m’a permis d’installer le lecteur sur un Raspberry Pi, et un Debian Stretch, selon la source suivante : https://oneguyoneblog.com/2015/09/16/acr122u-nfc-usb-reader-raspberry-pi/
Mise-à-jour des paquets :
sudo apt-get update
Installation des paquets nécessaires :
sudo apt-get -y install subversion autoconf debhelper flex libusb-dev libpcsclite-dev libpcsclite1 libccid pcscd pcsc-tools libpcsc-perl libusb-1.0-0-dev libtool libssl-dev cmake checkinstall
Installation du driver pour le lecteur :
wget https://github.com/nfc-tools/libnfc/releases/download/libnfc-1.7.0-rc7/libnfc-1.7.0-rc7.tar.gz
Décompressage du paquet :
tar -xvzf libnfc-1.7.0-rc7.tar.gz
On entre dans le répertoire :
cd libnfc-1.7.0-rc7
Configuration du paquet :
./configure –with-drivers=acr122_usb
Compilation :
make
Installation :
sudo make install
Reconfiguration de ldconfig :
sudo sh -c "echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf"
Mise-à-jour de ldconfig :
sudo ldconfig
Une fois que ceci est fait, utiliser cette commande :
sudo nfc-list
Permet de détecter le lecteur RFID. S’il n’y a pas de tag :
NFC device: ACS / ACR122U PICC Interface opened
Avec un tag :
NFC device: ACS / ACR122U PICC Interface opened 1 ISO14443A passive target(s) found: ISO/IEC 14443A (106 kbps) target: ATQA (SENS_RES): 00 04 UID (NFCID1): 9a 8b 6e 02 SAK (SEL_RES): 08
La référence UID de 8 caractères est l’identifiant unique du tag, qui nous permettra plus tard de l’identifier.
Un script en Python pour l'utiliser
import os, re from subprocess import Popen, PIPE tags = [ "e0 f6 6e 02", "80 16 6e 02", "7b 3a 6e 02" ] fonctions = [ fonction1, fonction2, fonction3 ] while True: tag_reading = Popen(["nfc-list"], stdout=PIPE).communicate()[0] for i in range( len( tags ) ): if re.search( tags[i], tag_reading ): fonctions[i]() sleep( 0.5 ) def fonction1(): pass def fonction2(): pass def fonction3(): pass