Help Needed: PN532 is not detected :(

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!

What does this produce? (I assume 0)

That soldering looks suspect to me. You could well have a short between Vcc and SDA, and I'm not sanguine about that GND connection at all.

And likely more importantly, those switches do not appear to be in the proper positions to enable I2C to me.

Indeed.

That soldering looks suspect to me.

To me too.

Thank you to everyone who took the time to respond and sorry for wasting your time . How foolish i was , the problem were in switch part :]

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.