Arduino - RFID/NFC - Relé

En este tutorial, vamos a aprender cómo usar una etiqueta RFID/NFC para activar un relé con Arduino. Puedes ampliar este tutorial utilizando el relé para controlar un motor, un actuador...

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Relé
10×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del módulo RFID/NFC RC522 y del relé

Si no conoces el módulo RFID/NFC RC522 y el relé (pinout, cómo funciona, cómo programarlo...), aprende sobre ellos en los siguientes tutoriales:

Arduino arduino RFID componente de relé

Cómo funciona

  • Los UIDs de algunas etiquetas RFID/NFC están predefinidos en el código de Arduino.
  • El usuario acerca una etiqueta RFID/NFC al lector RFID/NFC.
  • El lector lee el UID de la etiqueta.
  • Arduino obtiene el UID del lector.
  • Arduino compara el UID leído con los UIDs predefinidos.
  • Si el UID coincide con alguno de los UIDs predefinidos, Arduino activa el relé.

Diagrama de Cableado

Diagrama de cableado del relé para Arduino RFID RC522

This image is created using Fritzing. Click to enlarge image

Para simplificar la configuración, los pines del módulo RC522 están conectados directamente a los pines del Arduino. Sin embargo, esto puede hacer que el Arduino deje de funcionar en ciertas situaciones, ya que los pines de salida del Arduino suministran 5V mientras que los pines del módulo RC522 están diseñados para funcionar a 3.3V. Por lo tanto, es aconsejable regular el voltaje entre los pines del Arduino y los pines del módulo RC522. Para obtener información adicional, consulte el Tutorial Arduino - RFID RC522. El diagrama siguiente ilustra cómo usar resistencias para regular de 5V a 3.3V:

Arduino RFID RC522 con diagrama de cableado regulado por voltaje

This image is created using Fritzing. Click to enlarge image

※ Nota:

El orden de los pines puede variar según los fabricantes. SIEMPRE use las etiquetas impresas en el módulo. La imagen anterior muestra la disposición de pines de los módulos del fabricante DIYables.

Código de Arduino - Una sola etiqueta RFID/NFC

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 } } }

Pasos R\u00e1pidos

Dado que el UID generalmente no está impreso en la etiqueta RFID/NFC, el primer paso que debemos dar es averiguar el UID de la etiqueta. Esto se puede hacer mediante:

  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al Arduino
  • Abre el Monitor Serial
  • Acerca una etiqueta RFID/NFC al módulo RFID-RC522
  • Obtén UID en el Monitor Serial
COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Después de tener UID:

  • Actualiza UID en la línea 18 del código anterior. Por ejemplo, cambia byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; a byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Vuelve a subir el código al Arduino.
  • Acerca una etiqueta RFID/NFC al módulo RFID-RC522.
  • Ver la salida en el Monitor Serial.
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Toca otra etiqueta RFID/NFC en el módulo RFID-RC522
  • Ver la salida en el Monitor Serial
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  

※ Nota:

  • Para facilitar las pruebas, el tiempo activo es de 2 segundos; debería aumentarse en el uso práctico o de demostración
  • Es necesario instalar la biblioteca MFRC522. Ver Arduino - RFID/NFC RC522 tutorial

Código de Arduino - Múltiples etiquetas RFID/NFC

Podemos permitir que varias etiquetas RFID/NFC activen el relé. El código que se muestra a continuación usa dos etiquetas como ejemplo.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 } } }

Realice pasos similares a los anteriores y, luego, acerque cada etiqueta al módulo RFID-RC522. El resultado en el Monitor Serial es el siguiente:

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

Puedes ampliar el código anterior para tres, cuatro o más etiquetas.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!