domvpavlino.ru

Самодельный замок с ключами ibutton. Универсальный электронный замок – иммобилайзер с ключами iButton. Схема и описание. Описание электронного замка

Вашему вниманию представлена схема электронного замка с ключом таблеткой iButton модели DS1990A (Touch Memory). Ключ представляет собой устройство, которое имеет в своей памяти уникальный серийный номер. Уникальность состоит в том, что серийный номер состоит из 48 бит и как следствие этому, количество возможных вариантов составляет 281474976710656.

Описание электронного замка

Замок собран на микроконтроллере фирмы Microchip PIC16F628A (627A, 648A). После подачи питания, микроконтроллер посылает импульс сброса длительностью 500 мкс и через 70 мкс проверяет ответ от DS1990A. Если ответа нет, то микроконтроллер ждёт еще примерно 80 мс и снова передаёт импульс сброса. По такому алгоритму проверяется подключение ключа к замку.

Если ответ есть, значит DS1990A подключен к замку. Затем посылается команда «читать ROM» (33h), после чего микроконтроллер переходит на приём и записывает в ОЗУ переданный таблеткой DS1990A номер, где сравнивает его с записанным номером в EEPROM. Если он совпадает с одним из них, то подается звуковой сигнал, и устанавливается высокий уровень на выводе RA1 в течение 1,5 секунд. Оптопара DA1 (АОТ122А) откроет VT1 (КТ972, BD677, BD679, BD681), который управляет электромагнитным на 12 вольт.

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

Для очистки всех номеров из EEPROM необходимо при выключенном питании нажать кнопку SA1, подать питание и удерживать кнопку в течение 5 секунд. После очищения памяти EEPROM замок подаст звуковой сигнал. Общее количество серийных номеров, которые можно записать в память не более 21.

Чтобы микроконтроллер не пострадал от статического разряда, в схеме применен стабилитрон VD1 (КС156А, 1N4733A, BZX55C5V1) на 5В. В данном замке можно использовать любой из микроконтроллеров PIC16F627A, PIC16F628A, PIC16F648A. Для микроконтроллера PIC12F629/PIC12F675 имеется своя прошивка. Запитать схему можно от .

При программировании , следует выставить следующие биты.

Общее описание

Идея применения ключей I-Button возникала у меня по мере увеличения весо-габаритных характеристик общей связки в кармане. Когда живешь в частном доме, хочется, чтобы все замки открывались одним ключом. К сожалению, такое пока трудно достижимо. Но начинать с чего-то же надо.

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

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

Основные характеристики замка на ключах I-Button :

  • автоматическое запирание двери механическим способом (захлопывание), что делает его независимым от наличия электропитания,
  • отпирание замка как снаружи, так и изнутри при помощи ключа Touch Memory (домофонная "таблетка"), для исключения открытия замка после банального перелезания через забор,
  • информирование об открытой двери при помощи прерывистого звукового сигнала,
  • сохранение в энергонезависимой памяти до десяти ключей I-Button, с использованием мастер-ключа.

Схема устройства

Рис. 1. Принципиальная схема

Основой устройства является контроллер PIC16F628A .

На микросхеме КРЕН5А выполнен стабилизатор напряжения.

Две контактные площадки для считывания кода ключа XS1 и XS2 подключены к разным выводам порта А (А2 и А3). Это необходимо для определения, с какой стороны приложен ключ (так как запоминание новых ключей возможно только с внутренней контактной площадки). На стабилитронах, резисторах и диодах 1N4148 выполнена защита входов.

Положение двери определяется по двум герконам - 1 и 2. На схеме рис. 1 показано закрытое состояние. Магнит, установленный в двери, находится напротив геркона 1. Герконы располагаются таким образом, чтобы при открывании двери магнит последовательно проходил через позиции 1=>2=>3=>4, показанные на рис. 2.

Геркон 2 используется для "отпускания" защелки после открывания двери, а также, для "втягивания" защелки при закрытии двери.

Динамик D1 (я использовал электромагнитный от китайской игрушки) включается через транзистор VT1.

Усилитель соленоида замка L1 выполнен на "дарлингтоне" TIP122. Для защиты от коммутационных бросков напряжения используется обратно включенный диод КД202.

На оптопаре PC817 выполнена схема контроля целостности цепи соленоида. Работает она следующим образом. При отсутствии управляющего сигнала на открытие замка транзистор VT2 закрыт. Ток течет через катушку L1 и светодиод оптопары. На входе B5 контроллера низкий уровень, что контролируется программой. При обрыве в цепи соленоида транзистор оптопары закрывается и на входе B5 появляется высокий уровень, который фиксируется для передачи соответствующего сигнала.

Следует отметить, что при подаче команды на открытие замка на входе B5 будет, также, высокий уровень, однако, программой он не фиксируется, так как время нахождение замка в открытом состоянии существенно меньше времени нахождения в закрытом.

Резистор Rк в цепи оптрона подбирается, в зависимости от выбранного соленоида, чтобы ток через светодиод был 10-20 мА.

Монтажную плату устройства в формате Sprint-Layout 5.0 скачиваем .

Прошивка

Файлы проекта в среде MPLab IDE можно скачать .

Исходный код с описанием алгоритмов работы приведен ниже.

Микроконтроллер PIC16F628A использует внешний кварцевый резонатор 20 МГц. Сторожевой таймер включен на максимальный предделитель.

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

Основной цикл программы построен на таймере 1 и расположен в подпрограмме TIME_UP, которая выполняется с периодом около 0,1 сек.

Подпрограмма TIME_UP, используя вложенные процедуры, выполняет все необходимые действия, описанные ниже.

В подпрограмме INIT осуществляется поочередный опрос считывателей (внешний и внутренний, в зависимости от флага IN_FLAG, 0). При установленном флаге ответа ключа (ANSWER_FLAG,0) выполняется процедура READ_CODE чтения кода ключа.

В процедуре READ_CODE поочередно считываются восемь байт данных с ключа (посредством подпрограмм WR_BYTE и R_BYTE организован обмен данными по шине 1-WIRE), после чего подпрограмма CHECK_CRC производит подсчет CRC (циклически избыточный код) первых семи принятых байт и сравнивает CRC с восьмым принятым байтом.

При несовпадении CRC происходит выход из процедуры READ_CODE, в противном случае считанные данные считаются достоверными и обрабатываются далее.

При выполнении процедуры CHECK_CODE проверяется соответствие считанного кода и сохраненного в EEPROM.

Хранение кодов ключей в EEPROM организовано следующим образом. Восемь байт первого ключа хранятся по адресам с 00h по 07h начиная с первого байта. По адресу 7Fh хранится значение следующего адреса EEPROM, свободного для записи следующего ключа (в данном случае - 08h). Ключ, код которого находится по адресам с 00h по 07h, является мастер-ключом и используется для активации режима сохранения кода последующих ключей. Запись кода следующего ключа (при активации режима сохранения) производится по адресам с 08h по 0Fh с занесением 10h в ячейку с адресом 7Fh. Таким образом, возможна запись до десяти ключей. Следует отметить, что для активации режима записи нового ключа необходимо наличие мастер-ключа. Поэтому код мастер-ключа должен быть занесен в ячейки с 00h по 07h (с записью 08h в ячейку с адресом 7Fh) на этапе прошивки контроллера.

В процедуре CHECK_CODE происходит последовательная проверка соответствия считанного кода и данных в EEPROM, начиная с большего адреса к нулевому.

По выходу из CHECK_CODE проверяется состояние флага EQUAL_FLAG, 0. Если он установлен (код совпал), то происходит открытие замка (процедура OPEN_LOCK), при этом, если совпал код мастер-ключа, считанного с внутренней контактной площадки, то происходит установка флага MASTER_FL, 0. Флаг MASTER_FL, 0 используется в подпрограмме LOCK_DRIVER, где по истечении 5 сек в случае неоткрытой двери происходит активация режима записи нового ключа (устанавливается флаг SAVE_FLAG, 0).

Если флаг EQUAL_FLAG, 0 по выходу из CHECK_CODE не установлен (нет совпадения кодов), то проверяется наличие включенного режима записи нового ключа (флаг SAVE_FLAG, 0). При включенном режиме и при условии считывания нового ключа с внутренней контактной площадки вызывается процедура SAVE_TO_EE, где происходит запись кода нового ключа (если не превышен лимит - 10 ключей).

На этом выполнение подпрограммы READ_CODE завершается и происходит переход во внешний цикл.

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

Теперь пробежимся по остальным процедурам, выполняемым в TIME_UP (с периодом 0,1 сек).

CHECK_N_CLR_SAVE проверяет наличие включенного режима записи нового ключа (флаг SAVE_FLAG, 0). При включенном режиме записи с помощью счетчика SAVE_COUNT производит отсчет времени (около 5 сек) до выключения режима при отсутствии считывания кода нового ключа (начальное значение заносится в SAVE_COUNT одновременно с установкой флага SAVE_FLAG, 0 в процедуре LOCK_DRIVER).

CHECK_HERCONS производит проверку состояния герконов контроля положения двери с фиксацией соответствующих режимов (флаги DOOR_OPEN, 0 и DOOR_H_OPEN, 0). Блок-схема алгоритма подпрограммы приведена на рис. 3.

CHECK_LOCK_CONT проверяет состояние входа PORTB, 5 (контроль цепи соленоида) когда замок не открыт и при необходимости устанавливает флаг ошибки LOCK_ERR, 0.

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

В LOCK_DRIVER при помощи счетчика LOCK_COUNT отсчитывается время открытого состояния замка в случае не открывания двери. По истечении 5 секунд замок закрывается во избежание перегрузок соленоида и цепи управления. Кроме того здесь производится установка флага SAVE_FLAG, 0 после считывания мастер-ключа.

В подпрограмме CHECK_TONE при помощи счетчика TONE_COUNT осуществляется отсчет времени в импульсах и интервалах пищалки с установкой флага FLAG_TONE, 0 в момент импульса. В зависимости от состояния замка используются следующие варианты включения звуковой сигнализации: импульсы и интервалы равны - дверь открыта или замок открыт; импульс с длинным интервалом - неисправность цепи соленоида; импульс без интервала - включен режим записи нового ключа.

В обработчике прерывания по таймеру 2 проверяется состояние флага FLAG_TONE, 0, и при его установлении на выходе PORTB, 4 генерируются импульсы с периодом 2 переполнения таймера.

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

Также во время эксплуатации при температурах ниже -20 градусов Цельсия наблюдалось замерзание герконов. На качество открывания двери, впрочем, это не повлияло - просто сделал отключение пищалки после некоторого промежутка времени. Поставил магнит помощнее: до - 40 градусов работает нормально.

Фото

Здесь показано устройство в домашней обстановке, так сказать, на испытательном стенде. (Просьба сильно не ругать за беспорядок - обстановка творческая.)

Доработка замка - присоединение тяги с пружиной.

Конструкция контактных площадок: корпус из сантехнических латунных пробок (резьба на 15 мм), центральный электрод изолирован резиновой вставкой.

Крепление устройства на месте. Замок вмонтирован в кусок доски.

Расположение герконов в торце доски. (Магнит установлен в двери - на фото не показан.)

Вид двери с улицы.

Установка окончена.

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

Данный электронный замок – иммобилайзер, в качестве ключей для авторизации использует ключи iButton (Dallas Touch Memory) типа DS1990 . Каждый такой ключ имеет свой уникальный 64-битный серийный номер, который является кодом доступа, позволяющий держателю ключа, к примеру, открыть дверь.

Основные параметры электронного замка:

  • память до 15 ключей;
  • три режима работы: моностабильный, бистабильный и с регулируемым временем включения реле;
  • световая индикация работы замка (индикатор считывателя);
  • питание от 9 до 15 В / 100мА;
  • ток потребления в режиме ожидания: 6мА;
  • размеры платы: 34×46 мм;
  • работа схемы протестирована в Proteus (ссылка в конце статьи)

Принципиальная схема замка показано на рисунке ниже. Его основным элементом является микроконтроллер PlC12F675 с внутренним АЦП. В данном случае АЦП микроконтроллера используется для настройки параметров замка.

Микроконтроллер тактируется от внутреннего RC-генератора с частой 4МГц. Схема запитана постоянным напряжением 12 В. Это может быть любой аккумулятор или блок питания, с ток нагрузки не менее 100мА.

Диод VD2 защищает систему от неправильной полярности подключения входного напряжения. Входное напряжение подается на стабилизатор DAl типа 78L05, конденсаторы C1…C4 выполняют функцию фильтра питания. В роли исполнительного элемента использовано миниатюрное реле типа JQC3FF (катушка 12 DC, контакты 10 А/230 В).

Выходной сигнал с микроконтроллера (вывод 2) поступает на базу транзистор VT1, в коллектор которого включена катушка реле. Резистор R7 ограничивает ток, протекающий через базу, в то время как диод VD1 защищает транзистор от ЭДС самоиндукции, возникающая в момент отключения реле.

