Der Fahrer soll sich vor Antritt der Fahrt unter Verwendung eines RFID-Chips am Raspi anmelden. Dadurch soll die anstehende Fahrt eindeutig einem Fahrer zugeordnet werden können. Zum Einsatz kommt dabei das Modul RFID-RC522. Zu Testzwecken wird das RFID-Modul zunächst in Verbindung mit dem Betriebssystem Raspbian Stretch Lite (Kernel 4.14.34+) verwendet.

Zunächst muss das Serial Peripheral Interface (SPI) installiert bzw. aktiviert werden. Das SPI ist ein synchrones Datenbus-System mit dem digitale Schaltungen nach dem Master-Slave-Prinzip untereinander kommunizieren können.

Konfigurationsdatei von Raspbian aufrufen über:

sudo raspi-config

Unter Interfacing Options SPI aktivieren

Anschließend wird die SPI-Bibliothek für Python von Github heruntergeladen.

git clone https://github.com/lthiery/SPI-py.git

und mit folgendem Befehl installiert:

sudo python setup.py install

Nachdem die Installation der Bibliothek zur Ansteuerung abgeschlossen ist, können die Pins des Raspi mit dem RFID-RC522 verbunden werden. Die Pin-Belegung wird nachfolgenden vorgestellt:


Raspberry Pi     -> RFIC-RC522

GPIO8  (Pin24) -> SDA (Pin1)
GPIO11 (Pin23) -> SCK (Pin2)
GPIO10 (Pin19) -> MOSI (Pin3)
GPIO9 (Pin21)   -> MISO (Pin4)
nicht belegt -> IRQ (Pin5)
GND (Pin25) -> GND (Pin6)
GPIO25 (Pin22) -> RST (Pin7)
3.3V (Pin17) -> 3.3V (Pin8)


Die SPI-Bibliothek beinhaltet bereits ein Beispiel zum Auslesen eines RFID-Chips. Dieses Python-Skript wurde an die notwendigen Bedürfnisse zum Auslesen eines Schlüssels angepasst. Nachfolgend wird der Code vorgestellt:


import RPi.GPIO as GPIO
import MFRC522
import signal

#Variable zur Ueberwachung bis ein Chip eingelesen wird
continue_reading = True

# Erzeuge ein Objekt der Klasse MFRC522
MIFAREReader = MFRC522.MFRC522()

# Hinweis, dass das Modul aktiv ist und verwendet werden kann
print "RFID Reader is active"
print "Press Ctrl-C to stop."

# Warte auf einen Chip
while continue_reading:

# Einlesen eines Chips
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

# Auslesen der UID des Chips
(status,uid) = MIFAREReader.MFRC522_Anticoll()

# UID gefunden, Chip auslesen,anzeigen und Schleife verlassen
if status == MIFAREReader.MI_OK:

# Print UID
print "Card read UID: %s,%s,%s,%s" % (uid[0], uid[1], uid[2], uid[3])
continue_reading = False


Nächste Schritte sind das Zusammenführen des RFID-Moduls mit dem GSM/GPS-Moduls und der RGB-LED.

Fahrtenbuch (3): Integration und Test des RFID-Moduls