ЭЛЕКТРОННЫЙ ЗАМОК НА КЛЮЧАХ--ТАБЛЕТКАХ" iButton (часть 2)
А. СИНЮТКИН, г. Калуга
Описываемый электронный замок предназначен для установки в квартирах, подъездах жилых домов. Очень хорош он для входных дверей офиса, куда обычно имеет доступ ограниченный круг лиц. Основные достоинства такого замка:
- быстрое и удобное открытие двери прикладыванием металлической "таблетки" - электронного ключа DS1990A (далее по тексту просто "ключа");
- увеличенная защищенность - отсутствие замочной скважины или клавиатуры, которую легко повредить, подбор ключа полностью исключен;
- очень простая процедура смены ключа или добавление нового - они записываются в память электронного замка и легко оттуда удаляются;
- при утере одного ключа нет необходимости покупать новый замок или менять вставку - можно просто стереть память замка и "обучить" замок заново (занести в память новые ключи);
- имеет большое число (до 510) пользователей.
Недостатком, которым страдают практически все подобные устройства, можно считать тот факт, что электронному замку и исполнительному механизму (соленоиду задвижки или электромотору) требуется резервированное питание, например, от аккумулятора, чтобы в случае пропадания питания от сети всегда можно было открыть дверь.
Для постоянной работы с замком используются только чашка считывающего устройства и кнопка открывания двери, которая монтируется внутри запираемого помещения. Нажатие на эту кнопку точно так же открывает дверь, как прикладывание ключа. Для программирования замка служат перемычка, звуковой сигнализатор, два светодиода - зеленый и красный, а также специальный мастер-ключ. Мастер-ключ необходим для доступа к программированию замка. Кроме своих специальных функций, он может работать как обыкновенный ключ, если его занести в память электронного замка.
На рис. 13 показана схема электронного замка. Он питается от источника напряжением 4,5...5,5 В (без учета силовой части). Максимальный ток потребления - 30 мА. Максимальное число различных ключей (не считая мастер-ключа), как отмечалось выше, - 510. К выходу замка должно быть подключено исполнительное устройство для управления соленоидом. Низкий уровень на выходе соответствует команде "запитать соленоид", а высокий - "отключить соленоид". Время удержания соленоида можно регулировать с шагом 1 с в пределах от 1 до 25 с. На схеме не показано исполнительное устройство замка, поскольку конкретная реализация зависит от параметров соленоида. В качестве силового ключа допустимо использовать как транзистор, так и электромагнитное реле.
Puc.13Основными узлами электронного замка являются микроконтроллер АТ89С2051 (DD2) и энергонезависимая Flash-память АТ24С16 (DD1) с последовательным интерфейсом I2C производства фирмы Atmel. Цепь R1C1 служит для формирования сигнала "сброс" в момент включения устройства, а диод VD1 нужен для быстрой разрядки конденсатора С1 при пропадании питания. Цепь VD2VD3R8 выполняет функцию защиты порта Р1.0 от помех (например, чтобы замок не испортили электрошокером). Резистор R7 служит стандартной нагрузкой для шины данных Button, a R2 и R3 - для интерфейса I2C.
Когда пользователь прикладывает ключ ("таблетку" iButton) к считывающей чашке (разъем Х2), микроконтроллер считывает его код и пытается найти этот код в своей памяти. Если он имеется, микроконтроллер на заданное время (по умолчанию 1 с) выставляет на выводе порта Р3.5 низкий логический уровень, что соответствует включению соленоида замка и отпиранию двери. Если код прикладываемого ключа отсутствует в памяти, то дверь остается закрытой.
Память замка является энергонезависимой. Это значит, что короткие пропадания напряжения замку не страшны - коды ключей все равно останутся в памяти. Кроме кодов отпирающих ключей, в памяти отдельно хранятся код мастер-ключа, с помощью которого можно войти в режим программирования, и дополнительные параметры - флажок наличия мастер-ключа, время включения соленоида и число находящихся в памяти ключей.
Таблица 1
Адрес памяти (hex)
Данные
0000h
4 байта ключа 0
4 байта ключа 1
4 байта ключа 2
4 байта ключа 3
0010h
4 байта ключа 4
07F0h
4 байта ключа 508
4 байта ключа 509
Дополнительные параметры (8 байт)
Таблица 2
Адрес памяти (hex)
Данные
07F8h
Код мастер-ключа (4 байта)
07FCh
Флажок наличия в памяти мастер-ключа (1 байт)
07FDh
Время удержания соленоида в секундах (1 байт)
07FEh
Число ключей в памяти, не считая мастер-ключа (2 байта)
В табл. 1 показана общая организация памяти замка, а в табл. 2 - размещение дополнительных параметров. Как видно из таблиц, на каждый ключ отводится 4 байта, несмотря на то что серийный номер DS1990A содержит уникальный 48-битный код (6 байт) - 2 старших байта кода не используются. Это сделано в целях экономии памяти, что позволило запомнить 510 ключей вместо 340 без какого-либо заметного ухудшения секретности.
В рабочем состоянии светодиод HL1 красного цвета часто мигает (50 мс включен, 50 мс выключен). Если установить перемычку Х1, он начинает мигать медленно (500 мс включен, 500 мс выключен). Это индицирует вход в специальный режим, имеющий несколько возможностей.
1. Если приложить любой ключ к считывающей чашке и удерживать, то он станет мастер-ключом, с помощью которого можно войти в режим программирования ключей. При этом по адресу 07F8h запишется код мастер-ключа, а флажок о его наличии в ячейке 07FCh будет равным 01h (мастер-ключ в памяти присутствует).
2. Если удерживать ключ более 30 с, то произойдет полная очистка памяти. При этом код каждого ключа станет равным FFFFFFFFh, код мастер-ключа - тоже FFFFFFFFh, а флажок наличия мастер-ключа будет равным 00h (т. е. мастер-ключ в памяти отсутствует). Время удержания соленоида в секундах станет равным 01h, а число ключей в памяти - равным 0000h.
3. Если периодически коротко нажимать на кнопку открывания двери SB1, то каждое нажатие будет увеличивать время удержания соленоида на 1 с. Иными словами, содержимое ячейки памяти 07FDh будет увеличиваться на единицу до достижения значения 25 с, после чего оно снова станет равно 1 с, и т. д. Каждое нажатие на кнопку открывания двери при этом индицируется коротким звуковым сигналом.
Теперь рассмотрим программирование ключей. Если в рабочем режиме (когда перемычка Х1 не установлена) нажать на кнопку SB1 и одновременно приложить к считывающей чашке мастер-ключ, то произойдет вход в режим программирования ключей. При этом светодиод HL1 не горит. Если же в этом режиме повторно нажать на кнопку открывания двери и считать ключ, которого нет в памяти ключей, открывающих дверь (это может быть и мастер-ключ!), то прозвучит короткий звуковой сигнал, мигнет светодиод HL1 и приложенный ключ будет занесен в память, а число ключей в ячейке 07FEh увеличится на 1. В случае, если такой ключ уже есть в памяти, он оттуда удаляется. При этом также прозвучит короткий звуковой сигнал, но светодиод HL1 не вспыхнет. Число ключей в ячейке 07FEh уменьшится на 1, а данные о всех ключах, находящихся в памяти после удаленного, сдвинутся на 4 байта в сторону младших адресов (так происходит удаление кода ключа из памяти).
Таким образом можно занести в память замка 510 ключей, пока она вся не заполнится. Выйти из режима программирования ключей можно, если приложить ключ, но не удерживать кнопку открывания двери - светодиод HL1 снова начнет часто мигать, сигнализируя о входе в рабочий режим. При этом приложенный ключ точно так же будет записан в память (если его там нет) или в противном случае удален из нее.
Важно, чтобы провода к кнопке SB1 были как можно короче. Если кнопку надо вынести на большое расстояние или если работа замка ожидается в условиях сильных электромагнитных помех, необходима защита порта Р3.2 (рис. 14). Подключение чашки считывающего устройства лучше всего выполнить витой парой проводов или, в худшем случае, простым телефонным кабелем. Перемычку Х1 лучше установить в непосредственной близости от микроконтроллера (например, на печатной плате).
Puc.14Микроконтроллер DD2 подойдет любой, с системой команд MCS51, даже с внешней памятью программ типа Intel 8031. Память DD1 может быть подобрана из аналогов, производимых другими фирмами (24С16В - от Microchip, Х24С16 - от Xicor), однако надо обратить внимание на вывод 7 микросхемы - у некоторых производителей назначение этого вывода может отличаться от Write Protect (защита от записи). Кварцевый резонатор ZQ1 может быть на любую частоту в диапазоне 10... 12 МГц - такое изменение не сказывается на работе замка. Применение резонатора со значительным отклонением частоты (например, 6 МГц или 24 МГц) может потребовать коррекцию констант или кода программы. Выбор звукового сигнализатора НА1 не критичен, лишь бы он генерировал непрерывный звук при подаче на него постоянного напряжения. Стабилитрон VD3 можно заменить на КС156А.
"Правильно собранное устройство в наладке не нуждается и начинает работать сразу при включении питания" - это верно и для нашего замка. Однако на практике иногда получается с точностью до наоборот. Поэтому, если замок все-таки не заработал, следует обратить внимание на следующие моменты.
Самая ненадежная часть устройства - это кварцевый резонатор. Бывает, что его качество оставляет желать лучшего, и внутренний тактовый генератор микроконтроллера DD2 не запускается. Это можно проконтролировать осциллографом на выводе XTAL2 (выход генератора). На нем должен присутствовать сигнал размахом около 1 В с частотой кварцевого резонатора. Если у вас нет другого кварцевого резонатора на замену, можно попробовать подключить между XTAL1 и общим проводом, а также между XTAL2 и общим проводом по конденсатору емкостью около 30 пф каждый.
Проверьте, как работает узел сброса C1R1VD1. При включении питания на выводе RST микроконтроллера DD2 должен формироваться импульс амплитудой не менее 0,7 от напряжения питания. Иногда амплитуда этого импульса недостаточна, если питающее напряжение нарастает слишком плавно. В этом случае можно увеличить постоянную времени цепи C1R1 в 2...4 раза. Из-за неисправности диода VD1 конденсатор С1 может разряжаться слишком долго, это также вызывает сбой.
Если замок подает признаки жизни (светодиод HL1 часто мигает, на считывающей чашке формируются импульсы опроса), но ключи не заносятся в память, проверьте работу микросхемы DD1 - формирование сигналов интерфейса I2C (выводы 18 и 19 DD2 или выводы 6 и 5 DD1).
Примечание редакции. Исходный код и прошивку для микроконтроллера можно получить на нашем ftp-сервере по адресу:
ftp://212.188.13.179/pub/2001/03/ibutton.
Радио 3/2001, с.30-31.