Электронный замок

 

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

Как говорится, главное правильно составить ТЗ, т.е.то, что мы хотим получить в результате.

  1. Создать систему распознавания ключей.
  2. Сравнивать ключ с базой, и при совпадении кода поднесенного ключа с одним из записанных в базе открывать замок.
  3. Снимать показания магнитного датчика,  позволяющие идентифицировать состояние двери, и если дверь открыта, закрывать замок.
  4. Использовать таймер, по истечению которого замок закрывается, в том случае, если мы передумали входить/выходить. Это предусмотрено для того, чтобы “враги” не попали в секретное логово, воспользовавшись нашей переменой настроения.
  5. Обеспечить открытие двери с помощью кнопки, размещенной внутри помещения.
  6. Запись нового ключа в базу после поднесения ключа-мастера и, естественно, запись самого мастера.
  7. Удаление ключа из базы (feature).
  8. Система индикации для пущей привлекательности.

Полдела сделано, осталось самое малое – реализовать задуманное аппаратно и программно.  Для этого необходимо:

  1. Электрический замок
  2. Считыватель прокси (em-Marin) карт "CP-Z" фирмы IronLogic
  3. Ключи или карточки для записи в базу
  4. Кнопка
  5. Блок питания 12 V
  6. Корпус (чтобы все было аккуратно и красиво)
  7. Электроника – микроконтроллер ATmega 8, «кроваткаХ28», стабилизатор КР1158ЕН5В, транзистор IRLU 024 N , 6 разъемов KLEM 2, 1 разъем WF 3 (COM-port), конденсатор, светодиоды и резисторы по вкусу.
Разводка платы показана на схеме 1.

 

 

Внутренности платы показаны на рисунке 1. 

Для решения поставленных задач все используемые устройства делятся на логические блоки,представленные на схеме 2.

 

Блок замка включает в себя непосредственно электрический замок, таймер TimeOpen , позволяющий задать максимальное время открытого состояния замка, магнитный датчик, индицирующий открытие и закрытие двери. Входом блока замка является команда открыть замок (Open), поступающая от блоков уключины и кнопки. Блок уключины состоит из считывающего устройства, базы данных, таймера TimeMaster , задающего максимальное время на поднесение нового ключа для записи в базу. Вход в блок осуществляется поднесением ключа или мастера. Блок кнопки состоит из кнопки, которая может принимать 2 состояния (нажата/не нажата).

Для считки бесконтактных карт применяется "Считыватель прокси (em-Marin) карт "CP-Z" фирмы IronLogic его особенность в том, что он эмулирует iButton (1-wire) если к нему поднести проксикарту.. это позволяет упростить программирование замка. однако следует учесть что в данной версии считывателя имеются свои подводные грабли.

  Принцип работы предельно прост. При поднесении ключа происходит считывание его кода и сравнение с базой. Если ключ найден в базе замок получает команду Open . Здесь необходимо учитывать особенность замка: открытие надо производить щелчками (открыть-закрыть-открыть). Это обеспечивает защиту от заклинивания замка. При поднесении мастера логика программы меняется. Его наличие никак не влияет на “настроение” замка. Он рассматривается как некий турецкий султан, готовый зарегистрировать (записать в EEPROM) очередную жену (ключ). Т.е. при поднесении ключа (если он ранее не был записан) его код записывается в EEPROM . Тут необходимо учитывать, что память микрухи нерезиновая, и, например, для ATmega 8 она составляет 512 байт, что позволяет записать максимум 255 ключей (если для хранения 1 ключа использовать 2 байта, как в нашем случае). В качестве мастера записывается самый первый поднесенный ключ. Нажатие кнопки также посылает замку команду Open . Система индикации делает наш проект более красочным и информативным. Если горит красный диод – проход блокирован,если зеленый – можно идти! При поднесении мастера горят оба светодиода.

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

Внешний вид всего устройства показан на рисунке 2. Все достаточно аккуратно и красиво.

 

 

Скачать исходники можно здесь   и конечно документация.

Разводка платы в P-CAdе прилагается.

Модернизированная версия замка позволяет использовать такие чудеса как дистанционное управление замком (с помощью ИК-приемника TSOP1736), дополнительная память для записи ключей, "пищалка" и все, на что хватит вашей фантазии. Для этих целей можно использовать микроконтроллер ATMEGA16, в моем случае в корпусе TQFP, следовательно для его внутрисхемного программирования необходим разъем (более подробно про разъемы можно почитать в статье “Разъемы для внутрисхемного программирования”). Программно нововведения еще не реализованы, но в скором времени все будет!

 

  Документация , программа и версия в P-CADe прилагается.

Acknowledgements

Выражаю свою искреннюю благодарность MayDay за оказание материально-идейной базы,  инженеру Сергею за помощь в установке устройств в дверь и офис-менеджеру Анастасу за периодическое подкармливание в процессе творческой деятельности!

Обсудить статью можно на форуме по AVR

Автор :   Olia