Aus Raspberry Pi Geek 08/2022

Den Raspberry Pi mit RFID-Reader und Display verbinden

© Makoto Honda / 123RF.com

Kürbisinventur

Martin Mohr

Mit kostengünstigen Komponenten für die SPI-Schnittstelle rüsten Sie einen Raspberry Pi 4 im Handumdrehen zum Display-System für das kontaktlose Auslesen von Daten via RFID auf.

Die Idee ist schnell erklärt: In diesem Projekt möchten wir die Seriennummern aus RFID-Tags auslesen, die in 3D-gedruckten Kürbissen steckten – eine Detektivaufgabe der etwas anderen Art. Dazu schließen wir das RFID-Kit RC522 [1] und das 1,8 Zoll große SPI-TFT-Display ST7735 [2] an einem Raspberry Pi 4 an. Beide Module kosten im Online-Handel zusammen unter 15 Euro. In den Kürbissen stecken einfache RFID-Tags [3], die ebenfalls für kleines Geld zu bekommen sind. Das Projekt klingt erst einmal übersichtlich und so, als müsste es auf Anhieb klappen. Im Kasten “Pleiten, Pech und Pannen” lesen Sie, was trotzdem alles schiefgehen kann.

Der Schaltplan in Abbildung 1 zeigt, wie wir die Module mit dem Raspberry Pi verbunden haben. Zu Testzwecken sind noch je zwei Taster und LEDs vorgesehen. Das KiCad-Layout des Projekts finden Sie im Download-Bereich zu diesem Artikels enthalten. Falls Sie die Platine von einem Dienstleister fertigen lassen möchten, empfiehlt der Autor das Platinencenter [4]. Dort bekommen auch Privatpersonen eine professionelle Platine zu einem guten Preis – und das alles made in Germany.

Abbildung 1: Der Schaltplan für den Versuchsaufbau: rechts die Anschlüsse für das Display und den RFID-Reader.

Abbildung 1: Der Schaltplan für den Versuchsaufbau: rechts die Anschlüsse für das Display und den RFID-Reader.

Pleiten, Pech und Pannen

Nach einer kurzen Recherche hatte sich der Autor entschieden, welche Bibliotheken er zum Ansteuern der Module verwendet wollte. Nach einem Tag Grübeln und Programmieren stellte sich heraus, dass die Bibliothek für den RFID-Reader schon seit etlichen Jahren nicht mehr gepflegt wird. Daher ließ sie sich nur durch etliche Codeanpassungen dazu zu bewegen, unter Python 3 zu funktionieren. Werfen Sie bei Open-Source-Projekten also besser immer einen Blick auf das Datum des letzten Commits und die Issues. Daran erkennen Sie schnell, ob das Projekt noch von der Community weiterentwickelt wird.

Der Autor stolperte in letzter Zeit im Netz über etliche Softwareleichen, die auf den ersten Blick noch aktiv aussehen, aber schon seit Jahren vor sich hin gammeln. Beispielsweise wird das über Jahre hinweg sehr beliebte Tool WiringPi seit Längerem nicht mehr unterstützt. Das ist auch der Grund, warum es aus den Pi-OS-Paketquellen entfernt wurde. Das Internet vergisst allerdings nichts, und so stolpert man als Nutzer immer wieder über veraltete Anleitungen und How-to-Artikel.

In der Entwicklergemeinde gibt es viele Anhänger von Python, weil man damit schnell zu funktionierenden Programmen kommt. Gerade für Programmieranfänger soll der Einstieg in diese Sprache besonders leicht sein. Es kommt aber vor, dass hardwarenah arbeitende Python-Bibliotheken hastig geschrieben und nicht umfassend getestet wurden, wodurch Inkompatibilitäten entstehen. Daher mussten in diesem Projekt das Reader- und das Display-Programm getrennt werden.

Display und RFID-Reader

Jedes der Module ist an einer eigenen SPI-Schnittstelle angeschlossen. Abbildung 2 zeigt das komplett aufgebaute Projekt inklusive der in den Kürbissen versteckten RFID-Tags. Bitte beachten Sie, dass nur der Raspberry Pi 4 mehrere SPI-Schnittstellen an Bord hat. Wir gehen im nächsten Abschnitt noch ein wenig genauer darauf ein, wie Sie diese SPI-Schnittstellen im Detail ansprechen.

Abbildung 2: Der komplette Versuchsaufbau mit einer Armee von Kürbissen: vorne der Reader, hinten das Display.

Abbildung 2: Der komplette Versuchsaufbau mit einer Armee von Kürbissen: vorne der Reader, hinten das Display.

Der RasPi 4 verfügt über insgesamt sieben SPI-Schnittstellen, die sich alle über den 40-poligen Header des GPIO erreichen lassen. Die Vorgängermodelle kamen lediglich mit drei SPI-Schnittstellen, von denen nur zwei auf den Header herausgeführt wurden. Die Tabelle “Default-Pins” zeigt, welche Pins standardmäßig den einzelnen Schnittstellen auf dem Header entsprechen.

