NFC-Modul (PN532) mit Raspberry Pi Pico

Erfahre, wie du mit einem NFC-Modul (PN532) und dem Raspberry Pi Pico eine einfache Zugangskontrolle umsetzen kannst.

Was sind NFC-Tags?

NFC-Tags (Near Field Communication) sind kleine, passive Chips, die drahtlos mit einem Lesegerät kommunizieren können – z. B. einem Smartphone oder einem Mikrocontroller mit NFC-Modul. Sie bestehen aus einem Mikrochip mit etwas Speicher und einer Antenne.

Da sie keine eigene Stromversorgung benötigen, beziehen sie ihre Energie direkt aus dem elektromagnetischen Feld des Lesegeräts. Sobald sie aktiviert sind, können sie einfache Daten wie eine eindeutige ID (UID), URLs oder Zugangsdaten zurücksenden.

NFC-Tags finden sich z. B. in Zugangskarten, Fahrkarten, Werbeaufklebern oder als Schlüsselanhänger und ermöglichen schnelle, berührungslose Interaktionen auf kurze Distanz (meist <4 cm).

Das PN532-Modul

Das PN532-Modul ist eines der bekanntesten NFC-Module für Mikrocontroller-Projekte. Es basiert auf dem PN532-Chip von NXP, der NFC- und RFID-Kommunikation im 13,56 MHz-Bereich unterstützt. Das Modul kann sowohl NFC-Tags lesen, schreiben als auch mit NFC-fähigen Geräten wie Smartphones kommunizieren.

Ein großer Vorteil des PN532: Es unterstützt mehrere Schnittstellen – UART, I2C und SPI –, was es vielseitig einsetzbar macht. Die Kommunikation über UART eignet sich besonders gut für einfache Microcontroller wie den Raspberry Pi Pico oder Pico W.

Typische Anwendungen reichen von Zugangskontrollen über automatisierte Systeme bis hin zu DIY-Projekten mit kontaktloser Identifikation.

Schritt 1: Verkabelung mit dem Raspberry Pi Pico

Um das PN532-Modul mit einem Raspberry Pi Pico oder Pico W zu verbinden, nutzen wir die UART-Schnittstelle. Das Modul hat in der Regel vier relevante Pins: VCC, GND, TXD und RXD.

Anschlussplan (UART):

PN532-ModulRaspberry Pi Pico (W)
VCC3.3 V (Pin 36)
GNDGND (Pin 38)
TXDGP1 (RX, Pin 2)
RXDGP0 (TX, Pin 1)

⚠️ Wichtig:
Das PN532-Modul arbeitet mit 3,3 V – nicht mit 5 V. Achte darauf, den VCC-Pin korrekt zu verbinden, um Schäden zu vermeiden.

Außerdem muss der kleine DIP-Schalter auf dem Modul auf UART-Modus stehen. Meist bedeutet das: Beide Schalter auf „OFF“.

Schritt 2: Initialisierung & Kartenerkennung

Damit dein Pico (oder Pico W) mit dem PN532 sprechen kann, brauchst du neben der MicroPython‑Firmware eine passende Bibliothek:

  1. Bibliothek herunterladen
    Lade die Datei pn532.py aus dem GitHub‑Projekt insighio/micropython‑pn532‑uart herunter: https://raw.githubusercontent.com/insighio/micropython-pn532-uart/main/pn532.py
  2. Bibliothek auf den Pico kopieren
    Öffne Thonny und lege pn532.py im Stammverzeichnis des Pico ab.

Mit diesem Code kommuniziert der Raspberry Pi Pico W über UART mit dem PN532-Modul und liest die UID von aufgelegten NFC-Tags aus.

Tipp: Zum programmieren kannst du zum Beispiel die kostenlose Programmierumgebung Thonny verwenden!

from machine import UART, Pin
import time
from pn532 import PN532Uart          # Klasse aus der Bibliothek

# UART‑Pins (GP0 = TX, GP1 = RX) und Baudrate
uart = UART(0, tx=Pin(0), rx=Pin(1), baudrate=115200)

# PN532‑Objekt anlegen
pn532 = PN532Uart(0, tx=Pin(0), rx=Pin(1), debug=False)

# PN532 in den „Normalbetrieb“ versetzen
pn532.SAM_configuration()

print("Warte auf NFC‑Karte...")

