
Интернет-магазин «Неглупый Дом»
RC522 считывает уникальный UID карты или брелока по SPI, Arduino сверяет его со списком разрешённых и на пару секунд включает реле замка.
RC522 — модуль на базе RFID-чипа MFRC522, который работает на частоте 13.56 МГц (это стандарт MIFARE, самый распространённый для карт доступа и проездных). Модуль создаёт вокруг антенны-катушки слабое электромагнитное поле; когда в это поле попадает пассивная карта или брелок без собственной батарейки, поле наводит в её встроенной катушке ток, которого хватает, чтобы чип карты "проснулся" и передал модулю свой уникальный идентификатор (UID) — обычно 4 или 7 байт, зашитых на заводе и неизменяемых.
Arduino получает этот UID от модуля по шине SPI (быстрый последовательный протокол, которым пользуются многие периферийные модули) и просто сравнивает полученные байты с заранее прописанным в коде "разрешённым" UID. Если совпадение есть — Arduino подаёт сигнал на модуль реле, которое физически замыкает контакты электромеханического замка на пару секунд, имитируя нажатие кнопки открытия двери.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <SPI.h> // стандартная библиотека для шины SPI
#include <MFRC522.h> // библиотека конкретно под чип RC522
#define SS_PIN 10 // пин SDA/SS модуля
#define RST_PIN 9 // пин сброса модуля
MFRC522 rfid(SS_PIN, RST_PIN); // создаём объект считывателя на этих пинах
const int relayPin = 7; // пин управления реле
byte allowedUID[4] = {0xDE, 0xAD, 0xBE, 0xEF}; // впишите сюда UID своей карты (см. ниже как узнать)
void setup() {
SPI.begin(); // запускаем шину SPI
rfid.PCD_Init(); // инициализируем модуль считывателя
pinMode(relayPin, OUTPUT);
}
void loop() {
// если новой карты нет в зоне действия или не удалось прочитать её серийный номер — просто выходим
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
bool match = true;
for (byte i = 0; i < 4; i++) {
if (rfid.uid.uidByte[i] != allowedUID[i]) match = false; // сверяем каждый байт UID
}
if (match) {
digitalWrite(relayPin, HIGH); // включаем реле — замок открывается
delay(2000); // держим открытым 2 секунды
digitalWrite(relayPin, LOW); // закрываем обратно
}
rfid.PICC_HaltA(); // переводим карту в режим остановки, чтобы не читать её повторно без необходимости
}
Библиотека MFRC522 (от miguelbalboa) ставится через Менеджер библиотек Arduino IDE. Чтобы узнать UID своей карты — один раз запустите скетч без проверки совпадения и выведите `rfid.uid.uidByte` в Serial-монитор на скорости 9600, поднесите карту и спишите полученные 4 байта в `allowedUID`.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 219 ₽ 197 ₽ (экономия 22 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.