SPI

Header

Pin

SPI0

MOSI

19

SPI0

MISO

21

SPI0

SCLK

23

SPI0

CE0

24

SPI0

CE1

26

SPI1

MOSI

38

SPI1

MISO

35

SPI1

SCLK

40

SPI1

CE0

12

SPI1

CE1

11

SPI1

CE2

36

SPI3

MOSI

3

SPI3

MISO

28

SPI3

SCLK

5

SPI3

CE0

27

SPI3

CE1

18

SPI4

MOSI

31

SPI4

MISO

29

SPI4

SCLK

26

SPI4

CE0

7

SPI4

CE1

22

SPI5

MOSI

8

SPI5

MISO

33

SPI5

SCLK

10

SPI5

CE0

32

SPI5

CE1

37

SPI6

MOSI

38

SPI6

MISO

35

SPI6

SCLK

40

SPI6

CE0

12

SPI6

CE1

13

SPI-Schnittstelle auslesen

Beim Blick auf die Tabelle fällt auf, dass sich einige Anschlüsse überschneiden und die Schnittstelle SPI2 in der Standardkonfiguration nicht auf dem Header verfügbar ist. Das stellt aber kein Problem dar, da sich die Konfiguration der SPI-Schnittstellen mit dem Kommando dtoverlay anpassen lässt. Über dieses Tool erhalten Sie bei Bedarf auch eine Liste aller vordefinierten SPI-Geräte (Listing 1).

Listing 1

SPI-Schnittstellen

$ dtoverlay --all | grep spi.-
 spi0-1cs
 spi0-2cs
 spi1-1cs
 spi1-2cs
 spi1-3cs
 spi2-1cs
 spi2-2cs
 spi2-3cs
 spi3-1cs
 spi3-2cs
 spi4-1cs
 spi4-2cs
 spi5-1cs
 spi5-2cs
 spi6-1cs
 spi6-2cs

Für die einzelnen Schnittstellen gibt es jeweils mehrere Konfigurationen mit einer unterschiedlichen Anzahl von CS-Leitungen (Chip Select). Damit lassen sich die Schnittstellen sehr genau an die Anforderungen des Projekts anpassen. Um die konkrete Definition eines SPI-Geräts zu erhalten, verwenden Sie beim Aufruf von Dtoverlay die Option -h. Listing 2 zeigt ein Beispiel für die Ausgabe des Kommandos. Die Standard-Pins auf dem Header werden bei der Ausgabe mit angezeigt.

Listing 2

Ausgabe von Dtoverlay

$ dtoverlay -h spi1-3cs
Name:   spi1-3cs
Info: Enables spi1 with three chip select (CS) lines and associated
      spidev dev nodes. The gpio pin numbers for the CS lines and
      spidev device node creation are configurable.
      N.B.: spi1 is only accessible on devices with a 40pin header,
      eg: A+, B+, Zero and PI2 B; as well as the Compute Module.
Usage:  dtoverlay=spi1-3cs,<param>=<val>
Params: cs0_pin       GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
        cs1_pin       GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
        cs2_pin       GPIO pin for CS2 (default 16 - BCM SPI1_CE2).
        cs0_spidev    Set to 'disabled' to stop the creation of a
                      userspace device node /dev/spidev1.0 (default
                      is 'okay' or enabled).
        cs1_spidev    Set to 'disabled' to stop the creation of a
                      userspace device node /dev/spidev1.1 (default
                      is 'okay' or enabled).
        cs2_spidev    Set to 'disabled' to stop the creation of a
                      userspace device node /dev/spidev1.2 (default
                      is 'okay' or enabled).

Um die aktuell geladenen Overlays zu erhalten, nutzen Sie die Option -l. Eine Liste der vorhanden SPI-Geräte erhalten Sie über das Kommando ls /dev/spi*. Vergessen Sie nicht, vorab die SPI-Unterstützung mit der Zeile dtparam=spi=on in der Datei /boot/config.txt zu aktivieren. Alternativ verwenden Sie dafür das Konfigurationswerkzeug von Pi OS. Die entsprechende Option finden Sie unter 3**Interface**Options | I4**SPI.

Falls Sie bestimmte Overlays direkt beim Booten aktivieren möchten, können Sie diese auch mit in die Datei /boot/config.txt eintragen (etwa dtoverlay=spi1-2cs). Es bestünde prinzipiell auch die Möglichkeit, die einzelnen Leitungen der SPI-Schnittstellen mit Dtoverlay per Software umzuverdrahten, das würde allerdings an dieser Stelle zu weit führen.

RasPi vorbereiten

Als Betriebssystem für den Raspberry Pi dient ein aktuelles Pi OS Lite in der 32-Bit-Version. Listing 3 fasst die Kommandos zusammen, um das System auf den neuesten Stand zu bringen und die nötigen Programme und Bibliotheken aus den Paketquellen zu installieren. Die für die Integration des Displays und des Readers nötigen Bibliotheken beziehen Sie aus dem Python Package Index PIP.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben