Считыватель mifare своими руками

Обновлено: 06.07.2024

Радиочастотная идентификация (RFID) — это технология бесконтактной идентификации объектов при помощи радиочастотного канала связи. Идентификация объектов производится по уникальному идентификатору, который имеет каждая электронная метка. Считыватель излучает электромагнитные волны определенной частоты. Метки отправляют в ответ информацию – идентификационный номер, данные памяти и пр.

Метки бывают двух типов: активные и пассивные (без встроенного источника энергии, питаются от тока, индуцированного в антенне сигналом от ридера). Метки работают на разной частоте: LF (125 - 134 кГц), HF (13.56 МГц), UHF (860 - 960 МГц). Метки бывают только для чтения или на них можно заносить информацию (изменять существующие данные). В Arduino в качестве считывателя используют популярный модуль RFID-RC522. Модуль выполнен на микросхеме MFRC522 фирмы NXP, которая обеспечивает работу с метками HF (на частоте 13,56 МГц). В комплекте с модулем RFID-RC522 идут две метки, одна в виде карты, другая в виде брелока.

RC-522

Купить модуль RC-522 на AliExpress

Карточки и брелоки можно купить отдельно. Также можно использовать для опытов обычные билеты московского транспорта (наземный транспорт и метро), которые также используют технологию RFID.

Технические характеристики

  • Напряжение питания: 3.3V
  • Потребляемый ток :13-26mA
  • Рабочая частота: 13.56MHz
  • Дальность считывания: до 6 см
  • Интерфейс: SPI
  • Скорость передачи: максимальная 10МБит/с
  • Размер: 40мм х 60мм

Микросхема MFRC522 поддерживает интерфейсы SPI, UART и I2C. Выбор интерфейса осуществляется установкой логических уровней на определенных выводах микросхемы. В Arduino принято использовать SPI.

RC-522

Назначение выводов интерфейса SPI:

  • SDA – выбор ведомого
  • SCK – сигнал синхронизации
  • MOSI – передача от master к slave
  • MISO – передача от slave к master
  • IRQ – вывод прерывания
  • GND – земля;
  • RST – вывод для сброса
  • Vcc –питание 3.3 В

Выводы модуля подключаются к цифровым пинам Arduino

На платах Arduino есть разъём ICSP, который можно использовать для работы с интерфейсом SPI.

RFID RC-522

Библиотека MFRC522

Установим через менеджер библиотек вариант MFRC522 (домашняя страница).

MFRC522

В состав библиотеки входят несколько примеров, а также компонент для Fritzing. Для первого знакомства запустите скетч DumpInfo. В комментариях указаны варианты подключения для разных плат. Стандартный вариант для Arduino Uno/Nano.

При поднесении карточки в мониторе порта увидите большую таблицу данных. Дождитесь полной загрузки данных и обратите внимание на данные в блоке 0 - там можно увидеть идентификатор.

RFID

Но у вас нет необходимости вручную считывать информацию из массива данных, идентификатор можно получить через вызов функции. В начале есть отдельная строка Card UID: 77 E7 BC 3A.

Рассмотрим упрощённый пример. Суть в следующем. Инициализируем объект класса MFRC522 и проверяем различные условия. Если к ридеру не поднесли карточку, то выходим из функции loop(), если прочитать карточку не можем, то также выходим из функции. Если оба условия всё же выполнились (есть карта и данные с неё), то выполняем уже нужный код.

Меня программа не пустила на порог собственного дома, а кота пустили. "Умный дом" - угроза человечеству.

MFRC522

Запись и чтение пользовательских данных

Рассмотрим два примера, которые входят в состав библиотеки - rfid_write_personal_data и rfid_read_personal_data. Они позволяют записать, а потом считать данные с карточки.

Сначала загрузим скетч для записи данных. После прошивки подносим карточку к ридеру, в мониторе порта просят ввести фамилию, которую нужно завершить символом решётки. После успешной записи нужно ввести имя и опять с завершающим символом решётки.

Write RFID

Затем прошиваем плату вторым примером и снова подносим карточку. Ридер считает данные и выведет их в монитор порта.

Read RFID

Подключение к плате ESP32

У платы ESP32 расположение выводов отличается от Arduino Uno, поэтому схема подключения будет следующей.

Библиотека MFRC522 должна работать без проблем.

Функции библиотеки

PCD_DumpVersionToSerial() - выводит версию прошивки ридера в монитор порта

Учебное пособие по Arduino RFID-RC522: чтение принципа контроля доступа к IC-карте и защита от взлома

[Особенности статьи: 1. Предложите принцип взлома IC-карт и простые и эффективные методы защиты. 2. В других статьях в Интернете неясно, как подключить оборудование.]

Позвольте мне рассказать о принципе простой системы контроля доступа:

(1) Активация карты IC: администратор карты контроля доступа вставляет карту в устройство для чтения карт, затем программное обеспечение считывает информацию о серийном номере UID карты IC (эквивалентно номеру ID) и вводит UID в базу данных для активации карты IC.

(2) Считывание карты: при считывании карты считыватель считывает UID и запрашивает базу данных. Если UID существует в базе данных, это означает, что это действующий пользователь, а затем реле управления отключается, и электромагнитный замок открывает дверь.

Модуль RC522, который я не покупал, также использует связь SPI. Говорят, что есть и последовательная связь, но стоимость выше. Вы можете посмотреть основные аксессуары этого модуля: карты и кардридер.。


Сама Arduino имеет библиотеку для работы RC5200, как показано на рисунке ниже, откройте библиотеку управления в средстве разработки Arduino.



После установки вы можете увидеть примеры библиотеки MFRC522, включая чтение UID, получение информации о блоке, изменение UID, копирование информации о карте и т. Д.

Примечание: вообще говоря, UID и данные производителя блока 0 сектора 0 не могут быть изменены картой IC. Они определяются во время производства (о структуре хранения карты IC, когда у вас есть время опубликовать введение, друзья могут пойти Проверить эту информацию онлайна такжеДовольно много), карты UID, которые могут быть изменены во всех секторах, поддерживают только модификацию UID. Некоторые безответственные производители систем контроля доступа оценивают идентичность пользователя только на основе UID. Простой метод - записать операцию UID перед чтением. Если это можно записать, то эта карта является UID-картой, то есть копией, и считается недействительной. Система также может записывать, какая IC-карта была скопирована для отслеживания незаконных действий. Это только для общения и обучения. Пожалуйста, не используйте ее в незаконных целях.


Это не упоминается в большинстве связанных статей в Интернете. Он только говорит, как подключиться, но не говорит нам, почему он подключен именно так.Даже версия для Arduino неясна.

Мы открываем пример ReadNUID, существуют различные версии схем подключения контактов Arduino и RC522, мы можем проследить эту разводку.Также есть введение на упомянутой выше домашней странице проекта github.

RC522 имеет всего 8 контактов, как показано на рисунке:


Излишне говорить, что питание 3,3 В и заземление GND. IRQ используется только для прерываний. Он здесь не используется и не может быть подключен. Подключение оставшихся 5 контактов показано в следующей таблице:

