Arduino UNO Q - RFID/NFC

Le RFID (Identification par Radiofréquence) vous permet de lire un identifiant unique depuis un tag ou une carte sans contact. Sur Arduino UNO Q, le module MFRC522 (RC522) se connecte via SPI au MCU. Avec Bridge et Telegram, vous pouvez recevoir des notifications instantanées sur votre téléphone lorsqu'un tag est scanné.

Dans ce tutoriel, vous apprendrez :

RFID RC522 Arduino UNO Q

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×RFID/NFC RC522 Kit (reader + tags)
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Module RFID-RC522

Brochage

Le RC522 a 8 broches. Dans ce tutoriel, nous utilisons la communication SPI :

  • GND : Connectez à GND
  • VCC : Connectez à 3,3V (⚠️ PAS 5V — peut endommager le module)
  • RST : Broche de réinitialisation — connectez à une broche numérique du MCU
  • IRQ : Broche d'interruption — non connectée dans ce tutoriel
  • MISO/SCL/TX : Ligne MISO (SPI)
  • MOSI : Ligne MOSI (SPI)
  • SCK : Ligne d'horloge (SPI)
  • SS/SDA/RX : Sélection d'esclave (SPI)
Brochage du RFID-RC522

※ Note:

  • La disposition des broches peut varier selon le fabricant — suivez toujours les étiquettes sur le module lui-même.
  • Ne connectez PAS VCC à 5V — cela peut endommager définitivement le module RC522.
  • La bibliothèque MFRC522 utilise uniquement le mode SPI.

Comment Fonctionne le RFID/NFC

Le RFID comporte deux parties : un lecteur et un tag :

  • Le lecteur génère un champ électromagnétique via son antenne
  • Le tag est passif (sans batterie) — il puise de l'énergie dans le champ et transmet son UID stocké au lecteur
Lecteur et tag RFID

Le MCU reçoit les octets UID du lecteur et peut agir sur eux — par exemple, accorder l'accès si l'UID correspond à une liste autorisée.

Schéma de Câblage

Schéma de Câblage RFID RC522 Arduino UNO Q

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche RC522 MCU Arduino UNO Q
GND GND
VCC 3,3V
RST D5
IRQ (non connecté)
MISO D12 (MISO)
MOSI D11 (MOSI)
SCK D13 (SCK)
SS D10 (SS)

Comment Programmer Pour le RFID

  • Initialiser SPI et MFRC522 :
SPI.begin(); rfid.PCD_Init();
  • Détecter et lire un tag dans loop() :
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { // rfid.uid.uidByte[] contains the UID bytes // rfid.uid.size is the number of bytes rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); }

Code Arduino UNO Q

L'Arduino UNO Q possède deux processeurs qui fonctionnent ensemble :

  • Le MCU STM32 communique avec le RC522 via SPI et lit les UIDs des tags dans loop()
  • Le MPU Qualcomm exécute Debian Linux et gère le Wi-Fi, Python et la connectivité cloud
  • Dans cette section, seul le MCU est programmé — le côté Linux reste inactif. Une section ultérieure montre comment les deux processeurs fonctionnent ensemble via Bridge.
/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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(); } } }

Étapes Rapides

Première fois avec Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.

  • Connecter : Câblez le RC522 au MCU Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Create New App.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : RC522RFID
  • Cliquez sur Create pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino. Laissez les autres fichiers par défaut.
  • 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
  • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
Cliquer sur Run dans Arduino App Lab sur Arduino UNO Q
  • Approchez un tag RFID/NFC du lecteur et observez l'UID affiché dans le Serial Monitor.

Sortie Console d'App Lab

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

Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q pour que le côté Linux puisse recevoir les événements de scan de tags et lire les UIDs via Bridge :

  • Le lecteur RFID RC522 est connecté au MCU via SPI — le MCU scanne les tags dans loop() et définit un indicateur d'événement lorsqu'un tag est détecté
  • Le MPU ne peut pas lire le RC522 directement — il appelle des fonctions Bridge pour surveiller les événements de tags et lire le dernier UID
  • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut envoyer des notifications Telegram lorsqu'un tag est scanné
  • Arduino_RouterBridge permet la communication RPC entre les deux processeurs
  • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

