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

      Итак, с чего начать? Разработку любой системы начинают с составления списка требований, которым она должна соответствовать Для описываемой в статье системы список может выглядеть следующим образом. Система должна:
1. Контролировать доступ в помещение через одну дверь.
2. Обеспечивать уникальную идентификацию каждого пользователя.
3. Поддерживать журнал проходов с записью времени прохода и идентификатора пользователя.
4. Обеспечивать работу с тремя категориями пользователей:
— администратором (имеет право доступа в помещение и право конфигурирования системы);
— пользователями (имеют право доступа в помещение);
— временными пользователями (имеют право доступа в помещение до определенной даты).

      Определим, какие компоненты должна содержать система. Для этого рассмотрим перечисленные выше требования. Из п. 1 следует, что понадобятся одна линия ввода/вывода для управления механизмом открывания/закрывания двери и одно устройство для ввода идентификатора.
      Выбор технологии идентификации пользователей (п. 2) значительно влияет на такие характеристики системы, как стойкость (не допускать возможности доступа к объекту сторонних лиц путем подбора электронного ключа/кода), удобство использования (время, которое будут тратить пользователи на процесс идентификации), стоимость самой системы и дальнейшей ее эксплуатации. В качестве примеров возможных решений тут могут быть ввод пароля через клавиатуру, использование карточек с магнитной полосой и электронных ключей iButton фирмы Dallas Semiconductor [1,2].

      Ввод пароля через клавиатуру — наиболее прост и дешев в реализации, хотя не очень удобен и стоек, так как пользователи могут забыть пароль либо его может подсмотреть кто-то другой. К тому же при частом доступе в помещение ввод кодовой комбинации отнимает довольно много времени.
      Пластиковые карточки более удобны в эксплуатации, и такую систему труднее «взломать», однако для ее реализации требуются дополнительные устройства считывания информации с карточки. а также специальная аппаратура записи информации на нее, которая будет использоваться при добавлении нового пользователя. Это значительно удорожает конечную систему.

      Рассмотрим последний вариант. Ключ iButton представляет собой интегральную микросхему, помещенную в металлический корпус-таблетку MicroCan диаметром 18 и высотой 6 мм. Номенклатура изделий, выпускаемых в таком исполнении, довольно обширна: часы реального времени, температурные датчики, энергонезависимая память и многое другое. Стоимость iButton невысока (около 2 долл. США), и реализация считывающего устройства также довольно проста — по сути дела, шина данных подключается напрямую к одной линии ввода/вывода порта микроконтроллера. При этом необходимо лишь программно реализовать 1-Wire протокол. Удобство использования подобной системы также очевидно — для того чтобы произошло считывание кода, пользователю достаточно прикоснуться «таблеткой» к контактной площадке. Для описываемой системы была выбрана модификация DS1990, которая не выполняет никаких других функций, кроме идентификации, т. е. чип содержит только уникальный код, который можно считать, послав устройству специальную команду.

      Вернемся к требованиям по функциональности. Из п. 3 следует, что понадобится вести учет времени и записывать информацию о доступе пользователей к объекту охраны. Естественно, нужно предусмотреть возможные перебои с электропитанием, поэтому механизм ведения времени и журнала должен быть устойчивым к проблемам такого рода. Поскольку в качестве идентификатора пользователей выбран DS1990 и в любом случае придется программно реализовать 1-Wire протокол, имеет смысл использовать в качестве часов реального времени другую модификацию iButton — DS1994. Этот чип содержит встроенную литиевую батарею питания, обеспечивающую гарантированный ход часов в течение 10 лет.

      Для хранения журнала проходов выбрана серия Flash-памяти фирмы Atmel АТ45 [3]. Чтение/запись данных в память этого типа осуществляется по последовательному протоколу SPI, общее число задействованных линий ввода/вывода равно 7. Из доступных микросхем этой серии выбрана AT45D041 с объемом памяти 4 Мбит.
      Для управления настройками системы необходима клавиатура. В данном случае достаточно матрицы кнопок 3×4 с цифрами 0…9 и символами «*» и «#». Такая клавиатура потребует еще 3+4=7 линий ввода/вывода микроконтроллера.

      Последнее, что необходимо иметь в системе, — это небольшой дисплей для просмотра журнала проходов и конфигурирования системы. Номенклатура выпускаемых в настоящее время недорогих дисплеев довольно обширна, однако в нашем случае не требуется вывод графики, поэтому вполне достаточно ЖКИ для вывода буквенно-цифровой информации. Наиболее популярны сегодня ЖКИ на базе контроллера HITACHI HD44780 [4]. Их отличает простота подключения и невысокая стоимость. Данные передаются по восьми- или четырехбитному интерфейсу (в зависимости от используемого режима), плюс необходимо еще три линии ввода/вывода для передачи управляющих сигналов. С целью экономии линий ввода/вывода выбран четырехбитный интерфейс, следовательно, общее число линий ввода/вывода для управления ЖКИ также равно 7.
