Giới thiệu Module thẻ từ RFID RC522 SPI
Module thẻ từ RFID RC522 SPI sử dụng IC MFRC522 của Phillip dùng để đọc và ghi dữ liệu cho thẻ NFC tần số 13.56mhz, với mức giá rẻ thiết kế nhỏ gọn, module này là sự lựa chọn hàng đầu cho các ứng dụng về ghi đọc thẻ RFID.
RFID (Radio Frequency Identification) là công nghệ nhận dạng đối tượng bằng sóng vô tuyến. Công nghệ này cho phép nhận biết các đối tượng thông qua hệ thống thu phát sóng radio, từ đó có thể giám sát, quản lý hoặc lưu vết từng đối tượng.
Một hệ thống RFID thường bao gồm 2 thành phần chính là thẻ tag (chip RFID chứa thông tin) và đầu đọc (reader) đọc các thông tin trên chip.
Ngoài ra còn có : Lora – NRF24L01,…
Các truyền không dây: HC-12 / RF / RFID,…
Anten đi kèm: Anten 433MHz

Chức năng các chân
- 3.3V : Cấp nguồn 3.3V.
- RST : Reset chuẩn SPI.
- GND : Cấp nguồn 0V
- IRQ : Không kết nối.
- MISO : Truyền SPI
- MOSI : Truyền SPI
- SCK : Tạo xung SPI
- SS : Cho phép SPI

Thông số kỹ thuật MODULE RFID RC522
- Điện áp hoạt động : 3.3V
- Dòng điện hoạt động : 26mA
- Dòng điện chờ : 1A
- Dòng điện nghĩ : 80uA
- Công suất : 86mW
- Tần số sóng mang : 13.56MHz
- Chuẩn truyền : SPI
- Khoảng cách hoạt động : 0~60mm(mifare1 card)
- Giao tiếp : SPI
- Tốc độ truyền dữ liệu : tối đa 10Mbit/s
- Các loại card RFID hỗ trợ : mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire
- Nhiệt độ hoạt động : -10°C – 60°C
- Số chân : 8
- Loại : Module
- Kích thước : 40mm*60mm
Chương trình Test
Nguyên lý kết nối

Chương trình
Thư viện : Tải MFRC522.h Cài trực tiếp trên phần mềm Arduino IDE
#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] = {"Last-Minute-Engg"}; //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];
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("");
}
//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
}
//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");
}
Tham khảo chương trình mẫu và thông tin linh kiện chi tiết tại:

IC SỐ SN74HC14 CỔNG NOT, IC CỔNG LOGIC 14 CHÂN DIP
TỤ ĐIỆN PHÂN CỰC 3.3UF/400V , TỤ HÓA TẦN SỐ CAO
Pic12F683 DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
CẦU DIODE KBPC810 DIP, CHỈNH LƯU TOÀN KỲ 8A - 1000V
TRANSISTOR NPN S9018 DIP, DÃY HOẠT ĐỘNG 15V VÀ 50mA
Pic16F886 DIP, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
Quạt tản nhiệt 24VDC 30x30x10mm, Quạt mini 24V
CẢM BIẾN MỰC CHẤT LỎNG XKC-Y26A-V 1M, KHÔNG TIẾP XÚC
QUANG TRỞ LỚN CDS 12MM 12528, CẢM BIẾN ÁNH SÁNG
IC SN74HC540 IC ĐỆM, 8BIT 3 TRẠNG THÁI ĐẢO NGÕ RA
IC SỐ SN74HC00 CỔNG NAND, IC CỔNG LOGIC 14 CHÂN DIP
TRANSISTOR NPN 2N3904 DIP, HOẠT ĐỘNG 60V VÀ 200mA
ĐỘNG CƠ STEP 5V + ULN2003 V1, BỘ ĐIỀU KHIỂN DC BƯỚC
Hàng rào Cái vuông đôi thẳng 2*40P 2.54mm, Jump header đôi 40 pin
TIỆM CẬN KIM LOẠI PS-05N 3 DÂY NPN, CẢM BIẾN THƯỜNG MỞ
Module giảm áp 300W 12A, Module ổn áp DC-DC 4.5-30VDC
Hàng rào Cái vuông đơn cong 1*40P 2.54mm, Jump header đơn 40 pin
Kìm cắt linh kiện YTH-101 93mm, Kìm cắt dây điện
IC SỐ SN4HC245 IC ĐỆM, IC 3 TRẠNG THÁI 8BIT DIP
Núm vặn biến trở volume AG2 Xanh lá, Núm nhựa chiết áp
TỤ ĐIỆN PHÂN CỰC 33UF/25V , TỤ HÓA TẦN SỐ CAO
ĐIỆN TRỞ 82R 100W, ĐIỆN TRỞ CÔNG SUẤT NHÔM RX24
Bộ Jack nối sắt GX16-2P, Đầu nối sắt Đực Cái GX16 2 chân
Pic12F629 DIP, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
Điện trở 1R5 1/4W 5 vòng màu, Điện trở 1/4W - 100 con
CẢM BIẾN MQ8, CẢM BIẾN KHÍ HYDRO
Dây bus 3pin 40cm 24AWG cùng hướng XH2.54mm, Kích thước chân 2.54mm
ANTEN GSM 3DBI 9CM KIM TRONG, ANTEN 3G/4G
IC SỐ SN74HC08 CỔNG AND, IC CỔNG LOGIC 14 CHÂN DIP
Dây bus 6pin 10cm 24AWG cùng hướng XH2.54mm, Kích thước chân 2.54mm
At89s52 DIP, VI ĐIỀU KHIỂN HỌ 8051 CỦA ATMEL
Dây chuyển 1ipex sang SMA 11mm lỗ trong 30cm, Dây chuyển ipex 1
Điện trở 5R6 1/4W 5 vòng màu, Điện trở 1/4W - 100 con
Điện trở 220R 1/4W 5 vòng màu, Điện trở 1/4W - 100 con
Pic16F877A DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
PIC18F4550 DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
Module giảm áp ASM1117 3.3V ngang , Mạch giảm áp DC-DC 800mA
Màn hình LCD2004 I2C Xanh dương, Màn hình hiển thị Text
Hàng rào cái lỗ tròn đơn thẳng 1*40P 2.54mm, Jump header đơn 40 pin
Phíp đồng lỗ đơn 2 mặt màu xanh 4x6cm, Board PCB lỗ 2 lớp
IC SN74HC373 IC CHỐT LOẠI D, THIẾT LẬP 3 TRẠNG THÁI
Quạt tản nhiệt 5VDC 80x80x25mm, Quạt mini 5V
Bộ Jack nối sắt GX20-10P, Đầu nối sắt Đực Cái GX20 10 chân
MODULE CẢM BIẾN TCRT5000, DÒ LINE TRẮNG ĐEN
Núm vặn biến trở volume AG2 Cam, Núm nhựa chiết áp
ANTEN 433Mhz 3dBi 5CM KIM TRONG, ANTEN LORA, RF
ANTEN 2.4G/5.8GHz 6DBI 20CM LỖ TRONG, ANTEN WIFI, ZIGBEE
Cút nối dây điện nhanh FL-214, Cút nối dây đa năng mở rộng
Pic16F887 DIP, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
ĐÈN BÁO AD16-22DS XANH LÁ 220VAC, ĐÈN BÁO PHI 22MM
ĐỘ K HỢP KIM M6 1000MM, CẢM BIẾN ĐẦU DÒ LOẠI REN
Màn hình LCD2004 Xanh lá, Màn hình hiển thị Text
Ống gen co nhiệt phi 20mm màu Đen, Dây gen co nhiệt - 1 mét
Khớp nối mềm D19-L25 6x6mm, Khớp nối mềm trục hợp kim nhôm
Pic16F946 DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
Điện trở 12R 1/4W 5 vòng màu, Điện trở 1/4W - 100 con
Đồng hồ điện áp Volt 4-100VDC xanh dương chống nước, Hiển thị led 7 đoạn
Dây bus 2pin 10cm 24AWG cùng hướng XH2.54mm, Kích thước chân 2.54mm
TỤ ĐIỆN PHÂN CỰC 47UF/25V , TỤ HÓA TẦN SỐ CAO
TIỆM CẬN KIM LOẠI LJ18A3-8-J/DZ 2 DÂY 90-250VAC, CẢM BIẾN THƯỜNG ĐÓNG
Pic16F1947 DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
Jack DC Đực 5.5x2.1mm đầu domino, Đầu nối nguồn thông dụng
LED 5MM PHỦ MÀU ĐỎ CHÂN NGẮN, LED SIÊU SÁNG - 40 CON
Màn hình Oled 0.96in I2C màu trắng , Oled 128x64 hiển thị điểm ảnh
ĐIỆN TRỞ 250R 100W, ĐIỆN TRỞ CÔNG SUẤT NHÔM RX24
Bàn phím mềm keypad 1x4, Ma trận phím mềm
ĐỘ K HỢP KIM M6 2000MM, CẢM BIẾN ĐẦU DÒ LOẠI REN
MẠCH CHUYỂN DB9 SANG TTL CÁI, MODULE RS232
Màn hình LCD2004 I2C Xanh lá, Màn hình hiển thị Text
Pic16F917 DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
ESP8266 ESP-12F, MODULE WIFI Ai-Thinker HỌ ESP
Điện trở 3R9 1/4W 5 vòng màu, Điện trở 1/4W - 100 con
Cút nối dây điện nhanh FL-218, Cút nối dây đa năng mở rộng
ĐỘ K DÂY HỢP KIM 2000MM, CẢM BIẾN ĐẦU DÒ LỖ TRÒN
Màn hình Oled 1.3in I2C Màu trắng, Oled 128x64 hiển thị điểm ảnh 














Đánh giá
Chưa có đánh giá nào.