En résumé : Le MCU détecte le tag dans loop() → définit l'indicateur d'événement → le MPU interroge le Bridge → le MPU envoie une alerte Telegram.

Code MCU (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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(); } } }

Code Python (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Étapes Rapides

  • Connecter : Câblez le RC522 à l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez que la carte soit détectée.
  • Créer une nouvelle application : Cliquez sur Create New App, nommez-la RC522RFIDBridge, puis cliquez sur Create.
  • Coller le sketch MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
  • Coller le code Python : Copiez le code Python Bridge ci-dessus et collez-le dans le fichier Python de l'application.
  • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
Cliquer sur Run dans Arduino App Lab sur Arduino UNO Q
  • Approchez un tag RFID/NFC — observez l'UID dans la console MCU et dans la console Python.

Sortie Console d'App Lab

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

Recevez des notifications Telegram instantanées lorsqu'un tag RFID/NFC est scanné sur l'Arduino UNO Q.

Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente.

Code Python (Telegram)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Étapes Rapides

  • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre vrai token de bot depuis BotFather.
  • Remplacez YOUR_CHAT_ID par votre identifiant de chat Telegram.
  • Collez ce code Python dans le fichier Python de votre application (conservez le même sketch MCU).
  • Cliquez sur le bouton Run. Approchez un tag — recevez la notification Telegram instantanément.

Sortie Console d'App Lab

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

Intégration d'OpenClaw

Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

Idées de Projets

Vous pouvez construire de nombreux projets utiles avec le lecteur RFID et Arduino UNO Q :

  • Système de Contrôle d'Accès : Maintenez une liste d'UIDs autorisés côté Linux — lorsqu'un tag est scanné, comparez l'UID à la liste et utilisez Bridge pour déverrouiller une serrure électromagnétique si autorisé, ou envoyez une alerte Telegram pour les scans non autorisés
  • Suivi de Présence : Chaque fois qu'un étudiant ou un employé scanne sa carte RFID, le MPU enregistre l'UID et l'horodatage dans un fichier CSV sur Linux — envoyez automatiquement un rapport de présence quotidien à Telegram en fin de journée
  • Registre de Tags via Telegram : Utilisez /register via Telegram pour ajouter le dernier UID scanné à une liste autorisée — et /list pour voir tous les UIDs enregistrés stockés dans un fichier JSON Python
  • Casier Intelligent : Combinez RFID avec un verrou solénoïde — chaque tag enregistré déverrouille un casier personnel pendant 10 secondes, avec chaque accès enregistré et envoyé à Telegram
  • Suivi de Livres de Bibliothèque : Fixez des tags RFID aux livres — scannez à l'emprunt et au retour, enregistrez chaque événement avec horodatage et UID dans un fichier sur Linux, et interrogez via Telegram pour savoir qui a quel livre

Défiez-Vous

Prêt à aller plus loin avec le RFID sur Arduino UNO Q ? Essayez ces défis :

  • Facile : Modifiez le code Python pour afficher "Autorisé" si l'UID scanné correspond à une chaîne codée en dur en Python, ou "Non autorisé" sinon — aucune modification du MCU n'est nécessaire.
  • Moyen : Créez un registre de tags via Telegram : envoyez /register pour ajouter le dernier UID scanné depuis Bridge.call("get_uid") à un fichier JSON Python, et /list pour voir tous les UIDs enregistrés — prenez la décision de contrôle d'accès en Python.
  • Avancé : Implémentez un système d'accès à durée limitée : chaque UID enregistré a une fenêtre de temps autorisée (ex. 08h00–18h00) stockée dans un fichier JSON — les scans en dehors de la fenêtre autorisée envoient une alerte Telegram et ne déverrouillent pas la porte, tandis que les scans à l'intérieur déverrouillent la porte pendant 10 secondes.

Tutoriels connexes

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !