Dans ce tutoriel, nous allons apprendre à fabriquer un système de verrouillage de porte basé sur RFID en utilisant un Arduino, un lecteur RFID RC522 et un verrou à solénoïde.
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/NFC RC522 et du verrou à solénoïde
Si vous ne connaissez pas le module RFID/NFC RC522 et la serrure à solénoïde (brochage, fonctionnement, programmation...), renseignez-vous sur ces sujets dans les tutoriels suivants :
Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Pour simplifier l'installation, les broches du module RC522 sont directement connectées aux broches de l'Arduino. Cependant, cette connexion directe peut entraîner des problèmes, car les broches de sortie de l'Arduino délivrent 5V, tandis que les broches du module RC522 sont conçues pour une opération à 3.3V. Il est conseillé de réguler la tension entre les broches de l'Arduino et celles du module RC522 pour éviter des problèmes potentiels. Pour plus de directives détaillées, veuillez consulter le Arduino - RFID/NFC.. Le schéma fourni illustre comment des résistances peuvent être utilisées pour réguler de 5V à 3.3V.
Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
※ Note:
L'ordre des broches peut varier selon les fabricants. Utilisez TOUJOURS les étiquettes imprimées sur le module. L'image ci-dessus montre le schéma des broches des modules du fabricant DIYables.
Code Arduino - Balise RFID Unique
/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-rfid-solenoid-lock*/#include <SPI.h>#include <MFRC522.h>#define SS_PIN 10#define RST_PIN 5#define RELAY_PIN A5 // The Arduino pin that controls the solenoid lock via relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => lockedSerial.println("Tap RFID Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);if (rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] ) {Serial.println("Authorized Tag");digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => unlockeddelay(2000);digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked }else {Serial.print("Unauthorized Tag:");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(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } }}
Étapes rapides
Étant donné que l'UID n'est généralement pas imprimé sur l'étiquette RFID, la première étape que nous devons effectuer est de découvrir l'UID de l'étiquette. Cela peut être accompli par :
Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
Cliquez sur le bouton Upload dans l'Arduino IDE pour téléverser le code sur Arduino
Ouvrez le moniteur série
Tapez une étiquette RFID sur le module RFID-RC522
Obtenez l'UID sur le moniteur série
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Unauthorized Tag: 51 3D C1 AC
Ln 11, Col 1
Arduino Uno on COM15
2
Après avoir UID :
Mettez à jour l'UID à la ligne 18 du code ci-dessus. Par exemple, changez byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; EN byte authorizedUID[4] = {0x51, 0x3D, 0xC1, 0xAC};
Téléversez à nouveau le code sur Arduino
Approchez une étiquette RFID du module RFID-RC522
Observez le résultat sur le moniteur série
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Authorized Tag
Ln 11, Col 1
Arduino Uno on COM15
2
Tapez un autre tag RFID sur le module RFID-RC522
Consultez le résultat sur le moniteur série
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Authorized Tag
Unauthorized Tag: 5D 11 1A D3
Ln 11, Col 1
Arduino Uno on COM15
2
Code Arduino - Plusieurs Balises RFID
Nous pouvons permettre à plusieurs étiquettes RFID/NFC d'activer le verrou à solénoïde. Le code ci-dessous utilise deux étiquettes comme exemple.
/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-rfid-solenoid-lock*/#include <SPI.h>#include <MFRC522.h>#define SS_PIN 10#define RST_PIN 5#define RELAY_PIN A5 // The Arduino pin that controls the solenoid lock via relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID1[4] = {0x51, 0x3D, 0xC1, 0xAC};byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => lockedSerial.println("Tap RFID Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);if (rfid.uid.uidByte[0] == authorizedUID1[0] && rfid.uid.uidByte[1] == authorizedUID1[1] && rfid.uid.uidByte[2] == authorizedUID1[2] && rfid.uid.uidByte[3] == authorizedUID1[3] ) {Serial.println("Authorized Tag 1");digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => unlockeddelay(2000);digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked }elseif (rfid.uid.uidByte[0] == authorizedUID2[0] && rfid.uid.uidByte[1] == authorizedUID2[1] && rfid.uid.uidByte[2] == authorizedUID2[2] && rfid.uid.uidByte[3] == authorizedUID2[3] ) {Serial.println("Authorized Tag 2");digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => unlockeddelay(2000);digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked }else {Serial.print("Unauthorized Tag:");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(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } }}
Faites les mêmes étapes que ci-dessus, puis touchez une par une les étiquettes sur le module RFID-RC522. Le résultat sur le moniteur série apparaît comme ci-dessous :
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Authorized Tag 2
Authorized Tag 1
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 !