El módulo PN532 RFID/NFC permite que un Arduino/ESP32 se comunique con tags NFC y tarjetas sin contacto. Normalmente admite varias interfaces digitales, sobre todo SPI (con SS, MOSI, MISO, SCK) e I2C (con SCL, SDA), además de alimentación (VCC/GND) y señales de control/interrupción (RSTO/IRQ).
| Pin | Señal | Descripción |
|---|---|---|
RSTO |
reset | PN532 reset line for resetting the NFC controller. |
IRQ |
interrupt | Interrupt request output from the PN532 to signal events to the host. |
GND |
ground | Ground reference for the PN532 module and host interface. |
VCC |
power | Main power input for the PN532 module. |
SS |
chip-select | SPI slave-select input for enabling PN532 SPI communication. |
MOSI |
MOSI | SPI data input from the host MCU to the PN532. |
MISO |
MISO | SPI data output from the PN532 to the host MCU. |
SCK |
SCK | SPI clock input from the host MCU for PN532 SPI mode. |
SCL |
SCL | I2C clock line for PN532 communication. |
SDA |
SDA | I2C data line for PN532 communication. |
VCC.1 |
power | Power input for the I2C-side header of the PN532 module. |
GND.1 |
ground | Ground reference for the I2C-side header. |
| Desde | Hasta | Cable |
|---|---|---|
board:5V |
x1:VCC.1 |
red |
board:GND |
x1:GND.1 |
black |
board:A4 |
x1:SDA |
green |
board:A5 |
x1:SCL |
blue |
board:D2 |
x1:IRQ |
yellow |
board:D3 |
x1:RSTO |
purple |
Este ejemplo se escribió y verificó por compilación para arduino-uno. Codey Online lo adapta a cualquier otra placa compatible.
#include <Wire.h>
#include <Adafruit_PN532.h>
// Arduino Uno pins used by this example:
// IRQ -> D2
// RSTO -> D3
Adafruit_PN532 nfc(2, 3);
void setup() {
Serial.begin(115200);
while (!Serial) {
;
}
Serial.println("PN532 NFC reader starting...");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (!versiondata) {
Serial.println("Didn't find PN532 board");
while (1) {
delay(10);
}
}
Serial.print("Found PN532 chip, firmware version: ");
Serial.print((versiondata >> 24) & 0xFF, HEX);
Serial.print('.');
Serial.println((versiondata >> 16) & 0xFF, HEX);
nfc.SAMConfig();
Serial.println("Waiting for an ISO14443A card/tag...");
}
void loop() {
uint8_t uid[7];
uint8_t uidLength;
bool success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 1000);
if (success) {
Serial.print("Found tag UID: ");
for (uint8_t i = 0; i < uidLength; i++) {
if (uid[i] < 0x10) Serial.print('0');
Serial.print(uid[i], HEX);
if (i < uidLength - 1) Serial.print(':');
}
Serial.println();
delay(1000);
}
}
Describe lo que quieres construir. Codey Online escribe el codigo, dibuja el esquema de conexiones, lo compila y graba tu placa directamente desde el navegador.
Empieza gratis