Rfid access control инструкция на русском схема

Обновлено: 25.06.2024

Как всегда черный пакет

В нем 3 коробочки и 6 ключей

Не хватает кнопки и 4 ключа, но думаю они исчезли во время доставки через вот эту «дырочку»

Из всех упаковок принт есть только у блока управления.

Вот, собственно, и он

Сзади выходит провод и виднеется фоторезистор. Провод намертво залит компаундом.

Сенсорная панель пластиковая, с защитной пленкой. Не стал ее снимать

Взвешиваем, около 270 грамм. Корпус алюминиевый, задняя пластина стальная, довольно жесткая.

Замок тоже не отстает — 290 грамм

Ну и блок питания около 330 грамм.

Увесистый наборчик, никакого пластика в корпусах — только хардкор =)
Замок. Он бывает двух типов:
Нормально открытый(NO) — при отсутствии питания язычок свободно гуляет.
Нормально закрытый(NC) — при отсутствии питания язычок заблокирован.


Схема подключения блока питания. Муська поворачивает сама на бок, извиняйте.

Ну и блок управления. С одной стороны список команд, с обратной — распиновка проводов.

Судя по схеме, к нему можно подключать дополнительные модули авторизации.

Далее спойлеров не будет, т.к. в картинках невозможно показать работу, поэтому распишу основной функционал, а как работает на практике можно будет посмотреть в видео ближе к концу обзора.

Распиновка RFID модуля RC522

Модуль RC522 имеет всего 8 контактов, соединяющих его с внешним миром.

Рисунок 4 Распиновка RFID модуля считывателя RC522

Рисунок 4 – Распиновка RFID модуля считывателя RC522

VCC обеспечивает питание для модуля. Напряжение питания может быть в диапазоне от 2,5 до 3,3 вольт. Вы можете подключить его к выходу 3.3V вашей платы Arduino. Помните, что подключение его к выводу 5V, скорее всего, выведет модуль из строя!

RST – вход для сброса и отключения питания. Когда на этот вывод подается низкий логический уровень, запускается жесткое отключение питания. Оно отключает всех внутренних потребителей тока, включая генератор, и входные выводы отключаются от внешних цепей. Во время нарастающего фронта на этом выводе модуль сбрасывается.

GND вывод земли, должен быть подключен к выводу GND на Arduino.

IRQ – вывод прерывания, который может предупредить микроконтроллер, когда поблизости будет RFID метка.

Вывод MISO / SCL / Tx действует либо как Master-In-Slave-Out (вход ведущего – выход ведомого) при включенном интерфейсе SPI, либо как последовательный тактовый сигнал при включенном интерфейсе I2C, либо как выход последовательных данных при включенном интерфейсе UART.

MOSI (Master Out Slave In) – вход SPI для модуля RC522.

SCK (Serial Clock) принимает тактовые импульсы, предоставляемые мастером на шине SPI, то есть Arduino.

Вывод SS / SDA / Rx действует либо как вход, когда включен интерфейс SPI, либо как линия последовательных данных, когда включен интерфейс I2C, либо как вход последовательных данных, когда включен интерфейс UART. Этот вывод обычно помечается заключением в квадрат, чтобы его можно было использовать в качестве опорной точки для идентификации других выводов.

Подключение проще некуда.

Питаем блок питания от сети, далее расправляем охапку проводов от блока управления и подключаем:
"+" — красный
GND("-") — черный и один из проводов кнопки открытия
PUSH — синий и второй провод кнопки открытия
Управление осуществляется всего тремя проводами, замок подключается к блоку питания, в котором установлено реле помощнее.
Логика подключения лично мне чужда. У меня Нормально Открытый(NO) замок, соответственно я его накинул на клеммы NO.
Но судя по всему, NO означает, что в режиме закрытия напряжение не подается. Ну или тупо перепутали надписи. Перекинул на NC и все заработало как надо.
Остальные провода могут использоваться для подключения дополнительных средств авторизации и для управления блоками автоматических дверей/шлагбаумов. Чуть не забыл за серый и фиолетовый провода — они служат для подключения звонка, на сенсорной панели есть соответствующая кнопка. При нажатии выдается напряжение порядка 3 мВ, так что просто повесить любую свистелку нельзя, но нам звонок и не обещали.
Ах да, кнопку открытия можно подключить к черному и жёлтому проводу блока управления, тогда она будет симулировать принятие ключа/пин-кода, а не активировать реле через блок питания.

