ESP32 - RFID/NFC - Relé

Este tutorial explica cómo usar el ESP32, RFID/NFC y un relé. En detalle, aprenderemos cómo activar un relé cuando una etiqueta RFID/NFC autorizada se acerque al lector RFID.

Este tutorial puede ampliarse conectando el relé a una cerradura electromagnética, un actuador...

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

Tenemos tutoriales específicos sobre el módulo RFID/NFC RC522 y un relé. Cada tutorial contiene información detallada y instrucciones paso a paso sobre la disposición de pines, el principio de funcionamiento, las conexiones de cableado al ESP32 y el código para ESP32... Obtén más información sobre ellos en los siguientes enlaces:

ESP32 ESP32 componente de relé RFID

Cómo funciona el módulo RC522

  • Varios UIDs autorizados de etiquetas RFID/NFC están predefinidos en el código del ESP32
  • Cuando se acerca una etiqueta RFID/NFC a un lector RFID/NFC
  • El ESP32 lee el UID del lector RFID/NFC
  • El ESP32 busca el UID leído en la lista de UIDs predefinidos
  • Si la lista de UIDs predefinidos contiene el UID leído, el ESP32 activa el relé

Diagrama de Cableado

Diagrama de cableado del relé para ESP32 RFID RC522

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

※ Nota:

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

Código ESP32 - Una única etiqueta RFID/NFC

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-rfid-nfc-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 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 an RFID/NFC tag on the RFID-RC522 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

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Haz clic en el ícono Bibliotecas en la barra de la izquierda del Arduino IDE.
  • Escribe “MFRC522” en el cuadro de búsqueda, luego busca la biblioteca por GithubCommunity
  • Instala la biblioteca haciendo clic en el botón Instalar.
Biblioteca MFRC522 para ESP32
  • Obtén el UID de la etiqueta siguiendo los siguientes pasos:
    • Copia el código anterior y pégalo a Arduino IDE.
    • Compila y carga el código en la placa ESP32 haciendo clic en el botón Subir en Arduino IDE
    • Abre el Monitor serial en Arduino IDE
    Cómo abrir el monitor serie en el IDE de Arduino
    • Toca una etiqueta RFID/NFC a la que quieras otorgar autorización en el lector RFID-RC522
    • Escribe el UID que aparece en el Monitor Serial
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    ESP32 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
    New Line
    9600 baud
    Tap an RFID/NFC tag on the RFID-RC522 reader Unauthorized Tag with UID: 2B B8 59 B1
    Ln 11, Col 1
    ESP32 Dev Module on COM15
    2
    • Actualiza el UID en la línea 18 del código anterior. Por ejemplo, cambia byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; A byte authorizedUID[4] = {0x2B, 0xB8, 0x59, 0xB1};
    • Vuelve a subir el código al ESP32
    • Acerca la etiqueta RFID/NFC autorizada al módulo RFID-RC522
    • Consulta el resultado en el Monitor Serial
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    ESP32 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
    New Line
    9600 baud
    Tap an RFID/NFC tag on the RFID-RC522 reader Authorized Tag
    Ln 11, Col 1
    ESP32 Dev Module on COM15
    2
    • Acercar una etiqueta RFID/NFC no autorizada al módulo RFID-RC522
    • Ver el resultado en el Monitor serie
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    ESP32 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
    New Line
    9600 baud
    Tap an RFID/NFC tag on the RFID-RC522 reader Authorized Tag Unauthorized Tag with UID: 1C 2A 52 E3
    Ln 11, Col 1
    ESP32 Dev Module on COM15
    2

Código ESP32 - Múltiples etiquetas RFID/NFC

El siguiente código para ESP32 permite que varias etiquetas RFID/NFC autorizadas activen el relé. El código toma dos etiquetas, por ejemplo. Puedes añadir más.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-rfid-nfc-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 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 an RFID/NFC tag on the RFID-RC522 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 } } }

Pasos R\u00e1pidos

  • Actualicé los UUID de dos etiquetas RFID/NFC autorizadas en el código
  • Sube el código al ESP32
  • Acércalas una por una al módulo RFID-RC522
  • El resultado en el Monitor Serial:
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Tap an RFID/NFC tag on the RFID-RC522 reader Authorized Tag 1 Authorized Tag 2
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Puedes modificar el código para añadir 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!