Lecture des étiquettes Raspberry Pi RFID RC522 (NFC)

Lecture des etiquettes Raspberry Pi RFID RC522 NFC
Lecture des etiquettes Raspberry Pi RFID RC522 NFC

La RFID est une technologie par laquelle les données sont transmises sans contact, qui est utilisée dans les cartes à puce. Les cartes d’accès peuvent être lues avec un module RFID Raspberry Pi (RC522) et donc par ex. l’accès aux portes ou aux serrures peut être donné. Les smartphones actuels en ont des similaires.

Dans ce tutoriel, je vais montrer comment lire les étiquettes RFID avec le RC522 et le Raspberry Pi et aussi écrire des cartes à puce. Le code présenté peut également être utilisé pour d’autres projets (ouvre-porte, contrôle d’accès).

Le NFC est une technologie connexe, dont les différences peuvent être trouvées ici. Les deux RFID et NFC émettent sur une fréquence de 13,56 MHz, c’est pourquoi les modules sont compatibles les uns avec les autres.

Matériel requis

J’ai utilisé les pièces (de construction) suivantes pour ce didacticiel:

Il y a aussi Lecteurs USB RFID, mais je ne les ai pas essayés.

Si vous souhaitez utiliser le lecteur de carte comme contrôle d’entrée, etc., il est logique de donner une carte à chaque utilisateur. Vous pouvez également acheter ces cartes à puce dans des quantités plus petites et plus grandes pour un peu d’argent, puis écrivez individuellement RC522 sur chaque carte (instructions ci-dessous)

Installer

La barrette de broches de mon module n’était pas encore soudée, j’ai donc dû la souder avant de pouvoir connecter les broches.
Le câblage est le suivant:

Module RF522 raspberry pi
SDA Broche 24 / GPIO8 (CE0)
SCK Broche 23 / GPIO11 (SCKL)
MOSI Broche 19 / GPIO10 (MOSI)
MISO Broche 21 / GPIO9 (MISO)
IRQ
GND Pin6 (GND)
RST Pin22 / GPIO25
3,3 V Broche 1 (3V3)

Le tout ressemble schématiquement à ceci:

Raspberry Pi RFID RC522 Breadboard NFC

Connexion Raspberry Pi RC522

Activation de SPI et de l’installation du logiciel

Pour utiliser le blindage RFID RC522, nous avons besoin du bus SPI. Pour que le noyau soit chargé au démarrage, nous éditons le fichier de configuration:

sudo nano /boot/config.txt

Le contenu suivant est ajouté à la fin du fichier:

device_tree_param=spi=on
dtoverlay=spi-bcm2708

Vous enregistrez et quittez avec CTRL + O, CTRL + X. Ensuite, nous activons SPI:

sudo raspi-config

Activez sous «Options avancées»> «SPI» et confirmez le redémarrage (utilisez égalementsudo reboot now).

Ensuite, vous pouvez utiliser dmesg | grep spi pour vérifier si le module a été chargé. La sortie devrait ressembler à ceci:

pi@raspberrypi:~ $ dmesg | grep spi
[   10.784368] bcm2708_spi 20204000.spi: master is unqueued, this is deprecated
[   10.813403] bcm2708_spi 20204000.spi: SPI Controller at 0x20204000 (irq 80)

Maintenant, les packages doivent être installés pour que nous puissions accéder au bus SPI et charger une bibliothèque correspondante à partir de GitHub.

sudo apt-get install git python-dev --yes

Tout d’abord, nous installons le module Python SPI

git clone https://github.com/lthiery/SPI-Py.git
cd SPI-Py
sudo python setup.py install
cd ..

puis la bibliothèque Raspberry Pi RFID RC522:

git clone https://github.com/mxgxw/MFRC522-python.git && cd MFRC522-python

Test du lecteur / enregistreur RFID Raspberry Pi

En plus du module RC522, une carte blanche et un porte-clés compatible NFC sont généralement fournis. Ces parties peuvent être utilisées comme authentification car elles sont inscriptibles et lisibles. Un smartphone compatible NFC (Android / iOS) pourrait également être utilisé (comme la plupart des téléphones portables les plus récents).

Pour exécuter le premier test du porte-clés carte / clé, nous exécutons le script:

sudo python Read.py

Dès que la carte à puce est attachée et reconnue, vous verrez une sortie comme celle-ci:

pi@raspberrypi:~/MFRC522-python $ sudo python Read.py
Welcome to the MFRC522 data read example
Press Ctrl-C to stop.
Card detected
Card read UID: 69,245,238,117
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Afin de modifier les données (numéros) stockées sur la puce, nous éditons le fichier «Write.py» (sudo nano Write.py). Pour ce faire, modifiez le code de la ligne 55 comme suit (vous pouvez choisir librement les 16 chiffres data entre 0 et 255. J’ai représenté un mot avec Caractères ASCII)

