• Première étape
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
    • Serveur Web
  • Arduino & ESP8266
  • Automatisation de la maison
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
  • Serveur Web
  • Première étape
  • Automatisation de la maison
  • Anglais
  • Allemand
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Matériel et accessoires ; GPIO»Lecture des étiquettes RFID RC522 de Raspberry Pi (NFC)

Lecture des étiquettes RFID RC522 de Raspberry Pi (NFC)

Facebook Twitter LinkedIn Tumblr Email Reddit
Raspberry Pi RFID RC522 Türöffner
Share
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

La RFID est une technologie permettant de transmettre des données sans contact, qui est utilisée dans les cartes à puce. Les cartes d’accès peuvent être lues à l’aide d’un module RFID Raspberry Pi (RC522), ce qui permet, par exemple, de donner accès à des portes ou à des serrures. Les smartphones actuels en ont de semblables.

Dans ce tutoriel, je montrerai comment lire des é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 (ouvreur de porte, contrôle d’accès).

La NFC est une technologie connexe, dont les différences sont présentées ici. La RFID et la NFC transmettent toutes deux sur une fréquence de 13,56 MHz, c’est pourquoi les modules sont compatibles entre eux.

 

 

Pièces d’équipement utilisées

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

  • Raspberry Pi 4 (fonctionne également avec toutes les versions précédentes)
  • Mifare RC522 RFID Module (incl. KeyCard)
  • Câble jumper femelle-femelle
  • kit de soudure

Il existe également des lecteurs USB RFID, mais je ne les ai pas essayés.

Si vous voulez utiliser le lecteur de cartes comme contrôle d’entrée, etc., il est logique de donner une carte à chaque utilisateur. Vous pouvez également acheter ces cartes à puce en plus ou moins grande quantité pour une somme modique, puis écrire individuellement RC522 sur chaque carte (instructions ci-dessous).

 

 

Installation

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

RF522 Module Raspberry Pi
SDA Pin 24 / GPIO8 (CE0)
SCK Pin 23 / GPIO11 (SCKL)
MOSI Pin 19 / GPIO10 (MOSI)
MISO Pin 21 / GPIO9 (MISO)
IRQ —
GND Pin6 (GND)
RST Pin22 / GPIO25
3.3V Pin 1 (3V3)

 

L’ensemble ressemble schématiquement à ceci:

Raspberry Pi RFID RC522 NFC Breadboard
Connection Raspberry Pi RC522

 

 

Activation du SPI et installation du logiciel

Afin d’utiliser le Shield RFID RC522, nous avons besoin du bus SPI. Pour que le Kernel 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 le SPI :

sudo raspi-config

Activez sous « Options avancées »> « SPI » et confirmez le redémarrage (vous pouvez également utilisersudo reboot now).

Vous pouvez ensuite 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 paquets 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 ..

et ensuite la bibliothèque Raspberry Pi RFID RC522:

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

 

 

Test du lecteur/écriture RFID Raspberry Pi

En plus du module RC522, une carte blanche et un porte-clés compatible NFC sont généralement fournis. Ces pièces peuvent être utilisées pour l’authentification car elles sont inscriptibles et lisibles. Un smartphone compatible NFC (Android/iOS) peut également être utilisé (ce qui est le cas de la plupart des téléphones portables récents).

Pour effectuer le premier test de la carte/porte-clés, nous exécutons le script:

sudo python Read.py

Dès que la carte à puce est présenté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 stockées (numéros) sur la puce, nous éditons le fichier « Write.py ». (sudo nano Write.py). Pour ce faire, modifiez le code à partir de la ligne 55 comme suit (vous pouvez choisir librement les 16 nombres de data entre 0 et 255.  J’ai représenté un mot avec ASCII characters)

Python
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
            # Variable for the data to write
            data = [114, 97, 115, 112, 98, 101, 114, 114, 121, 45, 116, 117, 116, 111, 114, 0]
 
            # Fill the data with 0xFF
            #for x in range(0,16):
            #    data.append(0xFF)
 
            print "Sector 8 looked like this:"
            # Read block 8
            MIFAREReader.MFRC522_Read(8)
            print "\n"
 
            #print "Sector 8 will now be filled with 0xFF:"
            # Write the data
            MIFAREReader.MFRC522_Write(8, data)
            #print "\n"
 
            print "It now looks like this:"
            # Check to see if it was written
            MIFAREReader.MFRC522_Read(8)
            print "\n"
 
            """
            data = []
            # Fill the data with 0x00
            for x in range(0,16):
                data.append(0x00)
 
            print "Now we fill it with 0x00:"
            MIFAREReader.MFRC522_Write(8, data)
            print "\n"
 
            print "It is now empty:"
            # Check to see if it was written
            MIFAREReader.MFRC522_Read(8)
            print "\n"
            """

 

 

