Utilizar sensor PN532 con ESP32

Para leer datos de un módulo NFC PN532 usando un ESP32.

Un ejemplo básico utilizando la librería Adafruit_PN532 para el PN532 con Wire.h para la comunicación I2C:

Librerias:

Adafruit_PN532Wire y También instalar dependencia Adafruit bus IO 1.16.1

Wire

El circuito debe estar conectado de la siguiente manera:

  • VCC del PN532 a 3.3V del ESP32
  • GND del PN532 a GND del ESP32
  • SDA del PN532 a GPIO 21 del ESP32 (puedes cambiarlo si quieres)
  • SCL del PN532 a GPIO 22 del ESP32 (puedes cambiarlo si quieres)

#include <Wire.h>
#include <Adafruit_PN532.h>

// Configuración de pines I2C en el ESP32
#define SDA_PIN 21
#define SCL_PIN 22

// Crear una instancia del PN532 usando la interfaz I2C
Adafruit_PN532 nfc(SDA_PIN, SCL_PIN);

void setup(void) {
  Serial.begin(115200);
  Serial.println("Iniciando el lector NFC PN532...");

  Wire.begin(SDA_PIN, SCL_PIN);

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("No se encontró el PN53x. Revisa las conexiones.");
    while (1); // parar aquí
  }

  // Mostrar información del firmware
  Serial.print("Encontrado PN5");
  Serial.print((versiondata>>24) & 0xFF, HEX);
  Serial.print(" Firmware ver. ");
  Serial.print((versiondata>>16) & 0xFF, DEC);
  Serial.print('.');
  Serial.println((versiondata>>8) & 0xFF, DEC);

  // Configurar el módulo para operar en modo RFID con la frecuencia de 106 kbps
  nfc.SAMConfig();

  Serial.println("Esperando una tarjeta NFC...");
}

void loop(void) {
  uint8_t success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer para almacenar el UID
  uint8_t uidLength; // Tamaño del UID

  // Esperar a que se detecte una tarjeta
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

  if (success) {
    // Si se ha detectado una tarjeta, mostrar el UID
    Serial.println("Tarjeta detectada!");
    Serial.print("UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
    Serial.print("UID Value: ");
    for (uint8_t i=0; i < uidLength; i++) {
      Serial.print(" 0x");Serial.print(uid[i], HEX);
    }
    Serial.println("");

    // Esperar un momento antes de intentar leer otra vez
    delay(1000);
  }
}

Publicado

en

, ,

Etiquetas:

Comentarios

Una respuesta a «Utilizar sensor PN532 con ESP32»

  1. Avatar de Ana López
    Ana López

    TFM INGENIERIA Nos ayudaron a mejorar nuestra producción de máquinas (Sector Papelera) en una pequeña empresa familiar en Bilabo, España. ¡Gracias por todo! 🙌🚀 #Innovación #Ingeniería TFM INGENIERIA» Ana.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres avanzar con tu proyecto?