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:

ANTEN 15dBi 5G/4G/3G/GSM/LTE 26.5CM KIM TRONG, DÂY 3M
ANTEN 12dBi 5G/4G/3G/GSM 22CM KIM TRONG, ANTEN 5G
ANTEN 18dBi 5G/4G/3G/GSM/LTE 24.3CM KIM TRONG, DÂY 3M
Anten 2.4G/5.8Ghz 10dBi 15cm lỗ trong, anten wifi, zigbee
ADC0804 CHUYỂN ANALOG SANG DIGITAL, IC ADC 8 BIT
ANTEN 16dBi 5G/4G/3G/GSM 15.1CM KIM TRONG, ANTEN 5G
Module thu phát Max485 to TTL, Mạch chuyển đổi TTL RS485
Anten 2.4G/5.8Ghz 10dBi 15cm kim trong, anten wifi, zigbee
ANTEN 2.4G/5.8GHz 10DBI 19.5CM LỖ TRONG NHỌN, ANTEN WIFI, ZIGBEE
Module thu phát Bluetooth HC06 - Mạch thu phát Bluetooth HC-06
ANTEN 2.4/5.8GHz 3DBI 11CM KIM TRONG, ANTEN WIFI, ZIGBEE
Module USB Ft232 to RS485, Mạch chuyển đổi RS485
Công tắc dòng Relay 24V, Relay công suất 250V - 10A
Module chuyển đổi UART TTL to RS485, Mạch chuyển RS485
Mạch khống chế nhiệt độ độ ẩm XH-M452, Module giám sát XH-M452
Mạch Relay 10A 12V 8 Kênh chân Header, Rơ le công suất 250VAC / 30VDC
Mạch Relay 10A 12V 2 Kênh chân Header, Rơ le công suất 250VAC / 30VDC
Module chuyển đổi USB CH340 to RS485, Mạch chuyển đổi RS485
Mạch khống chế nhiệt độ XH-W3002 220VAC đỏ, Vỏ hộp nhựa Tải max 250V / 10A
Mạch khống chế nhiệt độ XH-W1209 màu đỏ, Kích relay 12V
Module Lora SX1278 433Mhz AS32, Module thu phát không dây
Module thu phát NRF24L01 2.4Ghz anten rời, Truyền nhận không dây RF
Module thẻ từ RFID RC522 SPI, Mạch thẻ từ NFC 13.56MHz
Module thu phát NRF24L01 2.4Ghz anten liền, Truyền nhận không dây RF
MODULE I2C PCF8575, MỞ RỘNG CHÂN 16 INPUT OUTPUT
Bàn phím mềm keypad 1x4, Ma trận phím mềm
Bàn phím cứng keypad 4x4 , Ma trận phím matrix 4x4
IC PT2272-M4 Dip18 thu sóng RF315Mhz, IC giải mã RF 315MHz
MẠCH CHUYỂN DB9 SANG DOMINO CÁI, MODULE RS232
Mạch RF UART HC-12 433Mhz anten rời, Truyền nhận không dây - Loại tốt
Mạch chuyển đổi CH340 USB sang TTL UART, Mạch UART TTL
MẠCH CHUYỂN ĐỔI 0/4-20mA SANG 0-3.3V/5V/10V, MẠCH HW-685
CẦU DIODE KBP410 DIP, CHỈNH LƯU TOÀN KỲ 4A - 1000V
MẠCH CHUYỂN DB9 SANG DOMINO ĐỰC, MODULE RS232
Mạch phun sương có đế 108KHz Type C, Module phun sương siêu âm
Bộ chuyển đổi Pt100 0-10V 0-150ºC, Nhiệt độ 0-150 độ C - Loại tốt
Bàn phím mềm 1x1 màu vàng, Ma trận phím mềm 1x1 
















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