Verwenden Sie einen RFID-Leser mit dem Raspberry Pi.
Kommentareⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
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:
- Ein Himbeer-Pi
- Seine Diät
- Micro SD Karte
- Ein RC522 RFID-Lesegerät
- Eine Reihe von Kabeln, LEDs, Widerständen und Testplatten
- Ein Lötkolben und Lötmittel
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.
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.
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.
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-config
Wä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!