'How can I connect Arduino nano 33 IOT and PN532 module?
I am using the example code of readMifare
This is my code
`
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
// If using the breakout with SPI, define the pins for SPI communication.
#define PN532_SCK (13)
#define PN532_MOSI (11)
#define PN532_SS (10) // (4) <- changed to D9 for IRQ pin, refer to schematic
#define PN532_MISO (12)
// If using the breakout or shield with I2C, define just the pins connected
// to the IRQ and reset lines. Use the values below (2, 3) for the shield!
#define PN532_IRQ (2)
#define PN532_RESET (3) // Not connected by default on the NFC Shield
// Uncomment just _one_ line below depending on how your breakout or shield
// is connected to the Arduino:
// Use this line for a breakout with a SPI connection:
Adafruit_PN532 nfc(PN532_SCK,PN532_MOSI,PN532_MISO,PN532_SS);
// Use this line for a breakout with a hardware SPI connection. Note that
// the PN532 SCK, MOSI, and MISO pins need to be connected to the Arduino's
// hardware SPI SCK, MOSI, and MISO pins. On an Arduino Uno these are
// SCK = 13, MOSI = 11, MISO = 12. The SS line can be any digital IO pin.
//Adafruit_PN532 nfc(PN532_SS);
//Adafruit_PN532 nfc(PN532_SCK);
//Adafruit_PN532 nfc(PN532_MOSI);
//Adafruit_PN532 nfc(PN532_MISO);
// Or use this line for a breakout or shield with an I2C connection:
// Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
#if defined(ARDUINO_ARCH_SAMD)
// for Zero, output on USB Serial console, remove line below if using
// also change #define in Adafruit_PN532.cpp library file
#define Serial SerialUSB
#endif
void setup(void) {
#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif
/* This PN532 I2C example is modified by DotoriKing from original Adafruit PN532 example */
Serial.begin(115200);
Serial.print("\r\n\r\nPN532 NFC Start by DotoriKing");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata)
{
Serial.print("\r\nDidn't find PN53x board");
while (1); // halt
}
// Got ok data, print it out!
Serial.print("\r\nFound chip PN5");
Serial.print((versiondata>>24) & 0xFF, HEX);
Serial.print("\r\nFirmware ver. ");
Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.');
Serial.print((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.print("\r\nWaiting 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.print("\r\nFound a card!");
Serial.print("\r\nUID Length: ");
Serial.print(uidLength, DEC);
Serial.print(" bytes");
Serial.print("\r\nUID Value: ");
for (uint8_t i = 0; i < uidLength; i++)
{
Serial.print(" 0x");
Serial.print(uid[i], HEX);
}
// Wait 1 second before continuing
delay(1000);
}
else
{
// PN532 probably timed out waiting for a card
Serial.print("\r\nTimed out waiting for a card");
}
}
`
I want to connect the device at SPI setting.
I have PN532 and BUSIO library. also I connected 3.3V and ground normally and set the PN532 board according to the SPI button.
but I can only see didn't find PN53x an error message. How can I fix the situation?
Solution 1:[1]
I had the same problem. Found a solution here: https://forum.arduino.cc/t/library-pn532-for-nano-33-ble/894185
managed to get this code to work on arduino nano 33 iot by modifying the library Adafruit_PN532.cpp
old code new Adafruit_SPIDevice(ss, clk, miso, mosi, 1000000, SPI_BITORDER_LSBFIRST, SPI_MODE0);}
new code new Adafruit_SPIDevice(ss, clk, miso, mosi, 100000, SPI_BITORDER_LSBFIRST, SPI_MODE0);}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Ren |