Arduino - RFID/NFC - Relais

Dans ce tutoriel, nous allons apprendre à utiliser une étiquette RFID/NFC pour activer un relais avec Arduino. Vous pouvez étendre ce tutoriel en utilisant le relais pour contrôler un moteur, un actionneur...

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×Relay
10×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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 relais

Si vous ne connaissez pas le module RFID/NFC RC522 et le relais (brochage, fonctionnement, programmation...), renseignez-vous sur ces sujets dans les tutoriels suivants :

Composant relais RFID Arduino

Comment ça fonctionne

  • Les UID de certains tags RFID/NFC sont prédéfinis dans le code Arduino.
  • L'utilisateur appuie sur un tag RFID/NFC sur le lecteur RFID/NFC.
  • Le lecteur lit l'UID du tag.
  • Arduino reçoit l'UID du lecteur.
  • Arduino compare l'UID lu avec les UIDs prédéfinis.
  • Si l'UID correspond à l'un des UIDs prédéfinis, Arduino active le relais.

Diagramme de câblage

Schéma de câblage du relais Arduino RFID RC522

This image is created using Fritzing. Click to enlarge image

Pour simplifier l'installation, les broches du module RC522 sont directement connectées aux broches de l'Arduino. Cependant, cela peut provoquer l'arrêt de fonctionnement de l'Arduino dans certaines situations, car les broches de sortie de l'Arduino délivrent 5V alors que les broches du module RC522 sont conçues pour fonctionner à 3.3V. Il est donc conseillé de réguler la tension entre les broches de l'Arduino et celles du module RC522. Pour plus d'informations, veuillez consulter le Tutoriel Arduino - RFID RC522. Le schéma suivant illustre comment utiliser des résistances pour réguler de 5V à 3.3V :

Schéma de câblage régulé en tension pour Arduino RFID RC522

This image is created using Fritzing. Click to enlarge image

※ NOTE THAT:

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 de brochage des modules du fabricant DIYables.

Code Arduino - Tag RFID/NFC 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-nfc-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define RELAY_PIN A5 // the Arduino pin connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay Serial.println("Tap RFID/NFC Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::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, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with 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(); // 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/NFC, la première étape consiste à découvrir l'UID de l'étiquette. Cela peut être réalisé en :

  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code sur Arduino
  • Ouvrez le moniteur série
  • Tapez une étiquette RFID/NFC sur le module RFID-RC522
  • Obtenez l'UID sur le moniteur série
COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Téléversez à nouveau le code sur Arduino
  • Approchez une étiquette RFID/NFC du module RFID-RC522
  • Consultez la sortie sur le moniteur série
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Appuyez sur une autre étiquette RFID/NFC sur le module RFID-RC522
  • Voir le résultat sur le moniteur série
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

  • Pour faciliter le test, le temps actif est de 2 secondes, il devrait être augmenté pour une utilisation ou démonstration pratique.
  • Il est nécessaire d'installer la bibliothèque MFRC522. Voir Tutoriel Arduino - RFID/NFC RC522

Code Arduino - Plusieurs balises RFID/NFC

Nous pouvons permettre à plusieurs étiquettes RFID/NFC d'activer le relais. 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-nfc-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define RELAY_PIN A5 // the Arduino pin connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay Serial.println("Tap RFID/NFC Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::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, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else if (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, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with 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(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Effectuez les mêmes étapes que ci-dessus, puis touchez successivement chaque étiquette sur le module RFID-RC522. Le résultat sur le moniteur série apparaît comme ci-dessous :

COM6
Send
Tap RFID/NFC tag on reader Authorized Tag 2 Authorized Tag 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vous pouvez étendre le code ci-dessus pour trois, quatre ou plus de balises.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!