Lire badge RFID

Verwenden Sie einen RFID-Leser mit dem Raspberry Pi.

Aktualisiert 11 Juli 2019 - 0 Kommentare - , , ,

ⓘ Dieser Artikel wurde möglicherweise teilweise oder vollständig mit automatischen Tools übersetzt. Wir entschuldigen uns für etwaige Fehler.

Dieses Tutorial ist der zweite Teil einer Datei, die sich mit der Entdeckung der Elektronik mit dem Raspberry Pi befasst. Wenn Sie es nicht gelesen haben, empfehle ich Ihnen, das erste Tutorial zur Steuerung einer LED mit dem Raspberry Pi zu lesen.

Ob für Identifikationssysteme, Bestandsverwaltung, Zahlung oder für die Hausautomation, RFID-Chips werden immer häufiger eingesetzt.

In diesem Tutorial erfahren Sie, wie Sie RFID-Karten mit dem Raspberry Pi und einem RC522-RFID-Lesegerät lesen.

Am Ende des Tutorials können Sie ein RFID-Abzeichen lesen, prüfen, ob es das erwartete ist, und je nach Ergebnis eine grüne oder rote LED aufleuchten lassen. Alles was Sie tun müssen, ist dieses grundlegende Beispiel für das Projekt Ihrer Wahl anzupassen!

Die notwendige Ausrüstung

Um dieses Tutorial abzuschließen, benötigen Sie die folgenden Materialien:

Montieren Sie den RC522 RFID-Leser

Wenn Sie das RC522-RFID-Modul erhalten, sehen Sie, dass es mit einem Satz von 2 x 8 Pins geliefert wird. Der erste Schritt besteht daher darin, 8 dieser Stifte auf den RFID-Leser zu löten. Keine Panik, Löten ist sehr einfach!

Sie müssen daher die PINs in die Steckplätze auf der RFID-Karte einführen und mit Ihrem Bügeleisen löten.

Geschweißtes RC522 RFID-Modul
Sie werden wahrscheinlich gerade und gekrümmte Verbinder finden. Ich rate Ihnen, die gebogene, praktischere zu verwenden.

Wenn Sie noch nie geschweißt haben, empfehle ich diese hervorragende Anleitung, um zu lernen, wie man von François aus framboise314.fr schweißt.

Verbinden Sie den RFID-Leser und die LEDs mit dem Raspberry Pi

Bevor wir mit dem Schreiben des Codes fortfahren, mit dem wir RFID-Ausweise lesen und die LEDs steuern können, müssen wir zuerst alle Komponenten an den Raspberry Pi anschließen.

Zur Erinnerung: Das Ein- und Ausstecken von Komponenten muss immer bei ausgeschaltetem Raspberry Pi erfolgen.

Schließen Sie den RC522-RFID-Leser an den Raspberry Pi an

Die erste Komponente, die wir anschließen werden, ist der RFID-Leser.

Zur Steuerung des RFID-Lesegeräts verwenden wir eine externe Bibliothek. Leider wird dies mit den GPIO-Ports geschrieben, die direkt im Code eingegeben wurden. Dies bedeutet, dass wir sie nicht anders konfigurieren können und daher gezwungen sind, genau dieselben Ports wie die in der Bibliothek bereitgestellten zu verwenden.

In der folgenden Tabelle sind die Reader-Ports und der GPIO-Port des Raspberry Pi aufgeführt, an den Sie ihn anschließen müssen.

Passende GPIO-Ports / RC522-Ports
Verbinden Sie die Ports des RC522 mit den entsprechenden Ports des Raspberry Pi.

Zur Erinnerung: Im ersten Tutorial dieser Serie finden Sie eine Karte der GPIO-Ports des Raspberry Pi.

Schließen Sie die LEDs an

Verbinden wir nach dem RFID-Lesegerät die LEDs mit dem Raspberry Pi.

Wir werden eine sehr einfache Montage machen. Bei jeder LED ist die Anode (das längliche Bein) an einen GPIO-Anschluss angeschlossen, und bei den beiden LEDs ist die Anode an denselben Widerstand angeschlossen, der selbst an einen GPIO-Anschluss vom Ground-Typ des Raspberry Pi angeschlossen ist.

Daher verwenden wir einen einzelnen Widerstand für zwei LEDs und begrenzen die Anzahl der Kabel.

Sobald die RFID-Karte und die LEDs mit dem Pi verbunden sind, sollten Sie eine Baugruppe haben, die dieser ähnelt.

Beachten Sie, dass Sie den RC522 auch direkt mit dem Raspberry Pi verbinden können, ohne ein Brotbord zu verwenden.

Schreiben Sie das Programm, um ein RFID-Abzeichen zu lesen.

Wir haben einen Funktionskreis, wir müssen nur die SPI-Ports des Raspberry Pi aktivieren, die für die Verwendung des RFID-Lesegeräts erforderlich sind, und das Programm schreiben, das ein RFID-Abzeichen liest.

Wie im vorherigen Tutorial wird das Programm in Python geschrieben. Dieses Tutorial ist kein Python-Kurs und wir werden das Programm nur kurz erklären. Wenn Sie mehr über Python erfahren möchten, haben wir einen Einführungskurs in Python veröffentlicht.

