Skip to product information
This is RFID Reader/Writer RC522 SPI S50 CARD AND KEYCHAIN which works on non-contact 13.56mhz communication, is designed by NXP as low power consumption, low cost, and compact size read and write chip, is the best choice in the development of smart meters and portable hand-held devices.
It uses an advanced modulation system, fully integrated at 13.56MHz with all kinds of positive non-contact communication protocols. Support 14443A compatible answer signal. DSP deals with ISO14443A frames and error correction.
This module can fit directly in handheld devices for mass production. The module uses the 3.3V power supply and can communicate directly with any CPU board by connecting through the SPI protocol, which ensures reliable work, good reading distance.
MFRC-522 RC522 RFID RF IC card reader sensor module + 1 card
Rs. 65.00
Sale price
Rs. 65.00
Regular price
Rs. 79.00
Description
MFRC-522 RC522 RFID RF IC card reader sensor module
Do you want to know the work of RFID Reader/Writer RC522 SPI S50 CARD AND KEYCHAIN, then this Product is best for you . With this Product, you can detect radio waves produced by a reader to detect the presence of (then read the data stored on) an RFID tagThis is RFID Reader/Writer RC522 SPI S50 CARD AND KEYCHAIN which works on non-contact 13.56mhz communication, is designed by NXP as low power consumption, low cost, and compact size read and write chip, is the best choice in the development of smart meters and portable hand-held devices.
It uses an advanced modulation system, fully integrated at 13.56MHz with all kinds of positive non-contact communication protocols. Support 14443A compatible answer signal. DSP deals with ISO14443A frames and error correction.
This module can fit directly in handheld devices for mass production. The module uses the 3.3V power supply and can communicate directly with any CPU board by connecting through the SPI protocol, which ensures reliable work, good reading distance.
Technical Details
- Model: RFID Reader, Writer Module
- Frequency: 13.56 MHz
- Reading Distance: 5 cm
- Supply Voltage: 3.3V (Do not use 5V)
- Current: 13-26mA
- SPI Data Rate: 10 Mbit/s
- Dimensions: 60mm (L) x 39.5mm (W) x 5mm (H)
- Weight: 20g
Features
- Integrated analog circuitry for demodulation and decoding
- Supports ISO/IEC 14443 A/MIFARE
- Operating distance up to 50mm
- Transfer speed up to 848 kBd
- SPI up to 10 Mbit/s
- 64-byte FIFO buffer (send/receive)
- Flexible interrupt modes
- Power-down by software
- Programmable timer
- 2.5V to 3.3V power supply
- CRC coprocessor
- Internal self-test
Applications :
- Access Control Systems: Used for secure entry systems in offices, buildings, and homes using RFID cards.
- Contactless Payments: Enables secure and fast payment transactions using RFID-enabled cards or tags.
- Inventory Management: Helps in tracking and managing goods or assets by scanning RFID tags attached to products.
- Attendance Systems: Used in schools, workplaces, or events to track attendance with RFID-enabled cards.
- Public Transport: Used in ticketing systems for public transportation to streamline access control and payments.
- Library Systems: Enables automated check-in/check-out of books or materials in libraries using RFID cards or tags.
- Energy Monitoring: Tracks and reports energy usage in smart grids, home energy systems, or industrial setups.
- Wearable Devices: Integrates into wearable gadgets for real-time data transfer and internet connectivity.
- Smart Locks and CCTV: Provides wireless connectivity for smart locking mechanisms and security camera systems.
- Environmental and Smart City Systems: Supports data collection and communication for environmental monitoring and smart city applications like air quality monitoring and traffic control.
Integration with Arduino

