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.