Резисторы R2 и R3 вместе с R1, в зависимости от положения перемычки JP2, определяют режим работы замка:

  1. Если перемычка JP2 не установлена, то на вход G4 через резистор R3 подается напряжение высокого уровня. В этом случае микроконтроллер переведет работу замка в моностабильный режим. В этом режиме прикосновение ключа к считывателю приведет к включению реле. Это состояние будет постоянным вплоть до отключения питания, независимо от того, будет ли ключ снова приложен. Такой режим работы может быть использован для работы в качестве иммобилайзера в машине.
  2. Установка перемычки на выводы переведет замок в бистабильный режим работы. В этом режиме каждое касание ключа приведет к переключению реле.
  3. Установка перемычки на выводы задает временный режим работы. В этом режиме прикосновение зарегистрированного ключа к считывателю приведет к включению реле на определенное время. Это время зависит от величины напряжения, поданного на вход G4 микроконтроллера. Для задания этой величины используется , собранный из элементов R2, R3 и R1. Время включения реле находится в диапазоне от l…30 секунд.

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

Данная схема протестирована в Proteus:

Регистрация ключей

Чтобы замок мог реагировать на наш ключ, необходимо предварительно зарегистрировать его в памяти микроконтроллера. Возможна запись до 15 ключей. Для перевода замка в режим регистрации необходимо при выключенном питании установить перемычку PROG и включить питание.

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

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

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

После записи пятнадцатого ключа микроконтроллер выйдет из процедуры записи ключей и дальнейшее сохранение будет невозможно. Это состояние сигнализируется одновременным миганием обоих светодиодов. Теперь необходимо выключить питание и снять перемычку PROG. После повторного включения питания замок будет готов к работе.

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

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

Вся схема уместилась на односторонней печатной плате размером 34×46 мм.

Следует иметь в виду, что все изменения в конфигурации замка, такие как изменить время включения реле или выбор режима работы (J2), будут активными только после выключения и повторного включения напряжения питания замка.

(30,6 Kb, скачано: 1 349)

Некоторое время тому назад появился проект "ИМИТАТОР TOUCH-MEMORY DS1990A", т.е. отмычка. Теперь Вашему вниманию предлагается замок к этой отмычке. Замок имеет простую конструкцию и предназначен в основном для индивидуального использования. Замок работает с любыми типами ключей iButton, поэтому можно применять уже имеющиеся ключи, предназначенные для других целей. Всего в память может быть записано до 9 ключей, хотя это количество можно легко увеличить. Для авторизации процесса программирования используется мастер-ключ, код которого занесен в ПЗУ и не может быть стерт или изменен обычной процедурой программирования замка.

В последнее время широкое распространение получили замки, ключом к которым является электронная таблетка iButton (или touch memory) фирмы Dallas Semiconductor. Такие замки часто используются на дверях подъездов, а также внутри многих учреждений. Кроме того, ключи iButton часто применяются для расчетов на автозаправочных станциях и в других местах. Таким образом, у многих уже есть ключи iButton от чего-либо. Поэтому при проектировании самодельного замка рационально использовать в нем уже имеющиеся у пользователя ключи. Именно так и сделано в предлагаемом замке: с ним могут работать любые типы ключей, так как используется только записанный в ПЗУ iButton серийный номер, который есть в любом их типе. К тому же, команда чтения этого номера одна и та же для всех типов ключей (33H). Код семейства, который различается у разных типов, может быть любым. Он воспринимается как еще одна цифра сериального номера. Нужно отметить, что самым дешевым типом ключей является DS1990A.

Замок проектировался для индивидуального использования и имеет предельно простую конструкцию. На входной двери снаружи располагается только панелька для iButton и светодиод открывания дверей. Открывание дверей изнутри осуществляется с помощью кнопки. В качестве исполнительного механизма используется стандартная защелка с электромагнитом, который рассчитан на напряжение 12В. Коды ключей хранятся в энергонезависимой памяти и могут стираться и добавляться пользователем. Для защиты от несанкционированного перепрограммирования замка используется мастер-ключ. Всего в память можно записать 9 ключей. Это количество продиктовано возможностями 1-разрядного индикатора номера программируемого ключа. Если задействовать еще и буквы, можно увеличить суммарное количество ключей до 15. Это делается путем замены значения константы MAXK в программе. Таким же способом можно и уменьшить максимальное количество ключей.


Рис. 1. Принципиальная схема замка

Принципиальная схема замка показана на рисунке 1. Основой конструкции является микроконтроллер U1 типа AT89C2051 фирмы Atmel. К порту P1 подключен 7-сегментный индикатор, который используется при программировании ключей. Для этих же целей предназначена и кнопка SB1, подключенная к порту P3.7. Хранение серийных номеров ключей осуществляется в микросхеме EEPROM U3 типа 24C02, подключенной к портам P3.4 (SDA) и P3.5 (SCL). Внешняя панелька для iButton подключается к порту P3.3 через разъем XP2 и элементы защиты VD4, R3, VD5 и VD6. Подтягивающий резистор R4 выбран согласно спецификации однопроводной шины. Параллельно внешней панельке подключена еще и внутренняя панелька XS1, которая используется для программирования ключей. Кнопка открывания двери подключена к порту P3.2 через разъем XP1 и такие же элементы защиты, как и для iButton. Исполнительным устройством замка является электромагнит, подключенный через терминал XT1. Электомагнитом управляет ключ VT3, в качестве которого используется мощный МОП-транзистор типа IRF540. Диод VD7 защищает от выбросов самоиндукции. Ключом VT3 управляет транзистор VT2, который инвертирует сигнал, поступающий с порта P3.0 и обеспечивает управляющие уровни 0/12В на затворе VT3. Инверсия нужна для того, чтобы исполнительное устройство не срабатывало во время сброса микроконтроллера, когда на порту присутствует уровень логической единицы. 12-вольтовые управляющие уровни позволили применить обычный МОП-транзистор вместо более дефицитного низкопорогового (logick level). Для индикации открытия замка используется светодиод, который управляется тем же портом, что и электромагнит, но через транзисторный ключ VT1. Светодиод подключается через тот же разъем, что и iButton. Поскольку устройство должно работать круглосуточно без обслуживания, для повышения надежности установлен супервизор U2 типа ADM1232. Он имеет встроенный сторожевой таймер и монитор питания. На порту P3.1 микроконтроллер формирует периодические импульсы для сброса сторожевого таймера.

Питание устройства осуществляется от встроенного блока питания, содержащего трансформатор T1, выпрямительный мост VD9-VD12 и интегральный стабилизатор U4. В качестве резервного источника питания используется батарея BT1-BT10 из 10-ти NiMH-аккумуляторов типоразмера AA емкостью 800мА/Ч. При питании устройства от сети батарея аккумуляторов заряжается через резистор R10 током примерно 20мА, что составляет 0.025C. Режим зарядки малым током называют капельным (trickle charge). В таком режиме аккумуляторы могут находится сколь угодно долго, контроль конца процесса зарядки не требуется. Когда аккумуляторы оказываются полностью заряженными, забираемая ими от источника питания энергия превращается в тепло. Но поскольку ток зарядки очень маленький, выделяемое тепло рассеивается в окружающее пространство без сколько-нибудь заметного увеличения температуры аккумуляторов.

Конструктивно устройство выполнено в корпусе размером 150х100х60мм. Большинство элементов, включая трансформатор питания, смонтировано на печатной плате. Аккумуляторы размещаются в стандартных пластмассовых держателях, которые закреплены внутри корпуса рядом с платой. В принципе, можно использовать и другие типы аккумуляторов, например 12-вольтовую кислотную необслуживаемую батарею, применяющуюся в охранных системах. Для подключения исполнительного устройства на плате имеются терминалы типа TB-2, все остальные внешние цепи подключаются через малогабаритные разъемы с шагом контактов 2.54мм. Разъемы расположены на печатной плате и снаружи корпуса недоступны. Провода выходят из корпуса через резиновые уплотнители. Поскольку индикатор HG1, кнопка SB1 и панелька для iButton XS1 используются только во время программирования, они размещены на плате внутри устройства. Это упрощает конструкцию корпуса и делает его более защищенным от внешних воздействий. На боковой панели корпуса размещен только светодиод индикации включения VD13. Схема внешних соединений показана на рис. 2.


Рис. 2. Схема внешних соединений

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

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

Для программирования нового ключа нужно проделать следующие действия:

1. Нажать кнопку программирования.
2. На индикаторе появится буква «P», что означает вход в режим программирования.
3. Коснуться мастер-ключом панельки.
4. На индикаторе появится цифра «1», которая обозначает номер программируемого ключа.
5. Кнопкой выбрать нужный номер.
6. Коснуться любым ключом панельки.
7. Цифра на индикаторе начнет мигать, что говорит о готовности к программированию.
8. Коснуться панельки тем ключом, код которого требуется занести в память.
9. В случае успешного программирования цифра на индикаторе перестанет мигать и начнет гореть постоянно.
10. Для выхода из режима программирования нужно просто подождать 5 секунд, после чего индикатор погаснет.

Схематически процесс программирования нового ключа показан на рис. 3.


Рис. 3. Программирование нового ключа

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

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

Для стирания из памяти лишнего ключа последовательность действий остается такой же, как и при программировании, только все действия производятся мастер-ключом. Т.е. процесс стирания фактически является записью кода мастер-ключа на неиспользуемые номера.
Схематически процесс стирание лишнего ключа показан на рис. 4.


Рис. 4. Стирание лишнего ключа

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

Код мастер-ключа записывается в ПЗУ программ микроконтроллера, начиная с адреса 2FDH. Длина кода составляет 8 байт. Последовательность цифр должна быть такая же, как и на корпусе touch-memory, читать нужно слева направо. Т.е. по адресу 2FDH заносится значение контрольной суммы, затем по адресам 2FEH – 303H шесть байт серийного номера, начиная со старшего байта, и, наконец, по адресу 304H – код семейства. Например, код в целом может выглядеть так: 67 00 00 02 D6 85 26 01.

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


Рис. 5. Блок-схема основного цикла программы

Для обработки событий, связанных с программированием, имеются две подпрограммы: PROGT и PROGS, блок-схемы которых приведены на рис. 6. Первая вызывается при считывании кода ключа в режиме программирования, вторая – при нажатии кнопки программирования (NUMBER). Процесс программирования разбит на 3 фазы. При нажатии кнопки NUMBER осуществляется вход в программирование, т.е. переход к фазе 1. При этом на индикатор выводится буква «P». Считываемые после этого коды ключей проверяются на совпадение с кодом мастер-ключа, так как только он может позволить продолжить программирование. Если такое совпадение произошло, то осуществляется переход к фазе 2. На индикатор выводится номер текущего ключа, который кнопка NUMBER может изменять. Если снова будет зарегистрировано касание ключа, то произойдет переход к фазе 3. Еще одно касание ключа приведет к запоминанию его кода и к возврату к фазе 2. Нажатием кнопки NUMBER тоже можно вернуться к фазе 2, но без изменения содержимого памяти. Любое действие в режиме программирования вызывает перезагрузку таймера возврата, который имеет интервал 5 секунд и проверяется в основном цикле. Если будет обнаружено обнуление этого таймера, то происходит выход из режима программирования.


Рис. 6. Блок-схемы подпрограмм, используемых при программировании кода ключа

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

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

Файлы:
lock.asm - исходный текст программы замка.
l ock.bin - оттранслированная программа.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит

AT89C2051

1 В блокнот
U2 Супервизор питания

TC1232

1 В блокнот
U3 EEPROM 24C02 1 В блокнот
U4 Линейный регулятор

LM7805

1 В блокнот
VT1 Транзистор КТ3129А 1 В блокнот
VT2 Биполярный транзистор

КТ3130А9

1 В блокнот
VT3 MOSFET-транзистор

IRF540

1 В блокнот
VD1, VD4 Стабилитрон

BZV55-B5V6

2 В блокнот
VD2, VD3, VD5, VD6 Выпрямительный диод

1N4148

4 В блокнот
VD7, VD8 Выпрямительный диод

FR307

2 В блокнот
VD9-VD12 Диодный мост KBU405 1 В блокнот
С1, С2 Конденсатор 33 пФ 2 В блокнот
С3 Конденсатор 0.1 мкФ 1 В блокнот
С4 33 мкФ 1 В блокнот
С5 Электролитический конденсатор 10000 мкФ 16 В 1 В блокнот
R1, R3 Резистор

330 Ом

2 В блокнот
R2, R4 Резистор

4.7 кОм

2 В блокнот
R5, R6, R8, R9 Резистор

47 кОм

4 В блокнот
R7, R19 Резистор

220 Ом

2 В блокнот
R10 Резистор

100 Ом

1 1 Вт

Замок имеет простую конструкцию и предназначен в основном для индивидуального использования. Замок работает с любыми типами ключей iButton, поэтому можно применять уже имеющиеся ключи, предназначенные для других целей. Всего в память может быть записано до 9 ключей, хотя это количество можно легко увеличить. Для авторизации процесса программирования используется мастер-ключ, код которого занесен в ПЗУ и не может быть стерт или изменен обычной процедурой программирования замка.