Схема Проектирование автоматизированной системы контроля доступа 1
      На этом выбор периферии завершен. Теперь предстоит выбрать микроконтроллер, способный эффективно управлять всеми названными выше устройствами. Для начала подсчитаем число необходимых линий ввода/вывода, которое будет задействовано в системе (табл. 1). Полученный результат не окончательный, так как в дальнейшем (в процессе эксплуатации) могут понадобиться дополнительные линии ввода/вывода, например, для подключения светодиодов, динамической головки громкоговорителя и т. д. Поэтому целесообразно выбрать микроконтроллер, у которого число линий ввода/вывода больше указанного в табл. 1.

      С точки зрения программирования очень привлекательны микроконтроллеры, в которых реализована так называемая ISP-технология (In-System Programming — внутрисхемное программирование). Для того чтобы загрузить в микроконтроллер новый программный код, его не нужно вынимать из платы: программирование производится внутрисхемно через специальные выводы. Более того, для некоторых модификаций не нужен даже программатор — «прошивка» осуществляется через параллельный порт компьютера. Естественно, что наиболее приемлемое решение — использование в системе именно такого микроконтроллера, который не требует дополнительных средств для прошивки.

      Для реализации поставленной задачи выбран микроконтроллер AT89S8252, полностью совместимый по коду и расположению выводов с микроконтроллерами семейства 8051. Он имеет 8 Кбайт внутрисхемно программируемой флэш-памяти программ с ресурсом 1000 циклов перезаписи, 2 Кбайт встроенной EEPROM (электрически стираемой программируемой постоянной памяти), 256 байт ОЗУ, 32 линии ввода/вывода, три таймера, сторожевой таймер, аппаратно поддерживает SPI интерфейс. Тактовая частота — 0…24 МГц (один машинный цикл выполняется за 12 тактов, следовательно, максимальная производительность — два миллиона операций в секунду).

      Выбор именно этого микроконтроллера обоснован следующим. Микроконтроллеры серии 8051 имеют обширный набор инструкций, что облегчает их программирование на низком уровне (например, поддерживаются операции над отдельными битами [5]). ISP-технология ускоряет отладку и облегчает разработку, аппаратная поддержка SPI интерфейса позволяет подключить выбранную флэш-память серии АТ45 без дополнительного программирования данного протокола. 2 Кбайт встроенной EEPROM можно использовать для хранения информации, сохранность которой должна быть обеспечена независимо от наличия внешнего питания. 32-х линий ввода/вывода вполне достаточно для реализации описываемой системы. Наличие таймеров позволяет гибко реализовать 1 -Wire протокол, так как он требует точности соблюдения временных задержек.

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

      Прежде чем перейти к программной реализации, обратимся еще раз к архитектуре с точки зрения ее эффективности при выполнении непосредственных функций системы. Проектируемая система будет поддерживать два способа ввода информации: с помощью клавиатуры (команды по настройке системы, просмотр журнала проходов) и через контактную площадку 1 -Wire интерфейса. Так как основное назначение системы — контроль доступа, время опроса контактной площадки 1-Wire должно превосходить время, отводимое на опрос клавиатуры.
      Рассматривая спецификацию 1-Wire протокола, можно заметить, что возможны две принципиально разные ситуации: первая, когда на линии находится лишь одно устройство, и вторая, когда их больше. Для того чтобы определить число устройств на линии и их идентификаторы, существует специальный механизм поиска, оговоренный в спецификации протокола 1-Wire. Заключается он в последовательном отсеивании устройств, находящихся на линии, и побитном сканировании адресного пространства (пространства идентификаторов iButton). Причем эту процедуру необходимо выполнять заново после каждого цикла связи с подключенными устройствами (так как их состав может измениться).

      Как уже говорилось, в нашей системе запланирована одна линия 1-Wire, которая будет использована как для подключения часов реального времени, так и для идентификационных ключей, причем часы реального времени, являющиеся частью системы, будут подключены постоянно. Это означает, что мы имеем ситуацию, когда на линии может быть более одного устройства. Принимая во внимание вышесказанное и наличие свободных линий портов ввода/вывода, разумно выделить в системе две линии для протокола 1 -Wire: к одной из них постоянно подключить часы реального времени, а вторую использовать только для предъявления идентификаторов пользователей. Такая конфигурация гарантирует, что на каждой линии в любой момент будет находиться лишь одно устройство, что значительно упрощает реализацию системы, уменьшает время отклика и экономит место в области памяти программ.

      Часы реального времени DS1994 имеют пятибайтный счетчик, который увеличивает свое содержимое 256 раз в секунду. Когда он переполняется, отсчет продолжается с нуля. Разрядности 5 байт хватает на 136 лет работы до переполнения счетчика. В связи с тем, что для пользователя нужно выводить время в удобном для него формате, а также необходимо обеспечить возможность настройки часов, встроенная система должна поддерживать перевод даты и времени из внутреннего формата в текстовый и обратно. В качестве точки отсчета выбрана дата 01.01.2000 00:00:00, что гарантирует работу часов и ведения журнала приблизительно до 2136 г.

      И еще один момент, на который следует обратить внимание. Мы условились, что журнал проходов будет храниться во внешней флэш-памяти, однако нужно еще определить место для хранения списка прав доступа. При описании микроконтроллера упоминалось о встроенной EEPROM объемом 2 Кбайт. Она идеально подходит для данной цели, так как список прав доступа более ценен, чем журнал проходов, и если, например, последний можно извлечь (физически) из системы путем выемки соответствующего чипа из платы, то список прав доступа можно удалить только выемкой микроконтроллера, без которого работа системы невозможна. В описываемой системе указанного объема памяти хватило на размещение 168 учетных записей, т. е. максимальное число пользователей —168.
