I am currently working on a project that involves the PN532 NFC module, and I am facing some issues. I have connected the module to my Arduino Uno using I2C, but I keep getting the message "Didn't find PN53x board" when I run this code :
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);
void setup(void) {
Serial.begin(115200);
//Wire.begin(21, 22); //used this line only when connected with ESP32
Serial.println("Hello!");
pn532i2c.wakeup(); //delays 500ms
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
Serial.println(versiondata);
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}
// Got ok data, print it out!
Serial.print("Found 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);
// Set the max number of retry attempts to read from a card
// This prevents us from waiting forever for a card, which is
// the default behaviour of the PN532.
nfc.setPassiveActivationRetries(0xFF);
// configure board to read RFID tags
nfc.SAMConfig();
Serial.println("Waiting for an ISO14443A card");
}
void loop(void) {
boolean success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
// Wait for an ISO14443A type cards (Mifare, etc.). When one is found
// 'uid' will be populated with the UID, and uidLength will indicate
// if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
if (success) {
Serial.println("Found a card!");
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("");
// Wait 1 second before continuing
delay(1000);
}
else
{
// PN532 probably timed out waiting for a card
Serial.println("Timed out waiting for a card");
}
}
and use this library : GitHub - elechouse/PN532: NFC library for Arduino using PN532
Here are the details of my setup:
Arduino Uno PN532 Module
------------- --------------
GND ------------ GND
5V ------------ VCC
A4 ------------ SDA
A5 ------------ SCL
Additional Information:
- I have checked the wiring multiple times.
- The PN532 module is set to I2C mode.
If anyone has experience with the PN532 module or can provide guidance on troubleshooting this issue, I would greatly appreciate your help!






