Контроль доступа с помощью RFID

На этой странице вы узнаете, как подключить RFID-сканер типа RC522 к Arduino, чтобы организовать простейшую систему контроля доступа. В качестве приводного устройства здесь используется электрозамок.

Что может данная система управления. Открывать и закрывать замок для определенной RFID-метки (ее номер прописывается в скетче). Можно включить режим автоблокировки : по прошествии заданного в настройках времени замок сам закроется без повторного использования сканера. Есть возможность подключить еще одну метку, дав ей доступ. Можно полностью открыть замок, не обесточивая его (режим аварийной эвакуации). Контроллер запоминает номера последних пяти меток, которые подносили к сканеру. Их вы можете посмотреть на экране. Информация о всех событиях выводится на LCD-дисплей. Система позволяет настраивать все необходимые параметры и записывать их в память Arduino.

СОСТАВ СИСТЕМЫ

PLC Arduino UNO с шилдом Sensor Shield v 5.0 (питание 7-12 В постоянного тока), LCD-дисплей с шиной I2C, DC-DC конвертер для питания реле и дисплея, 1 реле управления электрозамком, кнопочный пост с 3-я кнопками и RFID-сканер RC522.

КАК РАБОТАЕТ

Система работает предельно просто : вы подносите к сканеру карту или брелок с RFID-меткой, и если ее номер (UID) совпадает с заранее определенным в скетче, замок открывается (подается питание на реле), если нет - в доступе отказывается.

RFID-сканер типа RC522

RFID-сканер типа RC522

КНОПКИ УПРАВЛЕНИЯ

Управлять системой можно с помощью трех кнопок : НАСТРОЙКИ, ВВЕРХ и ВНИЗ. Рассмотрим их функции подробно :

Кнопка НАСТРОЙКИ

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

Пройдемся по пунктам меню Настройки.

  • Last ID : идентификационный номер последней поднесенной к сканеру RFID-метки. Этот пункт меню для информации.
  • Manual Lock : здесь вы можете открыть или закрыть замок без метки с помощью кнопок ВВЕРХ или ВНИЗ. Обратите внимание, функция AutoLock работает и в этом режиме.
  • Auto Lock : автоматическая блокировка замка после определенного времени.
  • Auto Lock Timer : время ожидания перед автоматической блокировкой замка, сек.
  • Full Unlock : полная разблокировка замка. В этом режиме функции Manual Lock и Auto Lock не работают.
  • Add : XXXXXXXX : подключение второй метки. Номер основной метки (Master Tag) прописан в скетче и поменять его без перепрошивки контроллера нельзя. Но вы можете подключить еще одну метку. Для этого, находясь в этом пункте меню, поднесите к сканеру карту или брелок, который вы хотите подключить. Естественно, в доступе вам будет отказано. Но зато сканер считает номер этой метки : вы его увидите на экране. Далее нажмите кнопку ВВЕРХ - метка будет подключена, и вы сможете открывать ей этот замок, как и основной (Master). Обратите внимание, новая метка запишется в оперативную память контроллера и будет работать до первой перезагрузки. Это удобно, если вы хотите дать кому-то только временный доступ. Чтобы оставить ее на постоянной основе, сохраните настройки (смотрите ниже). Если вы хотите проверить, какая дополнительная метка сейчас подключена (и подключена ли вообще), нажмите кнопку ВНИЗ : на экране появится номер второй метки. При сбросе настроек к заводским (по умолчанию) подключенная метка удаляется.
  • Remove 2-nd RFID : отключение второй метки. Нажав кнопку ВВЕРХ, вы отключите вторую метку. Если вы хотите проверить, какая дополнительная метка сейчас подключена (и подключена ли вообще), нажмите кнопку ВНИЗ : на экране появится номер второй метки. При сбросе настроек к заводским (по умолчанию) подключенная метка удаляется.
  • Save Settings : запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
  • Read Settings : чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную.
  • Load Default : загрузка значений по умолчанию. При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. При сбросе настроек к заводским дополнительная подключенная метка удаляется.
  • Show Last 5 IDs : показ номеров последних пяти меток. В процессе своей работы контроллер запоминает ID поднесенных к сканеру меток. Пять последних вы можете увидеть, пролистав список с помощью кнопок ВВЕРХ или ВНИЗ. Обратите внимание, в память заносятся не все метки подряд, а только те, которых до этого не было (чтобы одна и та же метка не забила весь список). Если меток больше пяти, последняя в очереди удаляется, чтобы освободить место под новую. Этот список хранится только в оперативной памяти, при перезагрузке он удаляется.

Кнопки ВВЕРХ-ВНИЗ

В режиме настроек этими кнопками меняются параметры.

У вас может возникнуть вопрос : а зачем вообще нужна эта метка, если замок можно открыть с кнопочного поста? На данной странице представлен тестовый стенд, в реальной системе контроллер и кнопки управления можно убрать в закрытый бокс, сделать внешне подключаемыми (через пароль) или вынести в другое помещение. Обычный пользователь будет видеть только RFID-сканер и экран LCD, да и его можно убрать.

ИНДИКАЦИЯ LCD

Основной экран :
верхняя строчка - "Access Control". Если поднести метку с доступом, то "Access Granted!", а если без доступа, то "Access Denied!".
нижняя строчка - "Scan your RFID". Если поднести метку, то вы увидите ее ID - "ID : XXXXXXXX". Если включен режим автоблокировки, то на экране отобразится обратный отсчет времени до закрытия замка : "Auto Lock : XX".
Полная разблокировка :
верхняя строчка "Full Access" - полный доступ.
нижняя строчка - "No RFID needed" - метка не нужна.

ПОДКЛЮЧЕНИЕ

Здесь приведено соединение всех элементов системы управления, Arduino (через шилд) и RFID-сканера. В виде схемы подключение представлено ниже.

Подключение к Arduino

Подключение к Arduino

Плата Arduino и Sensor-shield

  • питание Arduino : от адаптера 7-12VDC (2A)
  • питание шилда (перемычка убрана) : от адаптера 7-12VDC (2A) через понижающий DC-DC преобразователь типа LM2596 (не менее 2А)
  • LCD-дисплей 1602 + модуль I2C : питание от шилда (подсоединяем GND и VCC к любым свободным пинам G и V цифровых входов), SDA (I2C) - A4 (шилд), SCL (I2C) - A5 (шилд)
  • реле замка : сигнал от Arduino - цифровой пин 8, питание от шилда (подсоединяем GND и VCC реле к пинам G и V пина 8)
  • сигнал от кнопки ВНИЗ : вход в Arduino - цифровой пин 5. Линию сигнала и земли шунтируем резистором 10 кОм
  • сигнал от кнопки ВВЕРХ : вход в Arduino - цифровой пин 6. Линию сигнала и земли шунтируем резистором 10 кОм
  • сигнал от кнопки НАСТРОЙКИ : вход в Arduino - цифровой пин 7. Линию сигнала и земли шунтируем резистором 10 кОм

Подключение RFID-сканера RC522

  • пин питания 3,3V - к источнику 3,3 вольта. На плате Arduino есть источник такого напряжения. Если на плату установлен Sensor Shield v5, то получить напряжение 3,3 вольта можно с одного из пинов Bluetooth (смотрите спецификацию). В любом случае прежде, чем подключать питание к сканеру замерьте его мультиметром. Не подавайте на RC522 5 вольт, он сгорит!!!
  • пин GND - подсоединяем к земле Arduino или шилда
  • пин RST - линия сброса (RESET). К цифровому пину 9 на контроллере
  • пин IRQ - в этой конфигурации не используется
  • пин MISO - линия Master-In-Slave-Out. Соединяем с цифровым пином 12
  • пин MOSI - линия Master Out Slave In. Соединяем с цифровым пином 11
  • пин SCK - линия Serial Clock. Соединяем с цифровым пином 13
  • пин SDA - линия Serial Data. Соединяем с цифровым пином 10

Электрозамок

Электрозамок или другое устройство подсоединяем к контактам NO, NC и COM электромагнитного реле. Напряжение и ток зависят от типа выбранного вами реле.

Схема подключения фильтра

Схема подключения фильтра

ЧТО НУЖНО ДЛЯ ПРОЕКТА

  • PLC Arduino UNO - 1 шт
  • Sensor Shield v 5.0 - 1 шт
  • модуль RFID RC522 - 1 шт
  • понижающий DC-DC преобразователь типа LM2596 (не менее 2А) - 1 шт
  • LCD-дисплей 1602 + модуль I2C - 1 шт
  • реле одноканальное (катушка 5VDC) - 1 шт
  • кнопка тактовая с колпачком - 3 шт
  • резистор 10 кОм (0,25 Вт) - 3 шт
  • макетная плата под пайку 30х55 - 1 шт (для монтажа кнопок)
  • стойка мама-мама М3х15 - 8 шт (для монтажа LCD-дисплея и сканера)
  • гайка М3 - 50 шт и более в зависимости от способа крепления вышеуказанных элементов
  • болт М3х15, М3х10 - 20 шт и более
  • провод Dupont мама-мама или папа-мама (20 см) - 30 шт и более в зависимости от типа пинов соединяемых элементов
  • провод типа AWG - 50 см (соединение штекер - DC-DC преобразователь - Sensor Shield)
  • штыревой соединитель 40pin - 1 шт
  • штекер питания DC 2.1 мм с клеммной колодкой папа и мама - 1 пара (для подключения шилда)
  • кусок оргстекла или т.п. - 20х30 см (для монтажа всех элементов)
  • болт М6х15 и гайка - 4 шт (ножки оргстекла)

ВОЗМОЖНЫЕ ПРОБЛЕМЫ

Главная проблема, возникшая при полевых испытаниях, большая чувствительность Arduino к электромагнитным полям (плата зависает). Это явление возникает при коммутации через реле токов переменного напряжения 220 В и более. В этом случае вынесите реле К1 на расстояние не менее полуметра от платы.

Еще одна проблема связана с декодированием ID метки из 16-го формата в строку символов. Если в коде ID есть 0 (ноль), то он отбрасывается, например, номер D3974F0A превратится в D3974FA. Соответственно, будет отказано в доступе. Если ваша метка имеет подобный код, сразу уберите из него 0 (ноль) в скетче (MasterTag = "D3974FA").

Сразу отвечу на другой вопрос : а как узнать UID вашей карты или брелка? После того, как вы установите библиотеку MFRC522.h в среде программирования Arduino IDE, подключите ваш RFID-сканер к контроллеру, а его (через USB) к компьютеру. Затем войдите в раздел главного меню : Файл - Примеры - MFRC522 и откройте скетч DumpInfo. Проверьте правильность подключения пинов в строках : #define RST_PIN 9 и #define SS_PIN 10. Загрузите скетч в Arduino и откройте монитор порта. Поднесите карту или брелок к сканеру и не убирайте, пока вся информация от RFID-метки не отобразится на экране. В верхних строчках вы можете найти такую : "Card UID: D3 97 4F 0A", где "D3 97 4F 0A" - номер вашей карты в 16-ой системе. Ее и нужно занести в скетч, естественно без пробелов и 0 (нуля) : String MasterTag = "D3974FA";.