Схема Проектирование автоматизированной системы контроля доступа 3
      Журнал проходов реализован в виде кольцевого списка, и при его переполнении удаляются самые старые записи. Размер одной записи журнала равен 12 байт (4 байта для хранения времени прохода и 8 байт на идентификатор). Из этого следует, что памяти журнала хватит для протоколирования примерно 45 000 проходов до того момента, как произойдет первое переполнение журнала.
      В процессе разработки в систему был добавлен еще один компонент — герконовый датчик на двери. Он необходим для того, чтобы система могла определить, открыта в настоящее время дверь или закрыта, а также для своевременного отключения питания электромагнита. Реализован следующий алгоритм открывания двери: на катушку соленоида подается напряжение, и система ждет, пока дверь не будет открыта либо пока не истечет выдержка времени, равная 5 с, после чего подача напряжения прекращается.

      Принципиальная схема разработанного устройства изображена на рисунке. Как видно, помимо микроконтроллера DD1, оно содержит микросхему Flash-памяти DS1, 12-кнопочную клавиатуру SB1—SВ12 и ЖКИ HG1. Тактовую частоту микроконтроллера задает кварцевый резонатор ZQ1 на 24 МГц. Порт Р0 используется для ввода информации от (Button часов (подключают к розетке Х1) и идентификатора (подключают к Х2), управления реле (через транзисторный ключ), подающим питание на электромагнит замка, светодиодом HL1, сигнализирующим об открывании двери, и регистрации состояния установленного на ней геркона. Обмен информацией с микросхемой Flash-памяти DS1 осуществляется через порт Р1. Клавиатуру обслуживает порт Р2, индикатор HG1 — порт РЗ. Питается устройство стабилизированным напряжением 5 В. Для питания реле, управляющего работой электромагнита, необходим источник напряжения 16…20 В.

      Устройство собирают на плате подходящих размеров. Для подключения микроконтроллера DD1 и микросхемы памяти DS1 желательно использовать соответствующие розетки. Смонтированную плату помещают в пластмассовый или металлический корпус, на переднюю панель выводят клавиатуру и дисплей ЖКИ. Устройство устанавливают внутри охраняемого помещения.
      После включения устройства на ЖКИ выводится список пунктов меню, приведенный в табл. 2. Так как у индикатора всего две строки, для горизонтальной «прокрутки» используют клавиши «#» и «*». Для выполнения любой из указанных команд требуются привилегии администратора, и после выбора пункта меню нажатием соответствующей клавиши необходимо предъявить ключ с администраторскими правами, в противном случае запрошенная команда игнорируется.
      В процессе работы над устройством возникали проблемы на различных стадиях разработки. Хотелось бы отметить следующие моменты.
Схема Проектирование автоматизированной системы контроля доступа 2
      Аппаратная часть. Любой микропроцессор имеет предельно допустимые значения входного и выходного тока портов ввода/вывода. Например, если необходимо использовать в системе светодиод, то большинство микроконтроллеров не сможет выдать необходимый ток на порт ввода/вывода, если активным состоянием будет лог. 1. В подобном случае необходимо сделать активным состояние лог. 0, подключив анод светодиода к шине питания. Не следует также забывать об ограничении тока включением последовательно с нагрузкой резистора сопротивлением примерно 2 кОм. Если все же необходимо использовать лог. 1 как активное состояние, а нагрузка слишком велика, то для включения нагрузки следует применить транзисторный ключ.

      При реализации шины 1-Wire необходимо «подтягивать» шину данных через резистор к напряжению питания. Это нужно для того, чтобы во время перехода из низкого состояния в высокое линия быстро достигала порога переключения в лог. 1. Номинал резистора должен быть в пределах 4,7…5,1 кОм. Если длина проводов достаточно велика (несколько метров), сопротивление резистора можно уменьшить.
      Не следует забывать о максимальном токе, который может потребляться всеми устройствами, подключенными к портам микроконтроллера. Необходимо рассмотреть случай, когда все они находятся в активном состоянии, и подсчитать, сможет ли микроконтроллер обеспечить такую выходную мощность. Если она превышает предельно допустимую, устройства просто не включатся в нужный момент.

      Программная часть. Многое в процессе разработки зависит от того, какой компилятор применен, насколько хорошо он оптимизирует код и размещает его в памяти, позволяет ли он отлаживать программы на собственном эмуляторе, а также отслеживать время выполнения программы и т. д.
      Если в программе используются строковые константы, то ввиду ограниченного объема оперативной памяти необходимо применять специальные директивы, позволяющие указать компилятору на то, что они должны быть расположены в области памяти программ. Например, для компилятора Keil uVision это выглядит так: ‘const char code sz[6]=»Hello»‘, где модификатор «code» указывает компилятору на то, что строку следует разместить в памяти программ.

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

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

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

Прилагаемые файлы: dostup.zip

ЛИТЕРАТУРА
1. Техническая документация фирмы Dallas Semiconductor. — www.dalseml.com
2. Синюткин А. Электронный замок на ключах-«таблетках» (Button, — Радио, 2001, На 2, с. 31— 33; № 3, с. 30, 31.
3. Техническая   документация    фирмы Atmel AT45D041. — www.atmel.com
4. Техническая документация фирмы Hitachi   «HD44780U   (LCD-11)   (Dot   Matrix Liquid   Crystal    Display   Controller/Driver) ADE-207-272(Z) ‘99.9 Rev. 0.0».
5. Предке М. Руководство по микроконтроллерам. Том 1. — М.: Постмаркет, 2001.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *