InicioTarjetas de DesarrolloArduino¿Cómo conectar el módulo PN532 a Arduino UNO?

¿Cómo conectar el módulo PN532 a Arduino UNO?

En el siguiente tutorial se enfocara en el Modulo PN532 y aprenderás los modos de comunicación, tipos de protocolos que soporta, como conectar a las diferentes placas de Arduino y como programarlo de manera sencilla con la librería de elechouse para PN532.

El modulo PN532 posee 3 interfaces de comunicación los cuales son las siguientes:

  • 1. SPI (Serial Peripheral Interface)
  • 2. I2C (Puerto de comunicación serial)
  • 3. High-speed UART (HSU)

El modulo posee un DIP-SWITCH el cual te permitirá seleccionar el interfaz de comunicación ya sea UART, I2C o SPI, solo debes seguir la tabla que viene en el pcb para configurar lo correctamente.

Conexión con las placas de Arduino

Conectar el modulo PN532 con las placas de desarrollo Arduino en sus 3 interfaces de comunicación te dejo la siguiente imagen, la cual defines los pines de comunicación para cada placa de Arduino. Para otras tarjetas o microcontroladores consultar el pinout y identificar sus interfaces de comunicación.

En este tutorial utilizaremos un Arduino Uno para conectar el modulo PN532, a continuación tendrás 3 imágenes las cuales detallan el diagrama de conexión entre estos dos dispositivos.

Programación modulo PN532 con el IDE de Arduino

Programar el PN532 usaremos la librería desarrollada por Adafruit, descarga dando clic Aquí . Esta librería únicamente permite trabajar con comunicación I2C y SPI, pero no UART. Ya que descargaste la librería abre tu IDE de Arduino he importa la librería en su formato .zip.

Se utilizara el ejemplo que permite mostrar los datos del lector PN532 y de los tag´s que sean acercados al modulo, usaremos la comunicación 12C, por lo que conectaremos el modulo PN532 como se muestra en la imagen “Conexión para I2C en Arduino UNO” que anterior mente mencionamos, verifica que el canal 1 del DIP-SWITCH este en estado alto y el canal 2 este en bajo. Posterior mente conecta tu Arduino a tu pc, después copie y pegue el siguiente código el cual esta modificado para que funcione con la configuración I2C.

// Código de prueba próximamente  
#include <Wire.h>
#include <SPI.h>

#include <Adafruit_PN532.h>
#define PN532_IRQ (2)
#define PN532_RESET (3) 

// Interfaz de comunicación por I2C
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
void setup(void) {

 Serial.begin(115200);
 nfc.begin();

 uint32_t versiondata = nfc.getFirmwareVersion();

if (! versiondata) {
    Serial.print("PN53x no encontrado");
    while (1);
  }
 
  // Mostrar datos del sensor
  Serial.print("Encontró el chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  // Configurar para leer etiquetas RFID
  nfc.setPassiveActivationRetries(0xFF);
  nfc.SAMConfig();
  
  Serial.println("Esperando tarjeta ISO14443A");
}

// Funcion auxiliar para mostrar el buffer
void printArray(byte *buffer, byte bufferSize) {
   for (byte i = 0; i < bufferSize; i++) {
      Serial.print(buffer[i] < 0x10 ? " 0" : " ");
      Serial.print(buffer[i], HEX);
   }
} 

void loop(void) {
  boolean success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
  uint8_t uidLength;
 
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
  
  if (success) {
    Serial.println("Tarjeta encontrada");
    Serial.print("UID Longitud: ");
    Serial.print(uidLength, DEC);Serial.println(" bytes");
    Serial.print("UID: "); printArray(uid, uidLength);
    Serial.println("");
  
    delay(1000);
  }
  else
  {    
    Serial.println("Tarjeta no encontrada");
  }
}

Carga el código a tu Arduino Uno y abre el monitor serie, cambia la velocidad de los baudio a “115200” y seleccionar la opción “Nueva línea”.  El resultado que obtendrás es el siguiente:

Lectura de tag y tarjeta[/caption]

TUTORIALES RELACIONADOS