Arduino Nano - RFID - Relé

Este tutorial te enseña cómo usar un Arduino Nano y un módulo RC522 de RFID/NFC para controlar un relé. Puedes ampliar aún más este tutorial usando el relé para controlar motores, actuadores, una cerradura de puerta, una bombilla y más.

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Relé
10×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

Or you can buy the following kits:

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 estás familiarizado con el módulo RFID/NFC RC522 y el relé (disposición de pines, cómo funciona, cómo programar ...), puedes encontrar más información en los siguientes tutoriales:

Arduino Nano Arduino RFID relé componente

Cómo funciona

  • El lector RFID/NFC lee el UID de la etiqueta cuando un usuario la acerca.
  • El Arduino Nano obtiene entonces el UID del lector.
  • Compara este UID con los UIDs que se han definido previamente en el código del Arduino Nano.
  • Si el UID coincide con uno de los UIDs predefinidos, el Arduino Nano activará el relé.

Diagrama de Cableado

Diagrama de cableado del relé para Arduino Nano y RC522 RFID

This image is created using Fritzing. Click to enlarge image

Para simplificar la conexión, los pines del módulo RC522 están conectados directamente a los pines del Arduino. Sin embargo, en ciertos casos, esto puede hacer que el Arduino funcione mal ya que sus pines de salida generan 5 V, mientras que los pines del módulo RC522 funcionan normalmente a 3.3 V. Por lo tanto, es aconsejable regular la tensión entre los pines del Arduino y el módulo RC522. Para más detalles, consulte el Tutorial de Arduino Nano - RFID RC522. El diagrama a continuación ilustra cómo regular de 5 V a 3.3 V mediante resistencias:

Arduino Nano RFID RC522 con diagrama de cableado de voltaje regulado

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

※ Nota:

La disposición de los pines puede variar según el fabricante. Siempre consulte las etiquetas impresas en el módulo. La imagen de arriba muestra el pinout de los módulos del fabricante DIYables.

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

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

Pasos R\u00e1pidos

Para descubrir el UID de una etiqueta RFID/NFC, el primer paso es subir código al Arduino Nano y abrir el Monitor Serial. Luego, acerca la etiqueta al módulo RFID-RC522 y visualiza el 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 obtener el UID:

  • Modifica la línea 18 del código para reflejar el UID, por ejemplo cambiando byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; a byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Carga el código actualizado al Arduino Nano
  • Coloca una etiqueta RFID/NFC en el módulo RFID-RC522
  • Comprueba la salida en el Monitor Serial
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Coloque una etiqueta RFID/NFC en el módulo RFID-RC522 y observe 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 asegurar que las pruebas sean sencillas, el tiempo activo se establece en 2 segundos; sin embargo, debería aumentarse para uso práctico/demostración.
  • La instalación de la biblioteca MFRC522 es necesaria. Para más información, consulte el Arduino Nano - tutorial RFID/NFC RC522.

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

Es posible habilitar el relé mediante múltiples etiquetas RFID/NFC. Aquí, se utilizan dos etiquetas como ilustración.

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

Repite los mismos pasos mencionados anteriormente, luego acerca cada etiqueta al módulo RFID-RC522. La salida en el Monitor Serial debería aparecer de la siguiente manera:

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