Utilisation du lecteur NFC/RFID dans les projets Raspberry Pi (serrure de porte, etc.)

Les deux fichiers Python « Read.py » et « Write.py » contiennent des exemples de code pour la lecture et l’écriture d’une puce qui peuvent être utilisés 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 exemple pour vérifier une serrure à code ou une serrure de porte. J’utilise un seul niveau d’authentification (vous pourriez aussi en définir plusieurs) avec un certain code initial. Les derniers chiffres fournissent des informations sur le détenteur de la carte (si ces données sont stockées quelque part). Vous ne pourriez identifier l’utilisateur que par son UID, mais je suppose que plusieurs cartes peuvent appartenir à un même utilisateur. Si cette solution ne vous plaît pas, vous pouvez bien sûr la modifier.

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

Python
331
332
333
334
335
336
337
338
339
340
341
342
343
344
  def MFRC522_Read(self, blockAddr):
    recvData = []
    recvData.append(self.PICC_READ)
    recvData.append(blockAddr)
    pOut = self.CalulateCRC(recvData)
    recvData.append(pOut[0])
    recvData.append(pOut[1])
    (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, recvData)
    if not(status == self.MI_OK):
      print "Error while reading!"
    i = 0
    #if len(backData) == 16:
    #  print "Sector "+str(blockAddr)+" "+str(backData)
    return backData

 

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

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python
# -*- coding: utf8 -*-
 
import RPi.GPIO as GPIO
import MFRC522
 
def sample_func(sample_var):
    # Beispiel Funktion
    # Skript starten, Daten loggen, etc.
    print("Test Funktion wurde aufgerufen")
 
# ...
 
MIFAREReader = MFRC522.MFRC522()
authcode = [114, 97, 115, 112, 98, 101, 114, 114, 121] # die ersten 9 Ziffern sind der Authentifizierungscode
 
try:
    while True:
        # Scan for cards    
        (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
 
        # If a card is found
        if status == MIFAREReader.MI_OK:
            # Get the UID of the card
            (status,uid) = MIFAREReader.MFRC522_Anticoll()
            # This is the default key for authentication
            key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
            # Select the scanned tag
            MIFAREReader.MFRC522_SelectTag(uid)
            # Authenticate
            status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)
            # Check if authenticated
            if status == MIFAREReader.MI_OK:
                # Read block 8
                data = MIFAREReader.MFRC522_Read(8)
                if data[:9] == authcode:
                    sample_func(data)
                #elif ...
 
except KeyboardInterrupt:
    print("Abbruch")
    GPIO.cleanup()

Comme vous pouvez le constater, le code est très simple et, comme je l’ai dit, ne devrait servir que d’impulsion pour lancer vos propres applications, plus sophistiquées. Le code en ligne doit, bien sûr, être adapté.

Quels sont les projets que vous envisagez de réaliser avec cet appareil ? J’envisage de construire une serrure de porte ou une serrure de tiroir/petit coffre-fort avec le lecteur RFID du Raspberry Pi.

Authentification Capteurs Raspberry Pi Clé Connexion NFC python RFID Surveillance transfert sans fil
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous ArticleReading out a Flow Meter/Water Flow Sensor on the Raspberry Pi
Next Article 10.1″ Raspberry Pi 4 Tablet – Review of the RasPad 3

Related Posts

Connecter un clavier Raspberry Pi – Code Lock

Enregistrer les données des capteurs Raspberry Pi avec ThingSpeak et les analyser

Construire un capteur de porte / fenêtre Raspberry Pi avec Reed Relais

Utiliser Raspberry Pi comme récepteur radio (autoradio FM, PC de voiture)

Leave A Reply Cancel Reply

Création d’un certificat SSL Raspberry Pi gratuit avec Let’s Encrypt

Mesure de la distance infrarouge avec Raspberry Pi (Sharp GP2Y0A02YK0F)

Ecran LCD Raspberry Pi : Affichage 16×2 caractères (HD44780)

Lire la gravité du capteur capacitif d’humidité du sol DFROBOT sur le Raspberry Pi

Installer Windows 10 IoT sur le Raspberry Pi

Configuration du Wi-Fi et du Bluetooth du Raspberry Pi 4

ABONNEZ-VOUS MAINTENANT
Et recevez de nouveaux tutoriels dans votre boîte de réception.
Cliquez ici pour soumettre!

Merci!

Nous vous contacterons bientôt.

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Politique de confidentialité
  • Conditions de service & Politique sur les cookies

Type above and press Enter to search. Press Esc to cancel.