Итоги:

Я хотел прикупить еще и нормально закрытый замок, наткнулся в магазине на похожий набор от 5600 рублей за кнопочную панель с RFID и до 20, так что сравнивая с нашими ценами, вроде недорого. Так же панели продаются отдельно, начиная от 10$ за простенькую, вместо комплектного блока питания можно использовать свой + реле, дабы разгрузить модуль управления. NC замки в сети от 2$ за горсть небольших или пару средних. В итоге можно очень хорошо сэкономить.
NO замок я выбрал сам, т.к. устанавливать планирую в доме и при отключении света в кабинете все равно нечего делать, к тому же никто не запрещает использовать портативные источники питания вместо комплектного блока.
На данный момент единственный минус — дверь кабинета тоньше накладки, а это значит, что край будет так или иначе выступать или дверь придется углублять в короб. Поэтому и тестировал макет. Но в этом сам виноват — никогда не вникаю в размеры(не будьте как я), придется поискать тоньше или устанавливать в гараж.
Кстати, об уличной установке — влагозащита действительно неплохая, правда уплотнительная резинка не полностью замыкается на нижней части. Возможно это сделано специально для избежания накопления конденсата, но в люки подводных хранилищ установка уже нежелательна. Корпус можно назвать антивандальным — все кроме сенсорной панели металлическое, пластина для крепления на стене довольно крепкая, с 6 точками фиксации.
Единственное — замок не выглядит очень надежным и если в помещении можно смело ставить(обычную межкомнатную дверь можно вынести с любым замком), то на улице нужно что-то более массивное.
Отдельно плюсы и минусы в столбик расписывать не буду, чтобы Вы могли составить собственное мнение.

Купон на скидку 10%: Elec

Ну вот и всё, надеюсь обзор будет полезен =)

Если возникли вопросы, не стесняйтесь, я всегда с удовольствием отвечаю на объективные комментарии.

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.



Внимание проплаченый топик! Программа iTry то бишь. Устройство представляет собой контроллер электро-механического/магнитного замка, открывая дверь по цифровому коду и/или RFID метке. Этот контроллер двери прислали мне уже достаточно давно, но инструкция на китайском, на работе завал… В общем написать обзор дошли руки только сейчас.
В роли метки подходят карты и брелки стандарта EM Marine (частота 125 КГц). Так же присутствует функция кнопки звонка, сам не звонит это только кнопка. Контроллер способен открывать дверь:
— по паролю или по карте
— по паролю + карта
Карт можно запрограммировать до 500 штук.

Характеристики:
Размер: 117х117х21 мм
Рабочее напряжение: 12V DC.
Допустимый диапазон напряжения: 10-16V
Потребление: 90 мА в дежурном режиме, 150 мА максимум.
Стандарт меток: 125 КГц (EM Marine)
Память на 500 меток
Условия работы:
Температура: -20 — +55 °С
Влажность: 0-95%
Не для уличной установки.

Корпус сделан из пластмассы, к стене прикручивается пластиковое же основание и к нему прищёлкивается корпус, плюс 1 саморезик снизу. Лицевая панель покрыта плёнкой, под которой щёлкают кнопки.


Антенна считывателя накручена по периметру корпуса, этим достигается хорошая дальность считывания карты/брелка до 6,5 см для карты и 3,5 см для брелка.


На плате расположена колодка для подключения блока питания на 12В и периферии в виде замка, кнопки выхода, геркона (датчика открытия двери) и звонка.


Если в замке нет встроенной защиты от искрения, то советую для защиты релюхи между выводами замка поставить диод (обычно идёт с такими замками в комплекте). Реле кстати на 3A 250V AC, 3A 30V DC. Правда или нет не скажу, обычно замку хватает 1A 12V.

Начну наверное с главного, где этот контроллер можно установить. Точно не на внешние двери, совершенно не защищён от вандализма, любой гопник оторвёт его от стены одним ногтём. Предназначен контроллер скорее для внутренних помещений в офисе, и то запираемых на ключ на ночь.
Но есть читер способ :) установить как секретку изнутри деревянной двери. Но в этом случае теряем возможность входа по коду и кнопочку с колокольчиком, какая жалость. Через столешницу из ДСП в 2 см и пачки бумаги толщиной в 3.5 см антенна пробивает, т.е. 55 мм древесины максимум для карты и 40 мм для брелка. Это если лицом к двери ставить, а если ставить штатно, то со спины дальность считывания падает более чем в 2 раза, через столешницу брелок уже ловиться с большим трудом. Через металл не пробивает.

А дальше инструкция:
Это на китайском, потрепалась за пару месяцев :)






Ну а эта русская, выстраданная на мобильном гугл переводчике.

Опустим расхваливание и перейдём к программированию, довольно таки многофункциональному хочу заметить.

Настройки по умолчанию:
— Режим программирования «990101».
— Пароль открытия двери «1234».
— Пароль открытия двери в режиме пароль+карта «0000».
— Время открытия двери 3 секунды.
— Задержка тревоги 0 секунд.
— Функция личного пароля выключена.


Подключение:
Нарисовал по быстрому схемку

Геркон — Датчик двери
Кнопка — кнопка выхода
Нормально открытый замок — Замок, который открыт без подачи напряжения.
Нормально закрытый замок — Замок, который закрыт без подачи напряжения.
Звонок — Контакты для звонка. У нас в квартирах обычно через кнопку проходит 220В, вот такие звонки подключать не стоит.
Перемычку JP2 поставить на 1 и 2 ногу, важно при нормально закрытом замке.

1. Режим программирования:
Нажимаем "*" и в течении 2 сек. набираем «990101» услышим двойной гудок и загорится диод «OK».

2. Выход из режима программирования
Нажимаем "*", и вообще "*" работает как «назад» по меню.
Все остальные действия выполняются в режиме программирования.

3. Добавление карты
1) Нажимаем «5»
2) Вводим ID пользователя (от 001 до 500), слышим двойной гудок.
3) Прикладываем карту, слышим двойной гудок.
Для ввода следующего ID не надо опять нажимать «5».
4)Для выхода нажимаем "*".
Если услышали тройной гудок, значит такой ID или карта уже существует. Запоминаем какой ID какой карте присвоили, удаление карты может производиться по ID если карта утеряна.

4. Удаление карты
1) Нажимаем «7»
2) Прикладываем удаляемую карту или набираем ID юзера, слышим двойной гудок.
Для выхода нажимаем "*"
Для удаления ещё одной карты не надо опять нажимать «7».

5. Установки для открытия двери
А: По карте или паролю
Нажать «1» затем «0», слышим двойной гудок.
Б: По карте + паролю
Нажать «1» затем «1», слышим двойной гудок.
— Можно установить до 500 паролей для каждого юзера или один общий.
В: Режим личного пароля
Нажать «1» затем «3», слышим двойной гудок.
Г: Режим общего пароля
Нажать «1» затем «2», слышим двойной гудок.
Эти два последних режима под вопросом, у меня не получилось заставить работать карта + общий пароль, открывался при любых настройках только по личному паролю.

7. Замена общего пароля (по умолчанию 1234)
В режиме программирования нажать «3» затем набрать новый четырёхзначный пароль, слышим двойной гудок.
Пароль «0000» установить нельзя.

8. Установка времени открытия двери
Нажать «2» затем двузначное число равное секундам, например 05 равно 5 секундам.

9. Тревога на несанкционированное открытие двери
Включить функцию: нажать «4», затем «1».
Выключить функцию: нажать «4», затем «0».

10. Установки геркона
Дверь закрыта при разомкнутом контакте: нажать «6», затем «1».
Дверь закрыта при замкнутом контакте: нажать «6», затем «0».

11. Установка задержки тревоги открытой двери
Нажать «82», затем двузначное число равное секундам, например 05 равно 5 секундам.
Функция работает только при открытой двери.
Тревоги не будет, если дверь закрыли до истечения установленного времени. Рекомендуется ставить доводчик двери.

12. Установки датчика сигнализации открытой двери
Включение функции: нажать «8», затем «1».
Действительно для режима пароль или карта + . закрыто разблокировано.
Выключение функции: нажать «8», затем «0».
Функция работает при нормально открытой двери и при несанкционированном открытии, когда её не закрыли, контроллер издаст длинный звуковой сигнал.

13. Восстановление заводских настроек
1 способ: Нажать «8», затем «6» услышим тройной гудок, двойной гудок, через 5 секунд ещё серию. Настройки стёрты, диод «ОК» останется гореть, но контроллер уже не в режиме программирования. Его можно погасить набрав, например, «1234».
2 способ: Замкнуть на пару секунд перемычку J2 при включённом контроллере, настройки сотрутся, но добавленные юзеры останутся.

