20 октября 2021

Не лает, не кусает, а в дом не пускает

Автономный контроллер доступа


Маленькая предыстория

На общей двери в тамбур на 4 квартиры умер очередной замок. Что подстегнуло меня реализовать мысль, которую я думал уже долгое время.

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

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

Эти мысли были медленные и вялотекущие, пока замок не умер.

В результате был куплен недорогой запирающий механизм

И компактная читалка для ключей стандарта EmMarine 125 кГц.


Читалка имеет интерфейс Wiegand 26/34, осталось только сваять на коленке контроллер для этой всей кухни.

Пара вечеров - и получилось вот такое изделие.


Которое уместилось в небольшую пластиковую коробку


Туда же встала плата от блока питания. Это БП от какого то телевизора, там выходное 12 вольт до 2 А.

Краткие характеристики :

  • Эл. питание 9-15 вольт постоянного тока, ток потребления контроллера - до 40 мА.
  • Управление электромагнитным / электромеханическим замком напряжением 12 В с током коммутации до 2А, транзисторное управление, защита от самоиндукции(диод), защита от короткого замыкания - плавкий предохранитель. 
  • Выбор типа замка - нормально открытый / нормально закрытый.
  • Поддержка одного внешнего считывателя. Интерфейс связи со считывателем: Wiegand 26/34. 
  • Кнопка выхода.
  • Общее количество ключей - 100.
  • До 5 мастер-ключей.
  • Добавление/удаление пользовательских ключей при помощи мастер-ключа.
  • Программируемое время открытия замка 1..32 сек.
  • Подключение внешнего сигнального устройства (светодиод, активный буззер). Напряжение для сигнального устройства - 5 В, ток до 20 мА
  • Светодиодная индикация работы.
  • Контроль и управление по интерфейсу UART (9600,8,N,1).

Схема


Схема простая, но несколько развесистая. Посему вот она же в PDF.

Контроллер построен на базе широко распространенного МК ATMEGA8A.

Считыватель ключей формата EmMarine с интерфейсом Wiegand26/34 подключается к соответствующим клеммам. По сигнальным линиям стоят подтягивающие к 5 вольтам резисторы, а так же супрессоры на 6 вольт.
По линии питания 12 вольт так же стоит супрессор на соответствующее напряжение.

Сигнальное устройство (светодиод или активный буззер) управляются транзистором Q2. В активном состоянии на сигнальное устройство попадает напряжение 5 вольт с ограничением тока резистором R2. По этим линиям так же стоят супрессоры на напряжение 6 вольт.

Внешняя кнопка открытия замыкает линию питания 12 вольт на нагрузочный резистор R5 номиналом 750 Ом. При замыкании кнопки в цепи течет ток 12/750 = 16 мА.
Линия так же защищена супрессором.

Тип исполнительного механизма замка - нормально открытый или нормально закрытый - определяются джампером JP3. 
Если замок без подачи питания открыт - джампер должен быть разомкнут.
Если замок без подачи питания закрыт - джампер должен быть замкнут.

Управление замком осуществляется при помощи транзистора Q1. Параллельно замку включен диод Шоттки для подавления токов самоиндукции. Применена транзисторно-диодная сборка 6N303 в корпусе SO-8, имеющая в составе независимый полевой N-канальный транзистор и диод Шоттки. Диод и транзистор рассчитаны на напряжение до 30 вольт и ток до 6 А.

Светодиоды сигнализируют о различных режимах работы контроллера, LED1 - зеленого цвета,  LED2 - желтого или красного.

Кнопка сброса предназначена для полного сброса контроллера со стиранием всех ключей или для входа в режим чтения мастер-ключей. 

Последовательный порт. Контроллер передает свое текущее состояние, а так же может управляться по последовательному порту. 
Для электрической развязки цепей последовательного порта применены оптопары OK1,OK2.

Электропитание

Питание на замок подается через плавкий предохранитель с номинальным током срабатывания, не превышающим максимальный ток БП и максимальный ток транзистора Q1. Обычно электромеханические замки с питанием 12 вольт потребляют во время срабатывания ток до 1 А. Магнитные - и того меньше. Соответственно, ток предохранителя выбран 2 Ампера.

Питание на остальную часть схемы подается через фильтрующий дроссель. после дросселя питание подается на клеммы для подключения кнопки открытия и считывателя ключей. 

Питание цифровой части схемы - 5 вольт - формируется при помощи линейного стабилизатора 7805.

В принципе, можно без проблем перевести схему и на 24-вольтовое питание, но тогда нужно поменять супрессоры по линиям питания считывателя и кнопки. И помнить, что считыватели на 24 вольта более редки, нежели на 12 вольт. (Или придется ставить считывателю отдельный стабилизатор типа 7812).

Плата.

Контроллер собран на односторонней печатной плате размерами 78 х 50мм.


Герберы для повторения платы - вот тут.

Прошивка и фьюзы.

Прошивка тут.

Фьюзы: LOW : 0x3F  ; HIGH: 0xD1


Инструкция по работе с контроллером.

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

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

Если в памяти контроллера нет ни одного сохраненного мастер-ключа (например, при первом включении или полном сбросе контроллера) - контроллер стирает из энергонезависимой памяти все ключи и переходит в режим чтения и сохранения мастер-ключей.

Так же, если в памяти контроллера сохранено менее 5 мастер-ключей и при подаче питания нажата кнопка сброса на плате контроллера, контроллер принудительно перейдет в режим чтения и сохранения мастер-ключей для возможности добавить еще один или несколько мастер-ключей.

