Arduino UNO Q - RFID/NFC

RFID (Funkfrequenzidentifikation) ermöglicht es Ihnen, eine eindeutige ID drahtlos von einem Tag oder einer Karte zu lesen – keine Berührung erforderlich. Auf Arduino UNO Q verbindet sich das MFRC522 (RC522) Modul über SPI mit dem MCU. Mit Bridge und Telegram können Sie sofortige Benachrichtigungen auf Ihrem Telefon erhalten, wenn ein Tag gescannt wird.

In diesem Tutorial lernen Sie:

Arduino UNO Q RFID RC522

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×RFID/NFC RC522 Kit (reader + tags)
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das RFID-RC522-Modul

Pinbelegung

Das RC522 hat 8 Pins. In diesem Tutorial verwenden wir SPI-Kommunikation:

  • GND: Mit GND verbinden
  • VCC: Mit 3,3V verbinden (⚠️ NICHT 5V — könnte das Modul beschädigen)
  • RST: Reset-Pin — mit digitalem Pin des MCU verbinden
  • IRQ: Interrupt-Pin — in diesem Tutorial nicht verbunden
  • MISO/SCL/TX: MISO-Leitung (SPI)
  • MOSI: MOSI-Leitung (SPI)
  • SCK: Taktleitung (SPI)
  • SS/SDA/RX: Slave Select (SPI)
RFID-RC522 Pinbelegung

※ Notiz:

  • Die Pinbelegung kann je nach Hersteller unterschiedlich sein — folgen Sie immer den Beschriftungen auf dem Modul selbst.
  • Verbinden Sie VCC NICHT mit 5V — dies könnte das RC522-Modul dauerhaft beschädigen.
  • Die MFRC522-Bibliothek verwendet nur den SPI-Modus.

Wie RFID/NFC funktioniert

RFID besteht aus zwei Teilen: einem Lesegerät und einem Tag:

  • Das Lesegerät erzeugt ein elektromagnetisches Feld über seine Antenne
  • Der Tag ist passiv (keine Batterie) — er zieht Energie aus dem Feld und sendet seine gespeicherte UID an das Lesegerät zurück
RFID-Lesegerät und Tag

Der MCU empfängt die UID-Bytes vom Lesegerät und kann darauf reagieren – z. B. Zugang gewähren, wenn die UID einer autorisierten Liste entspricht.

Verdrahtungsdiagramm

Arduino UNO Q RFID RC522 Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

RC522-Pin Arduino UNO Q MCU
GND GND
VCC 3,3V
RST D5
IRQ (nicht verbunden)
MISO D12 (MISO)
MOSI D11 (MOSI)
SCK D13 (SCK)
SS D10 (SS)

Programmierung für RFID

  • Initialisieren Sie SPI und MFRC522:
