Всем привет!
Мы уже писали о том, что делаем Wiren Board — компактный индустриальный компьютер с Wi-Fi, GPRS, GPS, NFC и Ethernet под управлением Linux. На его основе можно быстро делать готовые устройства, задействовав нужные модули.
Чтобы показать его возможности, мы решили сделать законченное устройство. Сегодняшняя статья — про систему контроля доступа на Wiren Board.
Идея устройства
В общежитиях нашей альма-матер — МФТИ — есть объекты инфраструктуры общественного пользования — прачечные и спортивные комнаты. На протяжении многих лет доступ к ним осуществлялся путем получения ключа у охранника с записью в журнале.
Конечно же, это весьма неудобно. Хорошим решением было бы сделать пропускную систему по карточкам.
Не так давно мы узнали, что студенты нашего института решили сделать пропускную систему в общежитии — чтобы вход в прачечную и спортивную комнаты стал возможным только по персональной карте.
Мы решили помочь родному институту.
Вместо того, чтобы раздавать всем студентам карточки и проводить их регистрацию, мы решили использовать уже имеющиеся Социальные карты студента. На них уже записаны ФИО владельца и некоторая другая информация (статья об исследовании карточек), поэтому контроллер на двери просто сверяет ФИО с карточки со списком живущих в общежитии, не требуя никакой предварительной регистрации.
Реализация
Как обычно строятся такие системы? Простые автономные СКУД включают в себя:
- Считыватель карт
- Контроллер замка (может быть объединен с считывателем)
- Электромагнитный замок
- Кнопка выхода (с обратной стороны)
Программируются обычно с помощью мастер-карты.
В сетевых решениях ставят дополнительно сервер СКУД, преобразователи интерфейсов и прокладывается линия RS-485, по которой сервер общается с контроллерами.
Естественно, можно было использовать готовые системы, которых много на рынке, но у них обнаружились различные
Нам не потребуется прокладка отдельной линии RS-485 до сервера, нужно только подключение к СКС по Ethernet, а это не проблема в общежитии. И сам сервер в виде отдельного компьютера (да ещё и с Windows) в серверной не нужен, достаточно поднять виртуальный сервер. Питание на устройство подаётся по Ethernet (PoE) — не нужно задумываться, где подключить блок питания и как протянуть от него провода до двери.
Конечно, на рынке есть неплохие решения в виде сетевых контроллеров СКУД, но они поставляются с закрытым ПО, и реализовать на них поддержку социальных карт будет затруднительно. Стандартная функциональность считывания сектора с карточки в нашем случае не подходит, так как контроллер должен извлечь данные из нужных секторов, расшифровать её, а по полученной информации построить запрос к базе для регистрации карточки.
Также СКУД необходимо интегрировать с существующими и будущими самописными системами: сайтом, системой записи в прачечную и т.д. Закрытое сложное ПО делает это весьма сложной задачей. Ещё оно может быть платным, с подпиской или лицензией — лишние проблемы.
Железо
Что мы будем задействовать в Wiren Board:
— NFC — для чтения Социальных карт (карты типа Mifare Classic)
— Ethernet — для связи с БД
— транзисторные выходы для управления магнитным замком и светодиодами индикации
— GPIO для подключения кнопки “Выход”
— Power over Ethernet — чтобы уменьшить число подводимых кабелей и не заботиться о розетке
Схема подключения изображена на рисунке.
Зеленый и красный светодиоды выполняют функции индикации. Кнопка выхода по требованиям безопасности должна быть трёхконтактной и обеспечивать механическое размыкание цепи электромагнитного замка. При нажатии на кнопку пара контактов размыкается и средний контакт замыкается на третий, идёт сигнал на плату. Управляющий транзистор закрывается, разрывая цепь питания замка на 3-4 секунды.
Электромагнитный замок управляется подачей 12В через транзисторный выход. Для питания использовались Passive PoE-инжекторы от Ubiquiti.
Был подобран подходящий по размерам корпус, и устройства заняли свои законные места у дверей.
Софт
Программная часть и логика работы системы очень простые.
Используются социальные карты, которые есть у большинства студентов. Теоретически, можно пользоваться любой ISO 14443-совместимой меткой, например, банковской картой, брелоком Mifare, карточкой метро или даже смартфоном с NFC.
Вся информация хранится в БД MySQL на удалённом сервере. Там хранится список пользователей (список студентов факультета), список карточек каждого пользователя, логи и т.д. Для каждой карточки хранится заводской номер, её тип и дополнительная информация, зависящая от типа карточки: ФИО, номер и срок действия социальной карты; номер одноразовой карты метро и т.д.
При поднесении карты, контроллер считывает её заводской номер и отправляет запрос в БД. Если номер карточки нашёлся в соответствующей таблице, контроллер открывает дверь и добавляет запись в журнал. Если номер не нашёлся, то контроллер пытается идентифицировать карту
и считать ФИО и прочую информацию с социальной карточки и номер с карточки метро. Если пользователь с нужным именем и датой рождения есть в таблице пользователей, карточка автоматически регистрируется в системе.
Для упрощения системы контроллер общается напрямую с БД MySQL посредством вызова хранимых процедур. Конечно же прямого доступа к таблицам у контроллера нет.
Клиентская часть, запущенная на контроллере, написана на Python и занимает несколько десятков строк.
Заключение
Получившийся контроллер понравился даже нам, поэтому мы решили выпустить его в продажу как готовое устройство. В качестве опций доступны все возможности, которые предоставляет Wiren Board, например, GPRS для резервирования канала связи, или подключение к линии RS-485. К устройству также можно подключить внешние считыватели, дополнительные замки и кнопки.
Подробное описание самого компьютера Wiren Board можно найти на портале документации, а в магазине можно купить образец. Также ждём ваших замечаний и предложений на нашем форуме и в комментариях.