Опубликовано

RFID-модуль RC522

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Радиочастотная идентификация RFID (от англ. Radio Frequency IDentification) представляет собой бесконтактную технологию, которая широко используется в системах контроля доступа, аутентификации персонала, в логистике, в розничной торговле и др. Для идентификации людей наиболее популярным является формат бесконтактной пластиковой карточки, по размеру совпадающей с банковской. Такую карточку для запроса доступа как правило нужно осознанно подносить к считывающему устройству на расстояние порядка 10 см.

Внешний вид, назначение контактов

Система RFID состоит из двух основных компонентов: RFID-метки (тега), которая находится у объекта, который мы хотим идентифицировать, и RFID-считывателя (рис. M2.1).

RFID

Рис. M2.1. RFID-модуль RC522

RFID-считыватель состоит из радиочастотного модуля, блока управления и антенной катушки, которая генерирует высокочастотное электромагнитное поле. RFID-метка является пассивным компонентом, в состав которого входит антенна и электронный микрочип. Когда микрочип приближается к электромагнитному полю считывателя на расстояние около 2 см, в катушке его антенны благодаря индукции генерируется напряжение, которое включает микрочип. Поссле этого RFID-метка может обмениваться информацией с RFID-считывателем.

В проектах мы воспользуемся RFID-считывателем RC522 на базе популярной микросхемы MFRC522 производства фирмы NXP Semiconductors. В комплект поставки считывателя RC522 входят две RFID-метки типа Mifare Classic с памятью объемом 1 Кбайт: карточка и брелок. Каждая метка имеет уникальный идентификационный ключ (UID).

Основные характеристики

Наименование Значение
Напряжение, В 3,3
Потребляемый ток в активном состоянии, мА 13 ÷ 26
Потребляемый ток в состоянии ожидания мА 10 ÷ 13
Рабочая частота, МГц 13,56
Поддерживаемые типы карт MIFARE S50, MIFARE S70, MIFARE UltraLight, MIFARE Pro, MIFARE DESfire
Размеры, мм 40×60

Схема подключения

M2-2-RFID

Рис. M2.2. Схема подключения RFID-модуля RC522 к Arduino Uno


Примечание

Для подключения модуля RFID вы также можете использовать контактную группу ISCP на плате Arduino Uno, подключив туда контакты MISO (ICSP-1), SCK (ICSP-3) и MOSI (ICSP-4).


Получаем UID метки RFID

  1. Загрузите специализированную библиотеку MFRC522 (https://github.com/miguelbalboa/rfid/archive/master.zip).
  2. Подключите библиотеку в среду разработки Arduino IDE: Скетч | Подключить библиотеку | Добавить .ZIP библиотеку…
  3. Загрузите скетч DumpInfo из папки примеров библиотеки MFRC522: Файл | Примеры | MFRC522 | DumpInfo.
  4. Запустите монитор порта.

Программа считывает информацию с поднесенной RFID-метки и выводит ее в терминал. Для RFID-меток из комплекта RC522 она будет иметь примерно следующий вид:

Card UID: 7E 56 37 D5

Card SAK: 08

PICC type: MIFARE 1KB

  • первая строка — уникальный идентификатор RFID-метки (UID) для этого типа меток (4 байта);
  • вторая строка — поле SAK (Select Acknowledge), содержащее информацию о типе метки и производителе. Значение 08 означает, что это метка типа Mifare Classic 1K производства NXP;
  • третья строка — расшифровка типа метки, извлеченная из поля SAK: Mifare 1KB.

Внимание!

Запишите уникальный идентификатор (UID) вашей RFID-метки! Он понадобится вам в следующем примере.


Программный код

Загрузите скетч из листинга M2.1. При поднесении метки к считывателю на мониторе порта будет появляться надпись Access granted, а на плате загораться встроенный светодиод.

Листинг M2.1. Подключение модуля RFID

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <SPI.h>
 
#include <MFRC522.h>
 
// Настраиваем пины SS и RST для нашей платы - Arduino Uno
 
#define SS_PIN 10
 
#define RST_PIN 9
 
#define LED13 13 //Встроенный светодиод.
 
//Зажигается когда доступ разрешен
 
MFRC522 mfrc522(SS_PIN, RST_PIN); // Создаем объект MFRC522
 
void setup() {
 
pinMode(LED13, OUTPUT);
 
Serial.begin(9600);
 
SPI.begin(); // Инициализируем интерфейс SPI
 
mfrc522.PCD_Init(); // Инициализируем MFRC522
 
Serial.println("Approximate your card to the reader...");
 
Serial.println();
 
}
 
void loop(){
 
if (!mfrc522.PICC_IsNewCardPresent()) // Ожидаем RFID-метку
 
return;
 
// При обнаружении RFID-метки пытаемся считать ее данные
 
if (!mfrc522.PICC_ReadCardSerial())
 
return;
 
// Извлекаем уникальный идентификатор RFID-метки (UID)
 
String content = "";
 
// Преобразуем поле UID в строку типа "XX XX XX XX"
 
for (byte i = 0; i < mfrc522.uid.size; i++)
 
{
 
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
 
content.concat(String(mfrc522.uid.uidByte[i], HEX));
 
}
 
content.toUpperCase();
 
// Выводим UID в терминал
 
Serial.print("Tag UID:");
 
Serial.println(content);
 
// Сравниваем UID с заданным
 
if (content.substring(1) == "<strong>7E 56 37 D5</strong>") // Укажите <strong>здесь</strong> UID
 
//RFID-метки, которой
 
//разрешен доступ
 
{
 
// Если UID совпал с заданным - доступ разрешен
 
Serial.println("Access granted");
 
Serial.println();
 
// Включаем встроенный на плате светодиод на 3 секунды
 
digitalWrite(LED13, HIGH);
 
delay(3000);
 
digitalWrite(LED13, LOW);
 
}
 
else // Если UID не совпал с заданным - доступ запрещен
 
{
 
Serial.println("Access denied");
 
Serial.println();
 
}
 
}
Добавить комментарий