Режим чтения и сохранения мастер-ключей.
В этом режиме раз в секунду на 0.1 сек включается желтый светодиод и подается питание на сигнальное устройство. В этом режиме контроллер будет находиться бесконечно долго.
Замок при этом находится в открытом состоянии.

Необходимо поднести к считывателю будущий мастер-ключ. При успешном чтении ключ сохраняется в энергонезависимой памяти контроллера, в течении 2 секунд будут гореть желтый и зеленый светодиоды, с периодичностью 400 мс (2.5 Гц) будет включаться сигнал, после чего контроллер перейдет обратно в режим чтения мастер-ключей или, если уже прочитано и сохранено 5 мастер-ключей - в режим ожидания

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

Чтение одного из сохраненных мастер-ключей завершает режим чтения мастер-ключей и контроллер переходит в режим ожидания

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

Режим ожидания.

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

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

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

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

Режим администрирования пользовательских ключей.

При входе в этот режим контроллер в течении 1.5 сек с частотой 8 Гц включает сигнал и желтый светодиод. В режиме администрирования горит только желтый светодиод. Если не выполняется никаких действий, то через 30 секунд контроллер вернется в режим ожидания, подав соответствующий сигнал (см. выше, переход в режим ожидания из режима сохранения мастер-ключей).

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

Если память контроллера полностью заполнена (100 ключей), новый ключ записан не будет, на 3 секунды включится сигнализация об ошибке (аналогично сигнализации о неизвестном ключе), контроллер вернется в режим ожидания.

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

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

Режим настройки длительности открытия замка.

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

После отображения текущего времени открытия контроллер ожидает ввод нового времени открытия. Новое время вводится нажатием кнопки открытия замка. Число нажатий на кнопку открытия определяет число секунд времени открытия. 
Сохранение нового времени производится поднесением к считывателю мастер-ключа.
При сохранении нового времени в память контроллера на время 1.5 сек включатся оба светодиода, с частотой 2.5 Гц будет включаться сигнал, после чего контроллер перейдет в режим ожидания.

Если после отображения текущего времени открытия поднести к считывателю мастер-ключ, не вводя новое время открытия - контроллер вернется в режим ожидания, подав соответствующий сигнал.
Аналогично контроллер вернется в режим ожидания, если в течении 30 секунд не выполнялось никаких действий.

Выбор типа замка.

Для замков, которые без подачи электропитания находятся в закрытом состоянии, необходимо установить джампер Lock polarity. Тогда контроллер будет подавать питание на замок только в момент открытия.
Если замок без подачи питания находится в открытом состоянии, джампер необходимо снять. При снятом джампере контроллер будет подавать питание на замок всё то время, пока замок должен быть закрыт.

Полный сброс контроллера.

Если в любом из режимов контроллера нажать и удерживать в течении 10 секунд кнопку сброса на плате контроллера, на 10 сек включатся оба светодиода и будет подано питание на сигнальное устройство.
По истечению этого 10-секундного интервала из памяти контроллера будут стерты все ключи, время открытия замка установится по умолчанию (4 сек), контроллер перейдет в режим чтения и сохранения мастер-ключей.

Работа с контроллером по последовательному порту.

Информация о всех происходящих событиях отправляется контроллером в последовательный порт.

Примеры уведомлений о событях:

KEY READ 1A2B3C4D
USER KEY # 0E
MASTER KEY # 01
UNKNOWN KEY
BUTTON PRESSED
MASTER READ MODE
MASTER KEY SAVED # 02
IDLE
LOCK IS OPEN
LOCK IS CLOSE
ERROR
MASTER MODE
CLEAR KEY # 2A
SAVE KEY # 13
SHOW OPEN TIME 04
WAIT NEW OPEN TIME
SAVE NEW OPEN TIME 0C

Так же, отправляя соответствующие команды по последовательному порту, можно управлять контроллером.

Команды:

HELP
?        - 
короткая справка по командам

ECHO ON
ECHO OFF 
- включение или выключение "эха" отправляемых символов (после подачи питания - "эхо" включено).

INFO - информация о версии прошивки контроллера

OPEN LOCK - открытие замка (аналогично нажатию на кнопку открытия)

GET OPEN TIME - запрос текущего времени открытия замка
Контроллер даст ответ:
CURRENT LOCK OPEN TIME, SEC: ХХ
Тут ХХ - 16-ричное значение времени открытия замка

SET OPEN TIME ХХ - установка нового времени открытия замка

GET KEY ХХ - запрос информации о ключе соответствующем слоте.
ХХ - 16-ричный номер слота (00..63)
Контроллер подтвердит номер слота и сообщит данные о сохраненном в этом слоте ключе:
SLOT ХХ
USER KEY 12345678
MASTER KEY ABCDEF01
NO KEY

SET KEY ХХ - стирание ключа в слоте ХХ
SET KEY ХХTNNNNNNNN - запись в слот ХХ ключа NNNNNNNN с типом Т
NNNNNNNN - 4 байта значения ключа в 16-ричном виде
Т - символ 'U' или 'M', обозначающий тип сохраняемого ключа. 
'U' - пользовательский ключ, 'M' - мастер-ключ.
При стирании или сохранении ключа контроллер подтвердит номер слота и результат выполнения операции:
SLOT ХХ
KEY SAVED
KEY CLEARED

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

3 комментария:

  1. Супер! Технично, симпатично и лаконично!

    ОтветитьУдалить
  2. Эталон оформления Статей. Есть всё, для успешного повторения! Очень. жаль, что нет потребности. Поздравляю автора с очередной успешной разработкой!

    ОтветитьУдалить
  3. Продуманное функциональное устройство. Статья читается приятно.

    ОтветитьУдалить