RFID Arduino (Radio Frequency IDentification) — это бесконтактная идентификация транспондера (метки) с помощью радиочастотного канала связи. Система широко используется во многих отраслях: для контроля доступа по пропускам, отслеживания товаров в логистических цепочках поставок, создания систем вознаграждения и т.д. Рассмотрим, как подключить считыватель меток RFID-RC522 к плате Ардуино.
СОДЕРЖАНИЕ
Необходимые компоненты:
Дополнительные материалы на эту тему:
Система RFID для плат Arduino состоит из двух элементов: метки в виде пластиковой карты или брелка и считывателя меток. Идентификация меток основана на уникальном идентификаторе UID (стандарт Epc-96 на 96 бит), который есть у каждой rfid-метки. Модуль RC522 Arduino излучает электромагнитные волны, а RFID метки отправляют обратно свой идентификационный номер (UID) и сохраненные данные из памяти чипа.
RFID модуль RC522 распиновка, характеристики

Характеристики RFID RC522 Arduino (datasheet)
- Источник питания: 3,3 В
- Частота: 13,56 МГц
- Оптимальное расстояние: 10 мм
- Интерфейс: SPI
- Протокол: Mifare
- Размеры: 61 мм x 40 мм
Метки RFID могут быть активными или пассивными (пассивные метки работают без источника питания, поэтому они автономны и не изнашиваются) и работать на различных частотах: НЧ (125-134 кГц), ВЧ (13,56 МГц), УВЧ (860-960 МГц). Модули, которые считывают и записывают информацию на метки, называются считывателями. Модули RC522 на базе чипа MFRC522 используют электромагнитные поля для передачи данных на карту.
Как подключить RFID модуль RC522 к Arduino

| MFRC522 | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VCC | 3,3V | 3,3V | 3,3V |
| MOSI | 11 | 11 | 51 |
| MISO | 12 | 12 | 50 |
| SCK | 13 | 13 | 52 |
| SDA | 10 | 10 | 10 |
| RST | 9 | 9 | 9 |
Модуль подключается к Ардуино через интерфейс SPI. Помните, что шина SPI на платах Arduino Uno (Nano) и Mega 2560 находится на разных портах. Вам необходимо скачать библиотеки SPI, MFRC522 и распаковать архив с файлами в директории libraries в папке Arduino. После подключения модуля RC522, загрузите следующий пример программы, чтобы получить тип метки и UID (уникальный идентификатор брелка или карты).
Скетч для считывания RFID метки на Ардуино
#include "SPI.h"
#include "MFRC522.h"
#define RST_PIN 9 // пин RES
#define SS_PIN 10 // пин SS
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
delay(4);
mfrc522.PCD_DumpVersionToSerial();
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop() {
// сброс цикла, если на rc модуле нет карты
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// вывод на монитор порта идентификатора ключа
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
Контроль доступа с помощью Arduino RFID-RC522

Рассмотрим пример, который можно использовать для создания системы доступа (например, открывание двери). Программа сканирует уникальный идентификатор метки, если UID карты совпадает со значением, определенным в программе (cardID), доступ будет предоставлен (загорится зеленый светодиод). Если к кардридеру RC522 поднести неизвестную метку, доступ будет запрещен (загорится красный светодиод).
Скетч для контроль доступа с помощью RFID-RC522
#include "SPI.h"
#include "MFRC522.h"
#define RST_PIN 9 // пин RES
#define SS_PIN 10 // пин SS
byte readCard[4];
String cardID = "20C3935E"; // замените на UID своей карты
String tagID = "";
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
while (getID()) {
if (tagID == cardID) {
Serial.println("Access Granted!");
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
}
else {
Serial.println("Access Denied!");
}
Serial.print("ID: ");
Serial.println(tagID);
delay(2000);
digitalWrite(6, LOW);
}
}
boolean getID() {
if (! mfrc522.PICC_IsNewCardPresent()) {
return false;
}
if (! mfrc522.PICC_ReadCardSerial()) {
return false;
}
tagID = "";
for (uint8_t i = 0; i < 4; i++) {
tagID.concat(String(mfrc522.uid.uidByte[i], HEX));
}
tagID.toUpperCase();
mfrc522.PICC_HaltA();
return true;
}
Заключение. Модуль rc522 Arduino предназначен для генерации электромагнитного поля, которое используется для связи с метками (ключами) RFID. Считыватель может взаимодействовать с микроконтроллером Arduino с максимальной скоростью передачи данных 10 Мбит в секунду через интерфейс SPI или протокол связи I2C (порты sda scl), через который можно одновременно подключить до 127 ведомых устройств.

У меня на моём модуле RFID-RC522 почему-то 8 пинов, но на схеме только 7 пинов. Я заметил, что не подключён пин «RQ».
Какой вывод следует из этой ситуации?