Sample Code
| #include <SPI.h> //include the SPI bus library |
| #include <MFRC522.h> //include the RFID reader library |
| #define SS_PIN 10 //slave select pin |
| #define RST_PIN 5 //reset pin |
| MFRC522 mfrc522(SS_PIN, RST_PIN); // instatiate a MFRC522 reader object. |
| MFRC522::MIFARE_Key key; //create a MIFARE_Key struct named 'key', which will hold the card information |
| //this is the block number we will write into and then read. |
| int block=2; |
| byte blockcontent[16] = {"KitsGuru"}; //an array with 16 bytes to be written into one of the 64 card blocks is defined |
| //byte blockcontent[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //all zeros. This can be used to delete a block. |
| //This array is used for reading out a block. |
| byte readbackblock[18]; |
| //https://kitsguru.myshopify.com/products/mifare-rfid-readerwriter-13-56mhz-rc522-spi-s50-fudan-card-and-keychain |
| void setup() { |
| Serial.begin(9600); // Initialize serial communications with the PC |
| SPI.begin(); // Init SPI bus |
| mfrc522.PCD_Init(); // Init MFRC522 card (in case you wonder what PCD means: proximity coupling device) |
| Serial.println("Scan a MIFARE Classic card"); |
| // Prepare the security key for the read and write functions. |
| for (byte i = 0; i < 6; i++) { |
| key.keyByte[i] = 0xFF; //keyByte is defined in the "MIFARE_Key" 'struct' definition in the .h file of the library |
| } |
| } |
| void loop(){ |
| // Look for new cards |
| if ( ! mfrc522.PICC_IsNewCardPresent()) { |
| return; |
| } |
| // Select one of the cards |
| if ( ! mfrc522.PICC_ReadCardSerial()) |
| { |
| return; |
| } |
| Serial.println("card selected"); |
| //the blockcontent array is written into the card block |
| writeBlock(block, blockcontent); |
| //read the block back |
| readBlock(block, readbackblock); |
| //uncomment below line if you want to see the entire 1k memory with the block written into it. |
| //mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); |
| //print the block contents |
| Serial.print("read block: "); |
| for (int j=0 ; j<16 ; j++) |
| { |
| Serial.write (readbackblock[j]); |
| } |
| Serial.println(""); |
| } |
| //https://kitsguru.myshopify.com/products/mifare-rfid-readerwriter-13-56mhz-rc522-spi-s50-fudan-card-and-keychain |
| //Write specific block |
| int writeBlock(int blockNumber, byte arrayAddress[]) |
| { |
| //this makes sure that we only write into data blocks. Every 4th block is a trailer block for the access/security info. |
| int largestModulo4Number=blockNumber/4*4; |
| int trailerBlock=largestModulo4Number+3;//determine trailer block for the sector |
| if (blockNumber > 2 && (blockNumber+1)%4 == 0){Serial.print(blockNumber);Serial.println(" is a trailer block:");return 2;} |
| Serial.print(blockNumber); |
| Serial.println(" is a data block:"); |
| //authentication of the desired block for access |
| byte status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); |
| if (status != MFRC522::STATUS_OK) { |
| Serial.print("PCD_Authenticate() failed: "); |
| Serial.println(mfrc522.GetStatusCodeName(status)); |
| return 3;//return "3" as error message |
| } |
| //writing the block |
| status = mfrc522.MIFARE_Write(blockNumber, arrayAddress, 16); |
| //status = mfrc522.MIFARE_Write(9, value1Block, 16); |
| if (status != MFRC522::STATUS_OK) { |
| Serial.print("MIFARE_Write() failed: "); |
| Serial.println(mfrc522.GetStatusCodeName(status)); |
| return 4;//return "4" as error message |
| } |
| Serial.println("block was written"); |
| } |
| //Read specific block |
| int readBlock(int blockNumber, byte arrayAddress[]) |
| { |
| int largestModulo4Number=blockNumber/4*4; |
| int trailerBlock=largestModulo4Number+3;//determine trailer block for the sector |
| //authentication of the desired block for access |
| byte status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); |
| if (status != MFRC522::STATUS_OK) { |
| Serial.print("PCD_Authenticate() failed (read): "); |
| Serial.println(mfrc522.GetStatusCodeName(status)); |
| return 3;//return "3" as error message |
| } //https://kitsguru.myshopify.com/products/mifare-rfid-readerwriter-13-56mhz-rc522-spi-s50-fudan-card-and-keychain |
| //reading a block |
| byte buffersize = 18;//we need to define a variable with the read buffer size, since the MIFARE_Read method below needs a pointer to the variable that contains the size... |
| status = mfrc522.MIFARE_Read(blockNumber, arrayAddress, &buffersize);//&buffersize is a pointer to the buffersize variable; MIFARE_Read requires a pointer instead of just a number |
| if (status != MFRC522::STATUS_OK) { |
| Serial.print("MIFARE_read() failed: "); |
| Serial.println(mfrc522.GetStatusCodeName(status)); |
| return 4;//return "4" as error message |
| } |
| Serial.println("block was read"); |
|
} Physical Attributes
Package Includes
|