Utilisation d’un lecteur NFC / RFID dans des projets Raspberry Pi (verrouillage de porte, etc.)

Les deux fichiers Python «Read.py» et «Write.py» contiennent un exemple de code pour lire et écrire une puce qui peut être utilisée dans d’autres projets. Le fichier le plus important est «MFRC522.py», qui peut être copié dans un autre projet.

L’extrait suivant peut être utilisé dans d’autres projets, par ex. comme vérification d’une serrure à code ou d’une serrure de porte. J’utilise un niveau d’authentification (vous pouvez également en définir plusieurs) avec un certain code initial. Les derniers chiffres fournissent des informations sur le titulaire de la carte (si ces données sont stockées quelque part). Vous ne pouvez identifier l’utilisateur que par l’UID, mais je suppose que plusieurs cartes peuvent appartenir à un seul utilisateur. Si vous n’aimez pas cette solution, vous pouvez bien sûr la changer.

J’ai apporté une petite modification au fichier «MFRC522.py» afin que le MIFAREReader.MFRC522_Read la fonction a une valeur de retour:

L’exemple de code ressemblait alors à ceci (les modifications précédentes sont importantes, sinon aucune comparaison ne peut avoir lieu):

Comme vous pouvez le voir, le code est très simple et, comme je l’ai dit, ne devrait servir qu’à donner un élan pour démarrer vos propres applications, plus sophistiquées. Le code en ligne doit bien entendu être ajusté.

Quels projets envisagez-vous d’en faire? J’envisage de construire une serrure de porte ou une serrure de tiroir / petit coffre-fort avec le lecteur RFID Raspberry Pi.

  • AptoFun 2 pcs RC522 Module de Lecture de Carte RFID pour Arduino, Raspberry Pi
    Le RC522 est le lecteur de carte RFID intégré qui fonctionne sur une communication sans contact 13,56 MHz. Compatible avec le signal 14443A. DSP deal with ISO14443A frames and error correction MF RC522 Support Mifare Series High Speed non-contact communication, double communication vitesse jusqu'à 424 Kb/s Le module a une stabilité élevée, une longue distance de lecture de carte et est facile à utiliser. Avant de procéder à ce module, il convient pour le programme et le lecteur de cartes.
  • Digitalkey PN532 Module de lecture/écriture NFC - RFID V3 avec 2 étiquettes et 2 USB-Ttl - Compatible avec Arduino Raspberry Pi et autres projets IOT (Original)
    Support pour lecture et écriture RFID, communication P2P avec appareils identiques, NFC avec téléphone Android. Prend en charge l'interface I2C, SPI et HSU (High Speed UART), facile à changer entre les modes grâce aux deux commutateurs présents. Le module RFID prend en charge les cartes : Mifare 1k, 4k, srix4k, ultralight, et DesFire, cartes ISO/IEC 14443-4 comme CD97BX, CD light, Desfire, P5CN072 (SMX), cartes Innovision Jewel comme IRT5001, cartes FeliCa telles que RCS_860 et RCS_854 Distance de lecture jusqu'à 5 cm ~ 7 cm, petite taille et facile à insérer dans votre projet. Facturation et assistance garanties - 10 ans d'expérience italienne par Digitalkey.it
  • sb components Carte d'extension NFC pour Raspberry Pi Pico 13,56 MHz Carte d'extension RFID Lecture/écriture NFC pour Raspberry Pi Pico
    Capacités NFC améliorées : l'extension Pico NFC pour Raspberry Pi PICO offre une fonctionnalité avancée de lecture/écriture NFC de 13,56 MHz, permettant une communication sans contact transparente pour des capacités polyvalentes de l'appareil. Écran OLED intégré de 0,91" : doté d'un écran OLED intégré, l'extension facilite une interface visuelle, améliorant l'interaction de l'utilisateur et les capacités d'affichage pour diverses applications. Options de programmation polyvalentes : profitez d'une programmation pratique par glisser-déposer via un stockage de masse via USB, offrant une expérience conviviale pour les développeurs travaillant avec MicroPython, CircuitPython et Arduino IDE. Connectivité flexible : équipé d'une alimentation de type C/UART, l'extension assure une alimentation et une communication efficaces. Le répartiteur GPIO multifonction prend en charge diverses fonctions telles que les E/S générales, UART, I2C, SPI, ADC et PWM. Adaptable pour divers projets : avec la compatibilité pour plusieurs protocoles NFC, la prise en charge HID pour la simulation de souris ou de clavier, et un buzzer multi-tunes pour les alertes audio, l'extension Pico NFC est parfaite pour un accès sécurisé, des projets IoT et des expositions interactives.