В последнее время широкое распространение получили замки, ключом к которым является электронная таблетка iButton (или touch memory) фирмы Dallas Semiconductor. Такие замки часто используются на дверях подъездов, а также внутри многих учреждений. Кроме того, ключи iButton часто применяются для расчетов на автозаправочных станциях и в других местах. Таким образом, у многих уже есть ключи iButton от чего-либо. Поэтому при проектировании самодельного замка рационально использовать в нем уже имеющиеся у пользователя ключи. Именно так и сделано в предлагаемом замке: с ним могут работать любые типы ключей, так как используется только записанный в ПЗУ iButton серийный номер, который есть в любом их типе. К тому же, команда чтения этого номера одна и та же для всех типов ключей (33H). Код семейства, который различается у разных типов, может быть любым. Он воспринимается как еще одна цифра сериального номера. Нужно отметить, что самым дешевым типом ключей является DS1990A.

Замок проектировался для индивидуального использования и имеет предельно простую конструкцию. На входной двери снаружи располагается только панелька для iButton и светодиод открывания дверей. Открывание дверей изнутри осуществляется с помощью кнопки. В качестве исполнительного механизма используется стандартная защелка с электромагнитом, который рассчитан на напряжение 12В. Коды ключей хранятся в энергонезависимой памяти и могут стираться и добавляться пользователем. Для защиты от несанкционированного перепрограммирования замка используется мастер-ключ. Всего в память можно записать 9 ключей. Это количество продиктовано возможностями 1-разрядного индикатора номера программируемого ключа. Если задействовать еще и буквы, можно увеличить суммарное количество ключей до 15. Это делается путем замены значения константы MAXK в программе. Таким же способом можно и уменьшить максимальное количество ключей.


Рис. 1. Принципиальная схема замка

Принципиальная схема замка показана на рисунке 1. Основой конструкции является микроконтроллер U1 типа AT89C2051 фирмы Atmel. К порту P1 подключен 7-сегментный индикатор, который используется при программировании ключей. Для этих же целей предназначена и кнопка SB1, подключенная к порту P3.7. Хранение серийных номеров ключей осуществляется в микросхеме EEPROM U3 типа 24C02, подключенной к портам P3.4 (SDA) и P3.5 (SCL). Внешняя панелька для iButton подключается к порту P3.3 через разъем XP2 и элементы защиты VD4, R3, VD5 и VD6. Подтягивающий резистор R4 выбран согласно спецификации однопроводной шины. Параллельно внешней панельке подключена еще и внутренняя панелька XS1, которая используется для программирования ключей. Кнопка открывания двери подключена к порту P3.2 через разъем XP1 и такие же элементы защиты, как и для iButton. Исполнительным устройством замка является электромагнит, подключенный через терминал XT1. Электомагнитом управляет ключ VT3, в качестве которого используется мощный МОП-транзистор типа IRF540. Диод VD7 защищает от выбросов самоиндукции. Ключом VT3 управляет транзистор VT2, который инвертирует сигнал, поступающий с порта P3.0 и обеспечивает управляющие уровни 0/12В на затворе VT3. Инверсия нужна для того, чтобы исполнительное устройство не срабатывало во время сброса микроконтроллера, когда на порту присутствует уровень логической единицы. 12-вольтовые управляющие уровни позволили применить обычный МОП-транзистор вместо более дефицитного низкопорогового (logick level). Для индикации открытия замка используется светодиод, который управляется тем же портом, что и электромагнит, но через транзисторный ключ VT1. Светодиод подключается через тот же разъем, что и iButton. Поскольку устройство должно работать круглосуточно без обслуживания, для повышения надежности установлен супервизор U2 типа ADM1232. Он имеет встроенный сторожевой таймер и монитор питания. На порту P3.1 микроконтроллер формирует периодические импульсы для сброса сторожевого таймера.

Питание устройства осуществляется от встроенного блока питания, содержащего трансформатор T1, выпрямительный мост VD9-VD12 и интегральный стабилизатор U4. В качестве резервного источника питания используется батарея BT1-BT10 из 10-ти NiMH-аккумуляторов типоразмера AA емкостью 800мА/Ч. При питании устройства от сети батарея аккумуляторов заряжается через резистор R10 током примерно 20мА, что составляет 0.025C. Режим зарядки малым током называют капельным (trickle charge). В таком режиме аккумуляторы могут находится сколь угодно долго, контроль конца процесса зарядки не требуется. Когда аккумуляторы оказываются полностью заряженными, забираемая ими от источника питания энергия превращается в тепло. Но поскольку ток зарядки очень маленький, выделяемое тепло рассеивается в окружающее пространство без сколько-нибудь заметного увеличения температуры аккумуляторов.

