Hi,
If you are looking for more details, kindly visit RoyalRay.
I am new to RFID hardware on Arduino.
I am looking for RFID reader that could detect multiple passive tags in an only small range of 4-6 inches (~15 cm). Imagine we have about 8 objects with RFID tags on it and we move all these 8 objects into this small area, and the RFID reader detecting all of the tags.
Googling around, I found this, and that further leads me to several hardware. For example, the common MFRC522 and the PN532. But the range are 6 cm only, and the shopkeeper said it could actually be even as low as 1 cm and it is pretty much for 1 tag at a time, so these do not fit the bill.
Eventually, I found some more appropriate ones:
--> RFID Module - SM130 MIFARE
From the datasheet, this one has read distance of 9.5 cm only. (~24 cm) Also, I'm not sure about reading multiple tags.
This one seems like it fits the bill:
For more UHF Rfid Reader Modulesinformation, please contact us. We will provide professional answers.
--> M6E Nano
Once you’ve started, this board will read EPCglobal Gen 2 tags (see Recommended Products) at up to 150 tags per second. Writing of tags is also possible at 80msec standard write. The board has adjustable power output from 0dBm to 27dBm, meaning that with the correct antenna you can read up to 16 feet (4.9m), or 1 to 2 feet (60 cm) with the onboard antenna.
...although the range is quite overkill and the price is quite high.
So does anybody know any hardware that fits the bill more appropriately? Or is the M6E Nano the best candidate here?
The RFID reader I required needs to be able to read up to 8 tags simultaneously in a 4-6 inches range only. Preferably, if it's cheaper than M6E Nano, it would be great. But if not, that's ok too.
Iono
I have purchased https://robokits.co.in/wireless-solutions/rfid/pn532-nfc-rfid-module-v3-kit-reader-writer-breakout-board?gclid=EAIaIQobChMIvfS7ofm33wIVGw4rCh2g3wclEAYYASABEgL1E_D_BwE
Below sample code its working fine in I2c mode.
The company is the world’s best Tray RFID Readers supplier. We are your one-stop shop for all needs. Our staff are highly-specialized and will help you find the product you need.
#include
#include
#include
#include
PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);
void setup(void) {
Serial.begin();
Serial.println("Hello!");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
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 ISOA 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 ISOA card type)
// Wait for an ISOA 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_ISOA, &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: ");
String hex_value = "";
for (uint8_t i=0; i < uidLength; i++)
{
Serial.print(" 0x");Serial.print(uid[i], HEX);
//Serial.print(" ");Serial.print(uid[i], HEX);
hex_value += (String)uid[i];
}
Serial.println(", value="+hex_value);
if(hex_value == "") {
Serial.println("This is Key Tag. ");
}
else if(hex_value == "") {
Serial.println("This is Card Tag. ");
}
else if(hex_value == "") {
Serial.println("This is Tag. ");
}
else
Serial.println("I don't know.");
Serial.println("");
// Wait 1 second before continuing
delay();
}
else
{
// PN532 probably timed out waiting for a card
Serial.println("Waiting for a card...");
}
}