14. Изменение пароля программирования
Нажать «0», ввести новый шестизначный пароль 2 раза.

Вывод:
Годная вещь для тех кто точно знает, что она ему нужна. Российские аналоги со схожим функционалом стоят намного дороже.

PS: Для себя я так и не решил куда его поставить, дома входная дверь толстовата, если только на холодильник ^_^ А на работе пользуемся СКУД совсем другого уровня.
PPS: Ах, да. Отдельным лотом но в комплекте заказывался испытуемый брелок SAC-16099 125 KHz Programmable/ Writable Proximity RFID ID Keychain Mifare for Access Control (Black).

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




Дисклеймер: повторять — не призываю, за сборку и применение — отвечаете сами, я делюсь информацией исключительно в ознакомительных целях. Например, чтоб помогали компаниям, обслуживающим домофоны, вовремя латать «дыры», если таковые с помощью прибора обнаружатся.

1. Что это такое? Что умеет?

Устройство, которое я собирал в далёком 2017 году, есть ни что иное, как спуфер домофонного RFID-ключа, работающего на частоте 125 кГц. Слово «спуфер» в данном случае означает, что устройство, по сути ключом не являясь, выдаёт себя за него, и домофоны реагируют на это соответствующе.

Прибор умеет транслировать любые коды ключей, которые записаны в его память. Некоторые коды можно найти в Сети по запросу «ключи-вездеходы», их я вставил в прошивку в первую очередь. Но при некотором навыке и желании можно вставить в прошивку коды вообще всех RFID-ключей, которыми вы пользуетесь (если они работают на частоте 125 кГц), и, таким образом, иметь возможность заменить одним прибором связку брелков.

Я знаю, что на просторе Сети гуляет большое количество схем подобных устройств. Моей целью было создать наипростейший вариант из всех доступных. Удалось или нет — судите сами.

2. Какими навыками нужно обладать, чтобы повторить данный проект?

Прежде всего, навыки работы с Arduino: иметь установленную среду разработки, уметь заливать в плату прошивки, устанавливать библиотеки, драйверы, вот это вот всё. Далее. Имеется в проекте место, где без пайки — ну вот никак. Потому — нужны прямые руки и паяльник с расходниками. Уметь читать электрические принципиальные схемы (или их подобия). Ну и навыки программирования на C++, дабы иметь возможность кастомизации прибора. Но это уже опционально.

3. Какие запчасти нужны и как их монтировать?

Не откладывая в долгий ящик - вот схема устройства: Простите за то, что «не по ГОСТ» — я в drawio рисую, ибо единственная бесплатная и удобная альтернатива Visio, а я сейчас только лицензионный софт использую. Но, полагаю, всё и так предельно понятно.


Как видно, BOM для базовой версии выглядит примерно так:

  1. Arduino Nano (или любая другая Дуня, которая под рукой есть);
  2. RFID-ключ формата EM4100 (вместо катушки индуктивности);
  3. n-p-n транзистор (любой какой отыщется, частоты тут не очень высокие);
  4. резистор на 10К;
  5. конденсатор на 560 пФ (лучше SMD, можно прямо в корпус от ключа припаять);
  6. литий-ионный аккумулятор — по вкусу;
  7. три сенсорных кнопки;
  8. OLED-дисплей с I2C интерфейсом;
  9. модуль зарядки для liIon;
  10. повышающий DC-DC преобразователь с выходом 5 В.

Собрать тестовый образец можно и на беспаечной макетке. Особых инструкций тут не требуется, за исключением того, как быть с «индуктивностью». Об этом — поподробнее.


Ключ, подобный тому, что на фото, можно раздобыть у любого местного мастера, либо заказать на Али. На корпусе ключа имеется крышка, которую следует аккуратно открыть, добравшись до начинки:


Она представляет собой катушку и микросхему памяти с двумя контактными площадками по бокам. Выводы катушки припаяны как раз к этим площадкам. Всё это залито тонким слоем эластичного термополимера (по виду и свойствам похожего на застывший клей B7000). Чтобы добыть катушку, я поступил следующим образом. Взяв канцелярский нож, я аккуратно продавил лезвием текстолит между площадками и микросхемой. Микросхему отделил от катушки и выкинул. Затем паяльником я аккуратно (чтобы не отпаять тонкие проводки катушки) сжёг термополимер над контактными площадками, сделав возможным дальнейшую прозвонку.


Прежде чем паять, следует измерить сопротивление катушки, убедившись, что она не в обрыве. Если всё в порядке, то собирать лучше так: сперва припаять SMD-конденсатор к контактным площадкам (он должен аккуратно поместиться между ними), затем — ножки транзистора и под конец — резистор к базе. Всё это можно аккуратно смонтировать в корпус ключа. Провода «земли» и базы транзистора припаивать в последнюю очередь.


Затем сделать в крышке ключа отверстие под эти провода, и закрыть брелок, придав ему почти что первозданный вид. Для сборки на беспаечной макетке к проводам следует припаять штырьевые разъёмы (или просто хорошенько залудить их, чтобы можно было без проблем вставлять в макетную плату).

4. Прошивка, тест и наладка

Как и обещал, ссылка на репозиторий проекта. Файлы прошивки лежат в папке My_125_kHz_spoofer_v.03.

После сборки и заливки прошивки прибор готов к использованию. Чтобы убедиться в его работоспособности, совсем не обязательно искать домофон — можно обойтись китайским модулем для чтения RFID-ключей, который называется RDM6300 и ещё одной платой Arduino (хотя кому что проще). Прошивку для модуля RDM6300, выдающую транслируемый код ключа в том же формате, в каком он внесён в прошивку спуфера, я также положил в репозиторий проекта. Схема подключения ридера — там же.

Порядок тестирования с помощью ридера RDM6300:

  1. Убедиться, что ридер работает, поднеся к антенне любой из имеющихся в наличии ключей на 125 кГц (данные будут выводиться в COM-порт);
  2. Выбрать в меню спуфера интересующий код ключа;
  3. Поднести антенну к ридеру. Если ридер прочёл тот же ключ, что указан в прошивке — всё получилось! Else — проверяем схему, ищем, где ошибка, устраняем её и начинаем с пункта 1.

5. Что в прошивке можно менять, а что — лучше не трогать

Поскольку лепилась прошивка на основе вот этого, не вполне понятного для меня кода, то жизненно-необходимые функции, которые менять нельзя вот прям совсем, я вынес в отдельную вкладку functions.ino. Остальная часть программы служит исключительно для предоставления пользователю комфортной возможности вызвать функцию EmulateCard (ну, и нескольких строчек кода перед ней).

Свои ключи можно добавлять в массив uint64_t universalID[], расположенный на 75 строке кода. Поскольку я не «задефайнил» общее количество ключей в памяти устройства, а некоторые функции завязаны на эту константу, при добавлении своего ключа следует менять также пределы, в которых находится переменная keyNumber, отвечающая за выбор ключа. Ну и не забывать свой ключ в меню добавлять. В общем, всё сыровато, но при желании, повторюсь, разобраться не трудно.

6. Что в приборе можно было бы доработать

  1. Добавить поддержку ключей iButton (хотя бы самых распространённых от Dallas).
  2. Добавить эмуляцию ключей, работающих на частоте 13,5 МГц (как я понял, либо через ношение перезаписываемой заготовки и модуль RC522, либо технически-сложно, через реальную эмуляцию).
  3. Добавить в прибор ридеры iButton, RDM6300 и RC522, чтобы сделать прибор ещё более универсальным.

7. История создания

Была на дворе осень 2017 года. Будучи студентом второго курса магистратуры, я томился неразрешёнными вопросами самоопределения. Проще говоря, маялся бездельем и искал, чем бы заняться. В итоге решил довести до конца свои старые инженерные проекты в ущерб посещению университета.

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

Днём попасть в подъезд любой многоэтажки труда не составляет никакого — социнженерия из серии «Здравствуйте, соцопрос о качестве работы управляющей компании для название_местной_газеты» отлично работает, да и вообще, в основном жильцы не против, чтобы кто-то заходил в подъезд вместе с ними. Ночью — другое дело. А я любил вылазить на крыши либо на закате, либо ночью… Назрела проблема, которую я и решил вышеописанным способом.

Как я помню, информация о подобных устройствах нашлась не сразу. Гуглёжка по ключевикам «взломщик домофонов» не давала почти ничего. Адекватное стало находиться, когда я чуть-чуть разобрался в технологии RFID, и стал задавать уже более осмысленные вопросы, типа «RFID emulator», «RFID multykey», «RFID spoofer».

В итоге получилось отыскать две приличные англоязычные статьи по теме. В одной автор описывал, как на основе Arduino делался довольно замороченный с аппаратной точки зрения ключик, а во второй — всё то же самое, но без исходников, зато с очень простой аппаратной частью. Справедливо рассудив, что раз и та, и другая схема соединяются с антенной одним пином Arduino, я решил скрестить простое аппаратное решение и открытые исходники. Удалось, пусть и не с первого раза).

На фото в начале данной статьи — далеко не первая версия прибора. Первая была на макетке, и работала через СОМ-порт. Помню, как прохожие всячески давали мне понять, что я выгляжу подозрительно, когда я с раскрытым ноутом стоял у двери многоэтажного дома, и что-то там пиликал в домофоне.

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

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

Что такое RFID? Как это работает? Взаимодействие RFID модуля RC522 с Arduino

Что такое RFID? Как это работает? Взаимодействие RFID модуля RC522 с Arduino

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

Что такое технология RFID и как она работает?

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

Рисунок 1 Как работает технология RFID

Рисунок 1 – Как работает технология RFID

Считыватель состоит из радиочастотного модуля и антенны, которая генерирует высокочастотное электромагнитное поле. Метка, напротив, обычно является пассивным устройством, то есть она не содержит батареи. Вместо этого она содержит микрочип, который хранит и обрабатывает информацию, и антенну для приема и передачи сигнала.

Для считывания информации, закодированной в метке, она размещается в непосредственной близости от считывателя (она не обязательно должна находиться в пределах прямой видимости от считывателя). Считыватель генерирует электромагнитное поле, которое заставляет электроны проходить через антенну метки и обеспечивать чип питанием.

Рисунок 2 – Как работает технология RFID

Обеспеченная питанием микросхема внутри метки затем отвечает отправкой своей сохраненной информации обратно считывателю в виде другого радиосигнала. Это называется обратным рассеянием (backscatter). Обратное рассеяние или изменение электромагнитной/радиочастотной волны обнаруживается и интерпретируется считывателем, который затем отправляет данные на компьютер или микроконтроллер.

Обзор аппаратного обеспечения - Модуль чтения / записи RF522 RFID

Рисунок 3 Модуль RFID считывателя RC522 с меткой-картой и меткой-ключом

Рисунок 3 – Модуль RFID считывателя RC522 с меткой-картой и меткой-ключом

Модуль считывателя RFID RC522 предназначен для создания электромагнитного поля на частоте 13,56 МГц, которое он использует для связи с метками RFID (стандартные метки ISO 14443A). Считыватель может взаимодействовать с микроконтроллером через 4-контактный последовательный периферийный интерфейс (SPI) с максимальной скоростью передачи данных 10 Мбит/с. Он также поддерживает связь по протоколам I2C и UART.

У модуля имеется вывод прерывания. Это удобно потому, что вместо того, чтобы постоянно опрашивать RFID модуль «есть ли карта в поле зрения?», модуль сам предупредит нас, когда метка окажется рядом.

Рабочее напряжение модуля составляет от 2,5 до 3,3 В, но хорошая новость заключается в том, что логические выводы допускают напряжение 5 вольт, поэтому мы можем легко подключить его к Arduino или любому микроконтроллеру с 5-вольтовой логикой без использования какого-либо преобразователя логических уровней.

Характеристики RFID модуля RC522
Частотный диапазон13,56 МГц, ISM диапазон
ИнтерфейсSPI / I2C / UART
Рабочее напряжение питанияот 2,5 В до 3,3 В
Максимальный рабочий ток13-26 мА
Минимальный ток (отключение питания)10 мкА
Логические входыдопускают 5 В
Расстояние считывания5 см

Код Arduino. Считывание RFID метки

Связь с RFID модулем RC522 – это сложная работа, но, к счастью для нас, есть библиотека MFRC522, которая упрощает чтение и запись в RFID меток. Спасибо Мигелю Бальбоа. Сначала скачайте библиотеку, посетив репозиторий GitHub, или просто нажмите на кнопку ниже, чтобы скачать архив:

Чтобы установить библиотеку, откройте Arduino IDE, перейдите в Скетч → Подключить библиотеку → Добавить .ZIP библиотеку и выберите только что загруженный файл rfid-master.zip .

После установки библиотеки откройте меню Файл → Примеры → MFRC522 → DumpInfo .

Рисунок 6 Скетч DumpInfo библиотеки MFRC522

Рисунок 6 – Скетч DumpInfo библиотеки MFRC522

Этот скетч не будет записывать какие-либо данные в метку. Он просто сообщает вам, удалось ли ему прочитать метку, и отображает некоторую информацию о ней. Это может быть очень полезно, прежде чем опробовать любую новую метку!

Перейдите к началу скетча и убедитесь, что RST_PIN инициализирован правильно, в нашем случае мы используем цифровой вывод 5, поэтому измените его на 5!

Рисунок 7 Изменение вывода RST в примере скетча

Рисунок 7 – Изменение вывода RST в примере скетча

Хорошо, теперь загрузите скетч в Arduino и откройте монитор последовательного порта. Как только вы приблизите метку к модулю, вы, вероятно, получите что-то вроде следующего. Не двигайте метку, пока не отобразится вся информация.

Рисунок 8 Вывод скетча DumpInfo

Рисунок 8 – Вывод скетча DumpInfo

Он отображает всю полезную информацию о метке, включая уникальный идентификатор (UID) метки, объем памяти и содержание всей памяти в 1 КБ.

Подключение RFID модуля RC522 к Arduino UNO

Теперь, когда мы знаем всё о модуле, мы можем подключить его к нашей плате Arduino!

Для начала подключите вывод VCC на модуле к выводу 3,3V на Arduino, а вывод GND - к земле Arduino. Вывод RST может быть подключен к любому цифровому выводу на Arduino. В нашем случае он подключен к цифровому выводу 5. Вывод IRQ не подключен, так как библиотека Arduino, которую мы собираемся использовать, не поддерживает его.

Теперь у нас остаются выводы, которые используются для связи по SPI. Поскольку модуль RC522 требует передачи больших данных, то наилучшая производительность будет обеспечена при использовании аппаратного модуля SPI в микроконтроллере. Использование выводов аппаратного SPI модуля намного быстрее, чем «дергание битов» в коде при взаимодействии через другой набор выводов.

Обратите внимание, что у плат Arduino выводы SPI различаются. Для плат Arduino, таких как UNO/Nano V3.0, это цифровые выводы 13 (SCK), 12 (MISO), 11 (MOSI) и 10 (SS).

Если у вас Arduino Mega, выводы отличаются! Вы должны использовать цифровые выводы 50 (MISO), 51 (MOSI), 52 (SCK) и 53 (SS). В таблице ниже приведен список выводов для связи по SPI для разных плат Arduino.

Список выводов для связи по SPI для разных плат Arduino
MOSIMISOSCKCS
Arduino Uno11121310
Arduino Nano11121310
Arduino Mega51505253

В случае если вы используете плату Arduino, отличную от приведенных выше, рекомендуется проверить официальную документацию Arduino, прежде чем продолжить.

Рисунок 5 Подключение модуля RFIDсчитывателя RC522 к Arduino UNO

Рисунок 5 – Подключение модуля RFIDсчитывателя RC522 к Arduino UNO

Как только вы всё подключите, вы готовы к работе!

Распределение памяти MIFARE Classic 1K

Память метки 1 КБ организована в 16 секторов (от 0 до 15). Каждый сектор дополнительно делится на 4 блока (блоки 0–3). Каждый блок может хранить 16 байтов данных (от 0 до 15).

Это говорит нам, что у нас точно

16 секторов x 4 блока x 16 байтов данных = 1024 байта = 1 КБ памяти

Весь 1 килобайт памяти с секторами, блоками и данными показан ниже.

Рисунок 9 – Вывод скетча DumpInfo. Структура памяти Рисунок 10 – Трехмерное представление структуры памяти MIFARE Classic 1K

Блок 3 каждого сектора называется Sector Trailer и содержит информацию, называемую Access Bits (биты доступа), для предоставления доступа на чтение и запись к остальным блокам в секторе. Это означает, что в каждом секторе на самом деле для хранения данных доступны только 3 нижних блока (блоки 0, 1 и 2), а это означает, что в 64 байтовом секторе у нас есть только 48 байтов, доступных для нашего собственного использования.

Блок 0 сектора 0 также известен как Manufacturer Block / Manufacturer Data содержит данные производителя микросхемы и уникальный идентификатор (UID). Блок производителя выделен ниже красным цветом.

Рисунок 11 Вывод скетча DumpInfo. Блок производителя

Рисунок 11 – Вывод скетча DumpInfo. Блок производителя

Предупреждение: перезаписывать блок производителя очень рискованно, и это может навсегда заблокировать карту.

Код Arduino. Запись в RFID метку

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

Вывод в мониторе последовательного порта будет выглядеть следующим образом.

Рисунок 12 Вывод скетча записи RFID метки с помощью RC522

Рисунок 12 – Вывод скетча записи RFID метки с помощью RC522

Объяснение кода:

Скетч начинается с включения библиотек MFRC522 и SPI, определения выводов Arduino, к которым подключен RC522, и создания объекта считывателя MFRC522.

Далее нам нужно определить блок, в котором мы собираемся хранить наши данные. Здесь выбран сектор 0, блок 2. Помните, никогда не выбирайте блок 3 в любом секторе. Запись в блок Sector Trailer может сделать блок непригодным для использования.

Далее нам нужно определить массив из 18 байтов с именем readbackblock[18] . Он может быть использован для чтения контента обратно. Подождите . 18 байт? Разве не должно быть 16 байтов? Ответ - нет. Метод MIFARE_Read в библиотеке MFRC522 для хранения 16 байтов блока требует буфер размером не менее 18 байтов.

В функции setup() мы инициализируем последовательную связь с ПК, библиотеку SPI и объект MFRC522. Нам также необходимо подготовить ключ безопасности для функций чтения и записи. Здесь все шесть байтов ключа установлены в 0xFF . Поскольку карты в наборе новые, и их ключи никогда не менялись, они равны 0xFF . Если бы у нас была карта, которая была запрограммирована кем-то другим, нам нужно было бы знать ключ, чтобы получить к ней доступ. Затем этот ключ необходимо будет хранить в переменной key .

В функции loop() мы сначала сканируем, есть ли поблизости карта, если да, эта карта выбирается для записи и чтения.

Записать блок теперь очень просто, нам просто нужно вызвать пользовательскую функцию writeBlock() , которая принимает два параметра: номер блока, в который мы хотим записать данные, и сами данные.

Чтобы проверить, была ли операция записи успешной, нам нужно прочитать содержимое блока обратно. Это можно сделать с помощью пользовательской функции readBlock() , которая снова принимает два параметра: один - номер блока, а другой - массив для хранения содержимого блока. Вы можете использовать функцию PICC_DumpToSerial() , если хотите увидеть весь 1 килобайт памяти с записанным в нее блоком.

Наконец, мы печатаем содержимое массива readbackblock с помощью цикла for и отображаем его в мониторе последовательного порта.

Настройка:

Проект на Arduino

RFID система контроля доступа для дверного замка

Давайте создадим небольшой проект на Arduino, чтобы продемонстрировать, как простой модуль RFID считывателя RC522 можно использовать для создания RFID системы контроля доступа для дверного замка. Наша программа будет сканировать уникальный идентификатор каждой RFID метки, когда она достаточно близко, чтобы запитываться от считывателя RC522. Если UID метки соответствует предопределенному значению ( MasterTag ), которое хранится в памяти Arduino, доступ будет предоставлен. И если сканируем любую неизвестную метку, доступ будет запрещен. Круто! Так ведь?

Так выглядит результат.

Рисунок 13 – Демонстрация работы RFID системы контроля доступа для дверного замка

Конечно, этот проект можно привязать к открытию дверей, включению реле, включению светодиода или к чему-то еще.

Если вы не знакомы с символьными LCD дисплеями размером 16×2, то взгляните на эту статью.

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

Рисунок 14 RFID система контроля доступа для дверного замка. Подключение RFID считывателя RC522 и LCD дисплея к Arduino

Рисунок 14 – RFID система контроля доступа для дверного замка. Подключение RFID считывателя RC522 и LCD дисплея к Arduino

Всё! Теперь попробуйте приведенный ниже скетч в работе.

Программа довольно проста. Сначала мы включаем необходимые библиотеки, определяем выводы Arduino, создаем объекты LCD и MFRC522 и определяем главную метку.

В функции loop() мы ждем, пока не будет отсканирована новая метка. Как только это будет сделано, мы сравним неизвестную метку с мастер-меткой, определенной в функции setup() . Всё! Если ID метки совпадает с ID мастера, доступ предоставляется, в противном случае в доступе будет отказано.

Ключевым моментом в проекте является пользовательская функция getID() . Как только она просканирует новую карту, внутри цикла for она преобразует 4 байта UID в строки и объединяет их для создания одной строки.

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