while True:
    try:
        uid = pn532.read_passive_target()
        if uid:
            print("Karte erkannt – UID:", [hex(b) for b in uid])
            # hier könntest du z. B. die UID prüfen oder etwas auslösen
            # Warte, bis die Karte entfernt wird
            while pn532.read_passive_target():
                time.sleep(0.3)
        else:
            time.sleep(0.1)      # kurze Pause, wenn keine Karte da ist
    except RuntimeError:
        # Zeitüberschreitung oder PN532 antwortet gerade nicht – einfach erneut versuchen
        time.sleep(0.2)

Was passiert im Code?

SchrittErklärung
UART‑ObjektBaut die serielle Verbindung (115 200 Bd) auf GP0/GP1 auf.
PN532UartKapselt alle Befehle an den PN532‑Chip.
SAM_configuration()Setzt den PN532 in den Modus, in dem er Karten akzeptiert und auf Befehle hört.
read_passive_target()Fragt periodisch, ob ein Tag in Reichweite ist. Gibt bei Erfolg die UID (z. B. [0x13, 0x85, 0x43, 0x05]) zurück.

Damit hast du alles, um dein PN532‑Modul in einem eigenen Projekt einzusetzen. Im nächsten Abschnitt könntest du z. B. zeigen, wie du mithilfe der UID zwischen „richtiger“ und „falscher“ Karte unterscheidest oder wie man eine Zugangskontrolle aufbaut.

Schritt 3: Zugangskontrolle

Als nächstes Projekt kannst du mit dem PN532-Modul und deinem Raspberry Pi Pico W eine einfache Zugangskontrolle umsetzen. Dabei wird die UID einer NFC-Karte ausgelesen und mit einer hinterlegten „erlaubten“ UID verglichen. Nur wenn die Karte erkannt und als richtig identifiziert wird, gibt das Programm eine Bestätigung aus – ansonsten eine Fehlermeldung.

Das ist ein praktisches Beispiel, um zu lernen, wie NFC-Tags für Authentifizierung und Sicherheit genutzt werden können.

from machine import UART, Pin
import time
from pn532 import PN532Uart

uart = UART(0, tx=Pin(0), rx=Pin(1), baudrate=115200)
pn532 = PN532Uart(0, tx=Pin(0), rx=Pin(1), debug=False)
pn532.SAM_configuration()

richtige_uid = bytearray([0x13, 0x85, 0x43, 0x05])  # Beispiel-UID der richtigen Karte

print("Warte auf NFC-Karte...")

while True:
    try:
        uid = pn532.read_passive_target()
        if uid:
            print("Karte erkannt – UID:", [hex(b) for b in uid])
            if uid == richtige_uid:
                print("Richtige Karte")
            else:
                print("Falsche Karte")
            # Warte, bis die Karte entfernt wird, bevor wieder erkannt wird
            while pn532.read_passive_target():
                time.sleep(0.3)
        else:
            time.sleep(0.1)
    except RuntimeError:
        time.sleep(0.2)

Schritt 4: Mögliche Anwendungen

Das PN532 NFC-Modul bietet vielfältige Einsatzmöglichkeiten, vor allem im Bereich der Zugangskontrolle und Identifikation. Typische Anwendungen sind:

  • Zugangskontrolle: Nur autorisierte Personen mit der richtigen NFC-Karte bekommen Zugang zu Räumen oder Geräten.
  • Zeiterfassung: Mitarbeiter stempeln ihre Arbeitszeiten durch einfaches Auflegen ihrer NFC-Karte.
  • Bezahlsysteme: Kontaktloses Bezahlen in Geschäften oder Cafeterien.
  • Inventarverwaltung: Gegenstände oder Geräte werden mit NFC-Tags versehen und können schnell erfasst und verwaltet werden.
  • Smart Home: Automatisierung von Aktionen, z. B. Licht einschalten oder Tür öffnen, wenn eine bestimmte Karte erkannt wird.
  • Eventmanagement: Zutrittskontrolle bei Veranstaltungen oder zur schnellen Teilnehmerregistrierung.

Durch die einfache Integration und geringe Kosten eignet sich das Modul hervorragend für viele DIY-Projekte und professionelle Anwendungen.

Fazit

Das PN532-Modul ermöglicht einfache und flexible NFC-Anwendungen. Es eignet sich gut für Projekte wie Zugangskontrolle oder Kartenerkennung und ist dank passender Bibliotheken leicht zu programmieren. Ideal für alle, die NFC-Technologie schnell und günstig nutzen wollen.

Hier findest du weitere spannende Raspberry Pi Pico Projekte!