/* Typical pin layout used:

* MFRC522 Arduino Arduino Arduino Arduino Arduino

* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro

* Signal Pin Pin Pin Pin Pin Pin

* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST

* SPI SS SDA(SS) 10 53 D10 10 10

* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16

* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14

* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15

Здесь протестирована модель Arduino - Arduino Nano V3.0. Для других моделей измените номера контактов в соответствии с приведенной выше таблицей.

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

Вам, конечно же, знакомы карточки и брелки, которые нужно подносить к считывателю, а они при этом пропускают на работу или дают проехать в метро. Такие брелки и карточки используют технологию под названием RFID — Radio Frequency IDentification. Сегодня мы познакомимся с основами этой технологии, а также узнаем, как использовать ее в своих проектах на базе Arduino.

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

Стоит отметить, что это описание касалось пассивных меток. Бывают и активные метки, имеющие собственный источник питания, а также полупассивные. Что же касается радиосигнала, в RFID сигнал типично передается на частоте 125 КГц или 13.56 МГц. Существует множество стандартов передачи сигнала и их реализаций. Довольно распространенным является стандарт ISO/IEC 14443 и его реализация MIFARE от компании NXP Semiconductors. Еще одним известным стандартом является NFC, основанный на ISO 14443. Одна из его реализаций называется NTAG, также от NXP Semiconductors. Стоит отметить, что в общем случае реализации одного стандарта от разных производителей могут быть не вполне совместимы друг с другом и содержать расширения, которых нет в самом стандарте.

Fun fact! В метках MIFARE используется секретный шифр Crypto-1, выжигаемый прямо в железе, что изначально делало невозможным клонирование этих меток. Шифр со временем отреверсили и предали широкой огласке, поэтому последние лет 10 метки MIFARE может свободно клонировать кто угодно. Кое-какие подробности описаны в этих слайдах. Эта история наглядно демонстрирует, почему безопасность через неясность (security by obscurity) не работает.

RFID-модуль RC522 для Arduino

Комплект для Arduino — RFID модуль RC522, карта, брелок, штырьковые разъемы

Для Arduino существует несколько модулей для работы с RFID. Пожалуй, самым дешевым и в то же время самым популярным, является модуль под названием RC522 на базе чипа MFRC522 от NXP. Чип MFRC522 поддерживает технологии MIFARE и NTAG, радиосигнал передается на частоте 13.56 МГц. С микроконтроллером чип общается по SPI. Однако прямо по SPI ходить в чип нам не придется, так как для работы с модулем существует готовая библиотека MFRC522 . Ее можно установить прямо из Arduino IDE.

В этой статье мы рассмотрим подключение к Arduino считывателя карт и брелоков RFID RC522, работающего на частоте 13,56 МГц.

  • Arduino (или совместимая плата); ;
  • беспроводная RFID метка (идёт в комплекте по ссылке выше) или бесконтактный билет на метро/наземный транспорт; ;
  • соединительные провода (вот такие);
  • компьютер с Arduino IDE.

1 Описание считывателяRFID RC522

Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP. Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.

Беспроводной модуль RFID-RC522

Беспроводной модуль RFID-RC522

Микросхема MFRC522 поддерживает следующие варианты подключения:

ИнтерфейсСкорость передачи
SPI (Serial Peripheral Interface, последовательный интерфейс для связи периферийных устройств)до 10 Мбит/сек;
двухпроводной интерфейс I 2 Cдо 3400 кбод в режиме High-speed,
до 400 кбод в режиме Fast;
последовательный UART (аналог RS232)до 1228,8 кбод.

С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC -меток.

2 Схема подключения RFID-RC522 к Arduino

Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.

Схема подключения RFID-RC522 к Arduino по интерфейсу SPI

Схема подключения RFID-RC522 к Arduino по интерфейсу SPI

Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к Arduino так:

Пин RC522Пин Arduino
RSTD9
SDA (SS)D10
MOSID11
MISOD12
SCKD13

Не забывайте также, что Arduino имеет специальный разъём ICSP для работы по интерфейсу SPI. Его распиновка также приведена на иллюстрации. Можно подключить выводы RST, SCK, MISO, MOSI и GND модуля RC522 к разъёму ICSP на Ардуино.

3 Библиотека для работы Arduino с RFID

Микросхема MFRC522 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её техническое описание (приложено внизу статьи). Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек, написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\

Установка библиотеки rfid-master для работы Arduino с RFID-метками

Установка библиотеки "rfid-master" для работы Arduino с RFID-метками

После этого запустите среду разработки Arduino IDE.

4 Скетч для считывания информации, записанной на RFID-метке

Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.

Открываем скетч DumpInfo

Открываем скетч DumpInfo

Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.

Текст скетча достаточно хорошо прокомментирован.

Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.

5 Дамп данных с RFID-метки

Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M , через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.

Считываем данные с билета на наземный транспорт и метро с помощью RFID

Считываем данные с билета на наземный транспорт и метро с помощью RFID

Например, в моём случае здесь зашифрованы уникальный номер билета, дата покупки, срок действия, количество оставшихся поездок, а также служебная информация. Мы разберём в одной из будущих статей, что же записано на карты метро и наземного транспорта.

Примечание

Читайте также: