Электронные системы доступа или СКУД (система контроля и управления доступом) относительно недавно вошли в нашу повседневную жизнь, но уже стали неотъемлемой и привычной её частью. Многим из нас они встречаются по несколько раз в день: когда открываем дверь в подъезде своего дома, прикладывая ключ-таблетку или набирая код на домофоне; когда приходим на работу, прикладывая электронный пропуск к считывателю турникета на проходной; когда оплачиваем проезд в общественном транспорте картой-проездным и пр. Автор предлагает вариант контроллера для подобной системы доступа, названный им Mellon-1.
Принцип действия различных СКУД одинаков и независимо от реализации и исполнения системы сводится к следующему. Считыватель, например, встроенный в турникет в холле офисного здания, считывает код предъявляемого пользователем идентификатора и передаёт его по специализированному интерфейсу в контроллер доступа. Контроллер доступа может выполнять множество различных функций в зависимости от сложности системы, а в самом простом случае он декодирует полученный код и проверяет его по своей базе данных. В случае успеха, если код совпал, т. е. пользователь с таким идентификатором присутствует в базе, подаётся разрешающий сигнал на исполнительный механизм - турникет открывается.
В качестве идентификаторов СКУД чаще всего используется электронная бесконтактная Proximity-карта либо электронный ключ-таблетка Touch Memory. Существуют две основные разновидности Proximity-карт - Em-Marine и Mifare. Устройство и принцип действия их одинаковы. Если попытаться аккуратно расклеить-разобрать такую карту, то мы увидим спиралевидную печатную антенну, расположенную по всей площади карты, а в центре спирали - микросхему с приёмопередатчиком. Существуют также варианты, когда антенна расположена только по внутреннему периметру карты. Встроенный источник питания всегда отсутствует, а питание микросхемы карты осуществляется от электромагнитного поля считывателя. Когда такую карту подносят к считывателю, в её антенне наводится достаточное количество энергии для активации микросхемы и передачи считывателю кода доступа.
Однако есть ряд существенных технических и функциональных отличий у карт разных стандартов. Вот основные: рабочая частота карт Mifare - 13,56 МГц, Em-Marine - 125 кГц; длина идентификационного кода Mifare - 4-7 байт, Em-Marine - обычно 3 байта; а самое существенное - Mifare поддерживают шифрование и являются перезаписываемыми, в отличие от лишённых какой-либо защиты от копирования и возможности перезаписи Em-Marine. Но несмотря на это, Em-Marine наиболее популярны и распространены на сегодняшний день. Это обусловлено их низкой стоимостью и простотой работы с ними, особенно это касается программной составляющей СКУД (если говорить о разработке считывателей и контроллеров доступа).
Выпускаются карты Em-Marine в виде обычных пластиковых карт белого цвета. Зачастую производитель на них печатает и её код (рис. 1). Цифры 181,11541 - это и есть тот самый идентификационный код карты, который она передаёт считывателю. Остановимся на этом примере более подробно. 181 - это первый байт кода карты, называемый facility code или код группы, по сути - серия. А цифры после запятой 11541 - два байта индивидуального номера карты. Серия, имея размер в один байт, может принимать 256 значений, а индивидуальный номер карты размером два байта - 65536 значений.
Рис. 1. Карты Em-Marine
Каждая серия, естественно, может содержать весь интервал значений номера. На практике часто встречаются карты с одинаковой серией, но разными номерами, например: 181,12287; 181,00256; 181,11111 и пр. Иногда, как в нашем случае, на карте печатают дополнительно серию и номер одним четырёхбайтным значением. Расшифровать его можно, например, так: переводим десятичное значение серии в шестнадцатеричное 181(dec) = B5(hex), то же - для номера 11541(dec) = 2D15(hex). Затем два полученных шестнадцатеричных числа вместе переводим в десятичный формат B52D15(hex) = 11873557(dec).
Для передачи считанного кода карты между считывателем и контроллером доступа используются специализированные интерфейсы: Wiegand-4, Wie-gand-8, Wiegand-26, Wiegand-40, Dallas Touch Memory и др. Самый популярный сегодня - Wiegand-26. Цифра 26 означает, что передаётся 26 битов, 24 бита (3 байта) - данные и 2 бита контроля чётности. Интерфейс - трёхпровод-ный: D0 - линия передачи нулей, D1 - линия передачи единиц и общий провод. В исходном состоянии, когда нет передачи, на обеих линиях данных D0 и D1 установлен высокий уровень (+5 В относительно общего провода). Для передачи единицы на линии D1 устанавливают низкий уровень, а для передачи нуля соответственно устанавливают низкий уровень на линии D0. По сути, данные по интерфейсу Wiegand передаются "нулями", низкими уровнями. Длительность действия низкого уровня может варьироваться от 20 до 500 мкс, и это зависит в основном от производителя считывателя. Период следования низких уровней обычно не превышает 2...2,5 мс. На осциллограмме на рис. 2 приведён пример передачи карты с кодом 181,11541. Верхняя осциллограмма (жёлтого цвета) - линия D1, нижняя (синего) - D0. Каждый низкий уровень на линии D0 соответствует "0", а каждый низкий уровень на линии D1 - "1" кода карты в двоичном формате. Запишем последовательно слева направо полученную последовательность из 26 импульсов: 01011010100101101000101011. Откинем крайние левый и правый биты - это биты чётности. Теперь восемь бит слева направо - это первый байт кода карты, а именно её facility code или серия. Переведём из двоичной системы в десятичную и получим 10110101(bin) = = 181(dec). Аналогично для оставшихся 16 бит (это и есть двухбайтный индивидуальный номер карты): 00101101000 10101(bin) = 11541(dec).
Рис. 2. Осциллограмма
Контроллер доступа Mellon-1 рассчитан на работу с любыми считывателями Proximity-карт стандарта Em-Marine и работающими по интерфейсу Wiegand-26. Для перехода на другие интерфейс и стандарт Proximity-карт, например, Wiegand-40 и карты стандарта Mifare, никаких изменений в схеме или печатной плате не требуется. Необходимо лишь переработать прошивку микроконтроллера и подключить соответствующий считыватель. Схема контроллера доступа показана на рис. 3. В устройстве применён микроконтроллер PIC18F452-I/PT в корпусе TQFP-44. Собственно считыватель карт подключают к разъёму XT 1. Его контакты 3-5 предназначены для управления светодиодами и звуковым излучателем считывателя. Чаще всего эти контакты на считывателе имеют обозначения: 3 - LEDGreen, 4 - LEDRed, 5 - BEEP. У некоторых считывателей светозвуковая сигнализация может отсутствовать, в этом случае эти контакты разъёма остаются незадействованными. К контактам 9 и 10 разъёма XT1 подключены нормально разомкнутые контакты реле, предназначенные для подачи напряжения наэлектромагнитный замок. Након-такте 6 (EXIT) этого разъёма в исходном состоянии присутствует высокий уровень (+5 В), этот контакт предназначен для подключения кнопки на выход. Кнопка может быть любой, например, от дверного звонка. Её подключают между контактами 6 и 7 (общий провод) разъёма ХТ1. Располагаться она должна, естественно, внутри охраняемого помещения.
Рис. 3. Схема контроллера доступа
Между некоторыми контактами разъёма XT1, к которым подключают считыватель, и выводами микроконтроллера включены защитные цепи: RU6R1VD6R10 - для линии D0 (контакт 1); RU5R2VD5R11 - D1 (контакт 2); RU4R3VD4R12 - для контакта 3, к которому подключают светодиод зелёного свечения считывателя карт; RU3R4VD3R13 - для контакта 4, к которому подключают светодиод красного свечения считывателя карт; RU2R5VD2R14 - для контакта 5, к которому подключают звуковой излучатель считывателя карт; U1R6VD7VD8R15 - для линии EXIT На линии D1, D0 и EXIT через резисторы R7-R9 подан высокий уровень (напряжение питания +5 В). Микросхема памяти DS1 (24LC512), подключённая по шине I2C к микроконтроллеру DD1 (выводы 37 и 42), - внешняя EEPROM для хранения большого количества идентификационных кодов карт. В прилагаемой к статье версии программы эта память не задействована, коды карточек хранятся во встроенной EEPROM микроконтроллера. Объём EEPROM микроконтроллера PIC18F452 весьма небольшой - всего 256 байт, но этого хватает для хранения кодов 84 карт. Такого числа для домашнего использования вполне достаточно. Светодиоды HL1-HL3 и звуковой излучатель HA1 - световые и звуковой индикаторы текущего состояния контроллера.
Программа для микроконтроллера (её исходный текст и готовый hex-файл прошивки прилагаются к статье) написана на языке С в среде MpLab X IDE v.3.65, с использованием компилятора XC8 v.1.42. Обработка посылки от считывателя реализована на аппаратных прерываниях INT0 и INT1 порта B (выводы 8, 9) микроконтроллера DD1, что позволяет не отслеживать временные промежутки между импульсами и их длительность.
Контроллер доступа Mellon-1 собран на печатной плате из фольгированного с двух сторон стеклотекстолита размерами 60x70 мм. Её чертеж приведён на рис. 4. Все элементы установлены на стороне печатных проводников, их расположение показано на рис. 5. Применены элементы, кроме разъёмов, реле К1 и звукового излучателя, для поверхностного монтажа. Все неполярные конденсаторы (кроме С8 и С10) типо-размера 0805, С8 и С10 - типоразмера 0603. Диоды и стабилитроны VD2-VD9 - в корпусе miniMELF (SOD-80), диод VD1 - любой выпрямительный в корпусе SMA/DO-214AC. Светодиоды HL1 и HL3 - зелёного свечения для поверхностного монтажа, HL2 - красного свечения также для поверхностного монтажа. В устройстве применено реле TRC-12VDC-SB-AL с нормально разомкнутыми контактами. Дроссель L1 - CM453232-100KL. Разъём для программирования микроконтроллера (ХР1) - PLS с шагом контактов 2,54 мм. Съёмная перемычка (S1) - двухконтактный разъём PLS-2. Разъём XT 1 (контакты 1-8) набран из четырёх секций KLS2-350-3.50-02P-2S, его контакты 9, 10, а также XT2 - KLS2-305V-5.00-02P-2S. Внешний вид собранного устройства приведён на рис. 6 и рис. 7.
Рис. 4. Печатная плата устроства
Рис. 5. Расположение элементов на плате
Рис. 6. Внешний вид собранного устройства
Рис. 7. Внешний вид собранного устройства
К разъёму XT1 необходимо подключить считыватель карт согласно прилагаемой к нему инструкции. Считыватель подойдёт любой, рассчитанный на работу с картами Em-Marine и имеющий интерфейс Wiegand-26. В качестве примера на рис. 8 показан недорогой считыватель "Smartec ST-PR160EM". На контакты 7 и 8 разъёма XT1 подают напряжение 12 В от внешнего источника питания. К его контактам 9 и 10 подключают электромагнитный замок. После сборки контроллер необходимо запрограммировать, для этого можно использовать методику, приведённую в моей статье "Отладочная плата для микроконтроллеров PIC" ("Радио", 2017, № 10, с. 32-34).
Рис. 8. Считыватель Smartec ST-PR160EM
После успешного программирования, а также при каждом включении устройства вначале запускается программа приветствия: троекратное включение светодиодов HL1-HL3 и излучателя HA1 с частотой около 1 Гц. Затем контроллер переходит в рабочий режим ожидания карты - режим "Доступ закрыт": включены светодиоды HL2 ("Доступ закрыт") и HL3 ("Питание"), HL1 ("Доступ разрешён") выключен, контакты реле К1 замкнуты, индикация считывателя красная (см. рис. 8). Далее, перед началом использования, во внутреннюю EEPROM микроконтроллера нужно добавить ("прописать") карты. Для этого временно устанавливают перемычку S1 либо замыкают её контакты, например, отвёрткой, и подносят новую карту к считывателю на 0,5...1 с. Считыватель издаст короткий звуковой сигнал, свидетельствующий о прочтении карты, а индикация на плате останется прежней - включены светодиоды HL2, HL3. После этого перемычку удаляют. Теперь проверяют, записалась ли карта в EEPROM. Для этого снова необходимо поднести эту же карту к считывателю. Считыватель издаст короткий звуковой сигнал, микроконтроллер DD1 обработает и сверит полученный код с ранее записанными в EEPROM. В случае успеха - карта с таким кодом есть в памяти - контроллер перейдёт в режим "Доступ открыт": светодиод HL2 выключен, светодиоды HL1, HL3 и звуковой излучатель HA1 включены, контакты реле К1 разомкнуты (электромагнитый замок обесточен), индикация считывателя изменится с красной на зелёную (рис. 9). Длительность режима "Доступ открыт" - 3 с и может быть подкорректирована программно. Аналогично добавляют в память устройства необходимое количество карточек. Программой предусмотрена невозможность добавления двух одинаковых карт. Удалить ненужные карты из памяти в предлагаемой версии устройства можно только с помощью программатора, стерев EEPROM. Если к считывателю поднести карту, не прописанную в памяти микроконтроллера DD1, Mellon-1 останется в режиме "Доступ закрыт" (см. рис. 8). Устройство рассчитано на круглосуточный режим работы.
Рис. 9. Считыватель Smartec ST-PR160EM
Программа и файл прошивки микроконтроллера находятся здесь.
Автор: В. Лазарев, г. Вязьма Смоленской обл.