SPI.begin(); rfid.PCD_Init();
  • Erkennen und lesen Sie einen Tag in loop():
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { // rfid.uid.uidByte[] enthält die UID-Bytes // rfid.uid.size ist die Anzahl der Bytes rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); }

Arduino UNO Q Code

Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU kommuniziert über SPI mit dem RC522 und liest Tag-UIDs in loop()
  • Die Qualcomm MPU läuft Debian Linux und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur der MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.
/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rfid */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // The Arduino UNO Q MCU pin connected to SS of RC522 #define RST_PIN 5 // The Arduino UNO Q MCU pin connected to RST of RC522 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); Serial.println("Arduino UNO Q RFID ready"); Serial.println("Tap RFID/NFC tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { if (rfid.PICC_ReadCardSerial()) { Serial.print("UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } } }

Schnelle Schritte

Erstes Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, bevor Sie fortfahren.

  • Verdrahten: Verbinden Sie den RC522 mit dem Arduino UNO Q MCU, wie im Verdrahtungsdiagramm gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App im Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, z. B.: RC522RFID
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und -Dateien auf Arduino UNO Q
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien wie in der Standardeinstellung.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for MFRC522 created by GithubCommunity and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
MFRC522 GithubCommunity

Read/Write a RFID Card or Tag using the ISO/IEC 14443A/MIFARE interface.

1.4.11
Install
More Info
  • Upload: Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab.
Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab auf Arduino UNO Q
  • Halten Sie ein RFID/NFC-Tag an das Lesegerät und beobachten Sie die im Serial Monitor gedruckte UID.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q RFID ready [2026-04-29 09:00:01] Tap RFID/NFC tag on reader [2026-04-29 09:00:05] UID: 3A C9 6A CB [2026-04-29 09:00:08] UID: 04 64 34 5A 1E 4E 80

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite Tag-Scan-Ereignisse empfangen und UIDs über Bridge lesen kann:

  • Der RC522 RFID-Lesegerät ist über SPI mit dem MCU verbunden — der MCU scannt nach Tags in loop() und setzt ein Ereignis-Flag, wenn ein Tag erkannt wird
  • Die MPU kann den RC522 nicht direkt lesen — sie ruft Bridge-Funktionen auf, um nach Tag-Ereignissen zu fragen und die letzte UID zu lesen
  • Die MPU hat Wi-Fi — mit vollständigem Debian Linux läuft es können Telegram-Benachrichtigungen senden, wenn ein Tag gescannt wird
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie niemals in Benutzercode

Kurz gesagt: MCU erkennt Tag in loop() → setzt Ereignis-Flag → MPU befragt Bridge → MPU sendet Telegram-Warnung.

MCU-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rfid */ #include "Arduino_RouterBridge.h" #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // The Arduino UNO Q MCU pin connected to SS of RC522 #define RST_PIN 5 // The Arduino UNO Q MCU pin connected to RST of RC522 MFRC522 rfid(SS_PIN, RST_PIN); String last_uid = "none"; bool tag_event = false; String get_uid(String arg) { return last_uid; } String get_event(String arg) { if (tag_event) { tag_event = false; return last_uid; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); SPI.begin(); rfid.PCD_Init(); Bridge.provide("get_uid", get_uid); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q RFID Bridge ready"); Monitor.println("Tap RFID/NFC tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { if (rfid.PICC_ReadCardSerial()) { last_uid = ""; for (int i = 0; i < rfid.uid.size; i++) { if (i > 0) last_uid += ":"; if (rfid.uid.uidByte[i] < 0x10) last_uid += "0"; last_uid += String(rfid.uid.uidByte[i], HEX); } last_uid.toUpperCase(); tag_event = true; Monitor.print("Tag scanned: "); Monitor.println(last_uid); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } } }

Python-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rfid */ from arduino.app_utils import * import time def loop(): event = Bridge.call("get_event") if event != "none": print(f"Tag scanned: {event}") time.sleep(0.2) App.run(user_loop=loop)

Schnelle Schritte

  • Verdrahten: Verbinden Sie den RC522 mit dem Arduino UNO Q, wie im Verdrahtungsdiagramm gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis die Platine erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, benennen Sie sie RC522RFIDBridge, und klicken Sie dann auf Erstellen.
  • Fügen Sie die MCU-Skizze ein: Kopieren Sie den MCU-Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code ein: Kopieren Sie den Python-Bridge-Code oben und fügen Sie ihn in die Python-Datei der App ein.
  • Upload: Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab.
Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab auf Arduino UNO Q
  • Halten Sie ein RFID/NFC-Tag an — beobachten Sie die UID in der MCU-Konsole und der Python-Konsole.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q RFID Bridge ready [2026-04-29 09:00:01] Tap RFID/NFC tag on reader [2026-04-29 09:00:05] Tag scanned: 3A:C9:6A:CB [2026-04-29 09:00:10] Tag scanned: 04:64:34:5A:1E:4E:80
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:05] Tag scanned: 3A:C9:6A:CB [2026-04-29 09:00:10] Tag scanned: 04:64:34:5A:1E:4E:80

Telegram

Erhalten Sie sofortige Telegram-Benachrichtigungen, wenn ein RFID/NFC-Tag auf dem Arduino UNO Q gescannt wird.

MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt.

Python-Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rfid */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Check for new RFID tag scan event event = Bridge.call("get_event") if event != "none": print(f"Tag scanned: {event}") send_message(CHAT_ID, f"🏷️ RFID tag scanned!\nUID: {event}") # Check for Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q RFID Bot\n" "/uid - Read the last scanned tag UID\n" "Tap a tag on the reader to receive an automatic notification") elif text == "/uid": result = Bridge.call("get_uid") send_message(chat_id, f"Last UID: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.2) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren tatsächlichen Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie die gleiche MCU-Skizze bei).
  • Klicken Sie auf die Ausführungsschaltfläche. Halten Sie ein Tag an — erhalten Sie sofort die Telegram-Benachrichtigung.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages... [2026-04-29 09:10:05] Tag scanned: 3A:C9:6A:CB [2026-04-29 09:10:12] Received: /uid
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
/uid
10:15 AM ✓✓
Last UID: 3A:C9:6A:CB
10:16 AM
🏷️ RFID tag scanned!
10:17 AM
UID: 04:64:34:5A:1E:4E:80
10:18 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Sie können viele nützliche Projekte mit dem RFID-Lesegerät und Arduino UNO Q erstellen:

  • Zugriffskontrollsystem: Verwalten Sie eine autorisierte UID-Liste auf der Linux-Seite — wenn ein Tag gescannt wird, vergleichen Sie die UID mit der Liste und verwenden Sie Bridge, um ein elektromagnetisches Schloss freizugeben, wenn autorisiert, oder senden Sie eine Telegram-Warnung für nicht autorisierte Scans
  • Anwesenheitsverfolgung: Jedes Mal, wenn ein Schüler oder Mitarbeiter seine RFID-Karte scannt, protokolliert die MPU die UID und den Zeitstempel in einer CSV-Datei unter Linux — senden Sie automatisch am Ende des Tages einen täglichen Anwesenheitsbericht an Telegram
  • Telegram-Tag-Register: Verwenden Sie /register über Telegram, um die zuletzt gescannte UID zu einer autorisierten Liste hinzuzufügen — und /list, um alle in einer Python-JSON-Datei gespeicherten registrierten UIDs zu sehen
  • Smart Locker: Kombinieren Sie RFID mit einem Solenoid-Schloss — jedes registrierte Tag entsperrt einen persönlichen Schließfach für 10 Sekunden, wobei jeder Zugriff protokolliert und an Telegram gesendet wird
  • Bücherei-Nachverfolgung: Befestigen Sie RFID-Tags an Büchern — scannen Sie beim Ausleihen und Zurückgeben, protokollieren Sie jedes Ereignis mit Zeitstempel und UID in einer Datei unter Linux, und fragen Sie über Telegram ab, um zu prüfen, wer welches Buch hat

Herausfordere dich selbst

Bereit, noch weiter mit RFID auf Arduino UNO Q zu gehen? Probieren Sie diese Herausforderungen:

  • Einfach: Ändern Sie den Python-Code, um "Autorisiert" zu drucken, wenn die gescannte UID mit einem hartcodierten String in Python übereinstimmt, oder "Nicht autorisiert", wenn nicht — keine MCU-Änderungen erforderlich.
  • Mittel: Erstellen Sie ein Tag-Register über Telegram: senden Sie /register, um die zuletzt gescannte UID von Bridge.call("get_uid") zu einer Python-JSON-Datei hinzuzufügen, und /list, um alle registrierten UIDs zu sehen — treffen Sie die Zugriffskontrollentscheidung in Python.
  • Fortgeschrittenes: Implementieren Sie ein zeitlich begrenztes Zugriffssystem: jede registrierte UID hat ein zulässiges Zeitfenster (z. B. 08:00–18:00), das in einer JSON-Datei gespeichert ist — Scans außerhalb des zulässigen Fensters senden eine Telegram-Warnung und entsperren die Tür nicht, während Scans innerhalb die Tür für 10 Sekunden entsperren.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!