Конструктивно устройство выполнено в корпусе размером 150х100х60мм. Большинство элементов, включая трансформатор питания, смонтировано на печатной плате. Аккумуляторы размещаются в стандартных пластмассовых держателях, которые закреплены внутри корпуса рядом с платой. В принципе, можно использовать и другие типы аккумуляторов, например 12-вольтовую кислотную необслуживаемую батарею, применяющуюся в охранных системах. Для подключения исполнительного устройства на плате имеются терминалы типа TB-2, все остальные внешние цепи подключаются через малогабаритные разъемы с шагом контактов 2.54мм. Разъемы расположены на печатной плате и снаружи корпуса недоступны. Провода выходят из корпуса через резиновые уплотнители. Поскольку индикатор HG1, кнопка SB1 и панелька для iButton XS1 используются только во время программирования, они размещены на плате внутри устройства. Это упрощает конструкцию корпуса и делает его более защищенным от внешних воздействий. На боковой панели корпуса размещен только светодиод индикации включения VD13. Схема внешних соединений показана на рис. 2.


Рис. 2. Схема внешних соединений

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

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

Для программирования нового ключа нужно проделать следующие действия:

  1. Нажать кнопку программирования.
  2. На индикаторе появится буква «P», что означает вход в режим программирования.
  3. Коснуться мастер-ключом панельки.
  4. На индикаторе появится цифра «1», которая обозначает номер программируемого ключа.
  5. Кнопкой выбрать нужный номер.
  6. Коснуться любым ключом панельки.
  7. Цифра на индикаторе начнет мигать, что говорит о готовности к программированию.
  8. Коснуться панельки тем ключом, код которого требуется занести в память.
  9. В случае успешного программирования цифра на индикаторе перестанет мигать и начнет гореть постоянно.
  10. Для выхода из режима программирования нужно просто подождать 5 секунд, после чего индикатор погаснет.

Схематически процесс программирования нового ключа показан на рис. 3.


Рис. 3. Программирование нового ключа

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

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

Для стирания из памяти лишнего ключа последовательность действий остается такой же, как и при программировании, только все действия производятся мастер-ключом. Т.е. процесс стирания фактически является записью кода мастер-ключа на неиспользуемые номера.
Схематически процесс стирание лишнего ключа показан на рис. 4.


Рис. 4. Стирание лишнего ключа

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

Код мастер-ключа записывается в ПЗУ программ микроконтроллера, начиная с адреса 2FDH. Длина кода составляет 8 байт. Последовательность цифр должна быть такая же, как и на корпусе touch-memory, читать нужно слева направо. Т.е. по адресу 2FDH заносится значение контрольной суммы, затем по адресам 2FEH – 303H шесть байт серийного номера, начиная со старшего байта, и, наконец, по адресу 304H – код семейства. Например, код в целом может выглядеть так: 67 00 00 02 D6 85 26 01.

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


Рис. 5. Блок-схема основного цикла программы

Для обработки событий, связанных с программированием, имеются две подпрограммы: PROGT и PROGS, блок-схемы которых приведены на рис. 6. Первая вызывается при считывании кода ключа в режиме программирования, вторая – при нажатии кнопки программирования (NUMBER). Процесс программирования разбит на 3 фазы. При нажатии кнопки NUMBER осуществляется вход в программирование, т.е. переход к фазе 1. При этом на индикатор выводится буква «P». Считываемые после этого коды ключей проверяются на совпадение с кодом мастер-ключа, так как только он может позволить продолжить программирование. Если такое совпадение произошло, то осуществляется переход к фазе 2. На индикатор выводится номер текущего ключа, который кнопка NUMBER может изменять. Если снова будет зарегистрировано касание ключа, то произойдет переход к фазе 3. Еще одно касание ключа приведет к запоминанию его кода и к возврату к фазе 2. Нажатием кнопки NUMBER тоже можно вернуться к фазе 2, но без изменения содержимого памяти. Любое действие в режиме программирования вызывает перезагрузку таймера возврата, который имеет интервал 5 секунд и проверяется в основном цикле. Если будет обнаружено обнуление этого таймера, то происходит выход из режима программирования.


Рис. 6. Блок-схемы подпрограмм, используемых при программировании кода ключа

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

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

Скачать файлы:
lock.asm - исходный текст программы замка.
lock.bin - оттранслированная программа.

Загрузка...