Aktivieren Sie das SPI-Protokoll des Raspberry Pi

Bevor wir das Programm schreiben, aktivieren wir das SPI-Protokoll auf unserem Raspberry Pi, damit wir das RFID-Modul verwenden können.

Um es zu aktivieren, führen Sie einfach den Befehl aus sudo raspi-configWählen Sie dann auf Ihrer Himbeere Interfacing Options, SPI, Yes und schlussendlich Finish.

Installieren Sie die pi-rc522-Bibliothek

Letzte Voraussetzung ist die Installation der Python3-Bibliothek "pi-rc522", mit der Sie den RC522-Player steuern können.

Wir werden Pip3 verwenden, einen Bibliotheksmanager für Python.

Sie müssen nur den Befehl ausführen:

sudo pip3 install pi-rc522

Schreiben Sie das Programm, um die Kennung eines RFID-Ausweises zu lesen

Jedes RFID-Emblem hat eine eindeutige Kennung. Durch Lesen dieses Bezeichners und Vergleichen mit einer Liste autorisierter Bezeichner können wir feststellen, ob ein Ausweis autorisiert ist.

Wir werden daher ein Programm schreiben, mit dem wir die eindeutige Kennung eines RFID-Ausweises lesen können.

Wie im vorherigen Tutorial werden wir das Programm in den Ordner schreiben /home/pi/electronic (Wenn Sie es noch nicht getan haben, erstellen Sie den Ordner).

Erstellen Sie in diesem Ordner eine Datei read_rfid_uid.py und geben Sie den folgenden Code ein:

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            print('Vous avez passé le badge avec l'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID
            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Sobald die Datei gespeichert wurde, wird sie mit dem folgenden Befehl zur Ausführung autorisiert:

sudo chmod +x /home/pi/electronic/read_rfid_uid.py

Wir können das Programm jetzt starten, indem wir es mit dem folgenden Befehl aufrufen:

/home/pi/electronic/read_rfid_uid.py

Jedes Mal, wenn Sie einen RFID-Ausweis vor dem Lesegerät vorbeiführen, wird dessen eindeutige Kennung angezeigt!

Schreiben Sie ein Programm, das anzeigt, ob ein Ausweis gültig ist oder nicht.

Nachdem wir die eindeutige Kennung eines Ausweises lesen können, müssen wir nur noch den vorherigen Code anpassen, um die gelesene Kennung mit einer im Programm geschriebenen Kennung zu vergleichen.

Wir werden daher das vorherige Programm ein wenig modifizieren, damit es die gelesene UID mit der im Programm geschriebenen vergleicht und die rote oder grüne LED je nach Ergebnis aufleuchtet.

Kopieren Sie die vorherige Datei in eine neue Datei verify_rfid.py und ändern Sie es für den folgenden Code:

Bearbeiten Sie die Zeile RFID_UID um die Kennung Ihres RFID-Tags zu setzen!

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge
LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte
RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID

#Définit la fonction permettant d'allumer une led
def turn_led_on (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.HIGH) #Allume la led

#Définit la fonction permettant d'éteindre une led
def turn_led_off (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.LOW) #Eteind la led

#Définit la fonction permettant d'allumer la rouge et éteindre la verte
def turn_red_on () :
    turn_led_off(LED_GREEN) #Eteind la led verte
    turn_led_on(LED_RED) #Allume la led rouge

#Définit la fonction permettant d'allumer la verte et éteindre la rouge
def turn_green_on () :
    turn_led_off(LED_RED) #Eteind la led rouge
    turn_led_on(LED_GREEN) #Allume la led verte


rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            if RFID_UID == uid :
                print('Badge {} autorisé !'.format(uid))
                turn_green_on()
            else :
                print('Badge {} interdit !'.format(uid))
                turn_red_on()

            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Alles was Sie tun müssen, ist das Programm zu starten und zu testen!

Sie können den Code dann für Ihre eigenen Projekte anpassen, z. B. für die Erstellung eines intelligenten Schlosses oder sogar einer Jukebox mithilfe von RFID-Tags!

Zur Information erhalten Sie den gesamten Code für dieses Tutorial auf dem Github von Raspbian France.

Im nächsten Tutorial erfahren Sie, wie Sie einen Servomotor mit dem Raspberry Pi steuern!

Aktie
Newsletter
Autor:
Raspberry Pi FR
Treten Sie der Raspberry Pi-Community bei
Ein 35-Euro-Computer verkaufte sich bereits 10 Millionen Mal
KAUFEN SIE DEN NEUEN RASPBERRY PI 4
Verwandte Tutorials
Schalten Sie eine LED mit dem Raspberry Pi und Python ein und aus. Aktivieren Sie die serielle TTL-Schnittstelle des Raspberry Pi und überprüfen Sie, ob sie funktioniert. Raspberry Pi Cluster mit Docker Swarm erstellen Blinkt die integrierte grüne LED des Raspberry Pi. Lernen Sie das Programmieren mit Python 3 und dem Raspberry Pi, Einführungskurs.
Keine Kommentare
Aktie
Newsletter abonnieren
Abonnieren Sie den Newsletter.
Hat Ihnen dieser Artikel gefallen?
Abonnieren und auf dem Laufenden bleiben!