Arduino Nano - RFID - Relais

Ce tutoriel vous explique comment utiliser un Arduino Nano et un module RFID NFC RC522 pour contrôler un relais. Vous pouvez étendre davantage ce tutoriel en utilisant le relais pour contrôler des moteurs, des actionneurs, une serrure de porte, une ampoule, et plus encore.

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×Relay
10×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

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...), vous pouvez en apprendre davantage dans les tutoriels suivants :

Composant de relais RFID Arduino Nano

Comment ça fonctionne

  • Le lecteur RFID/NFC lit l'UID de l'étiquette lorsque l'utilisateur la tape.
  • Arduino Nano obtient ensuite l'UID du lecteur.
  • Il compare cet UID aux UID qui ont été prédéfinis dans le code de l'Arduino Nano.
  • Si l'UID correspond à l'un des UID prédéfinis, l'Arduino Nano activera le relais.

Diagramme de câblage

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

This image is created using Fritzing. Click to enlarge image

Pour simplifier la connexion, les broches du module RC522 sont directement connectées aux broches de l'Arduino. Cependant, dans certains cas, cela peut provoquer un dysfonctionnement de l'Arduino puisque ses broches de sortie génèrent 5V, tandis que les broches du module RC522 fonctionnent normalement à 3.3V. Il est donc conseillé de réguler la tension entre les broches de l'Arduino et du module RC522. Pour plus de détails, veuillez consulter le tutoriel Arduino Nano - RFID RC522. Le schéma ci-dessous illustre comment réguler de 5V à 3.3V en utilisant des résistances :

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

This image is created using Fritzing. Click to enlarge image

※ NOTE THAT:

L'agencement des broches peut varier selon le fabricant. Consultez 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 Nano - Balise unique RFID/NFC

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-rfid-relay */ #include <SPI.h> #include <MFRC522.h> #define RC522_SS_PIN 10 // The Arduino Nano pin connected to RC522's SS pin #define RC522_RST_PIN 5 // The Arduino Nano pin connected to RC522's RST pin #define RELAY_PIN A5 // The Arduino Nano pin connected to relay MFRC522 rfid(RC522_SS_PIN, RC522_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

Pour découvrir l'UID d'une étiquette RFID/NFC, la première étape consiste à télécharger du code sur l'Arduino Nano et à ouvrir le moniteur série. Ensuite, tapez l'étiquette sur le module RFID-RC522 et consultez 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 obtenu l'UID :

  • Modifiez la ligne 18 du code pour refléter l'UID, par exemple en changeant byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; pour byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Chargez le code mis à jour sur l'Arduino Nano
  • Placez une étiquette RFID/NFC sur le 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  
  • Placez une étiquette RFID/NFC sur le module RFID-RC522 et observez 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 garantir que les tests soient simples, le temps actif est réglé sur 2 secondes ; cependant, il devrait être augmenté pour une utilisation pratique/démonstration.
  • L'installation de la bibliothèque MFRC522 est nécessaire. Pour plus d'informations, veuillez consulter le tutoriel Arduino Nano - RFID/NFC RC522.

Code Arduino Nano - Plusieurs balises RFID/NFC

Il est possible d'activer le relais par plusieurs étiquettes RFID/NFC. Ici, deux étiquettes sont utilisées à titre d'illustration.

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-rfid-relay */ #include <SPI.h> #include <MFRC522.h> #define RC522_SS_PIN 10 // The Arduino Nano pin connected to RC522's SS pin #define RC522_RST_PIN 5 // The Arduino Nano pin connected to RC522's RST pin #define RELAY_PIN A5 // The Arduino Nano pin connected to relay MFRC522 rfid(RC522_SS_PIN, RC522_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 } } }

Répétez les mêmes étapes que celles mentionnées précédemment, puis tapez sur chaque étiquette du module RFID-RC522. Le résultat sur le moniteur série devrait apparaître comme suit :

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 inclure 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!