Если у вас есть RFID-метки от ворот, подъезда или пропуска — и вы хотите сделать резервную копию или не хотите платить по 2000 рублей за метку, вам понадобится простой самодельный считыватель-записыватель на базе Arduino. В этой статье — что купить, как собрать и какой код загрузить.
Что купить
- Плата Arduino — подойдёт любая с UART и SPI: Uno, Nano, Mega. Самый популярный выбор — Arduino Nano (дешёвый, компактный).
- Модуль RFID RC522 — именно он умеет и читать, и записывать MIFARE Classic 1K карты (самый распространённый тип).
- Перезаписываемые RFID-метки — обычные карты не подходят для полного копирования, потому что нельзя изменить UID. Нужны так называемые «магические» метки с перезаписываемым UID (ищите по запросам: «Magic UID», «CUID», «клонируемые MIFARE», «Gen2»). Продаются в виде брелков, круглых дисков или карт — часто тоже разноцветные.
- Провода-перемычки (папа-папа) — для подключения RC522 к Arduino.
Подключение RC522 к Arduino
Модуль RC522 работает по SPI. Подключайте так:
- RC522 SDA → Arduino D10
- RC522 SCK → Arduino D13
- RC522 MOSI → Arduino D11
- RC522 MISO → Arduino D12
- RC522 RST → Arduino D9
- RC522 3.3V → Arduino 3.3V (не 5V!)
- RC522 GND → Arduino GND
Важно: питание — только 3.3 В! Подключение к 5 В может повредить модуль.
Установка библиотеки
В Arduino IDE:
- Зайдите в «Скетч» → «Подключить библиотеку» → «Управление библиотеками».
- Найдите MFRC522 от miguelbalboa.
- Установите её.
Код: считывание данных (DumpInfo)
Сначала проверьте, какая у вас карта и можно ли её прочитать:
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("Приложите карту...");
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
delay(2000);
}
}
Загрузите этот скетч, откройте монитор порта (9600 бод). Приложите метку — вы увидите её UID и содержимое секторов. Если везде «Authentication failed» — ключ изменён, и копировать без него не получится.
Код: запись данных на другую метку
Если карта читается полностью — можно делать копию. Для этого:
- Считайте все данные с оригинала (сохраните вручную или запишите на бумагу).
- Используйте скетч
rfid_write_personal_data(он есть в примерах библиотеки MFRC522). - Или воспользуйтесь готовым скетчем для клонирования — например, WritePersonalData — он позволяет записать свои данные в определённый блок.
⚠️ Важно: запись в системные блоки (например, блок 0 с UID) возможна только на магических метках и требует особых команд. Обычный RC522 не может перезаписать UID на стандартных картах.
Можно ли сделать полную копию?
- Если ваша оригинальная метка — MIFARE Classic 1K с стандартными ключами — и вы купили магическую метку с перезаписываемым UID — то да, копия будет работать.
- Если система проверяет только UID (как многие домофоны и ворота) — без правильного UID копия не сработает.
- Если ключи изменены или используется более защищённая карта (например, MIFARE DESFire) — RC522 не справится.
Заключение
Сделать простой RFID-считыватель и записыватель на Arduino — легко и недорого. Главное — понимать тип вашей карты и использовать правильные заготовки для копирования. Это отличное решение для резервного брелка от ворот или подъезда.
Удачи в проектах!
Комментарии
Пока нет комментариев. Будьте первым!