Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

Кодовый замок с ключом из микросхемы памяти — Меандр — занимательная электроника
Site icon Меандр — занимательная электроника

Кодовый замок с ключом из микросхемы памяти

Чтобы открыть этот электронный замок, не потребуется запо­минать код и набирать его вручную, нажимая на кнопки. Достаточно вставить в «замочную скважину» замка «ключ» с мик­росхемой энергонезависимой памяти. Подсмотреть открываю­щий замок код невозможно. Его генерирует и записывает в память «ключа » сам замок.

Кодовые замки обычно работают по хорошо известному принципу. За­мок хранит секретный код. Пользова­тель знает этот код и, чтобы открыть за­мок. набирает его. нажимая на кнопки. При совпадении набранного и хранимо­го кодов замок открывается. Такой алго­ритм реализован, например, в микроконтроллерном устройстве [1].

Но в этом алгоритме есть слабые места. Простой код можно подобрать, было бы достаточно времени. Сложный код трудно запомнить и долго набирать. Набираемый код злоумышленник может подсмотреть. В предлагаемом замке кнопок набора кода нет, а сам код пользователь хранит в «ключе» — дешёвой микросхеме энергонезависимой памя­ти. Речь не идёт о таблетке iButton — до­рого. Хотя в части соединения «ключа» с замком у таблеток есть преимущество в простоте и надёжности.

Замок выполнен на микроконтролле­ре ATtiny2313, что позволяет собрать на одной и той же плате без всяких переде­лок и лишних элементов любой из двух предлагаемых, различающихся лишь программой микроконтроллера вариан­та замка. Первый вариант — однока­нальный. приводящий в действие лишь одно исполнительное устройство (за­пор). Второй вариант — девятиканаль­ный. способный, в зависимости от кода во вставленном в него «ключе», открыть любой из девяти запоров В последнем случае не обязательно использовать все каналы, выбор их числа остаётся за пользователем.

В «ключах» применены микросхемы энергонезависимой памяти с интер­фейсом I2С. Код, открывающий однока­нальный замок, — двухбайтный. Его со­здаёт и записывает в «ключ» сам замок с помощью генератора псевдослучайных чисел, реализованного программно в микроконтроллере. Девятиканальный замок записывает в «ключ» три байта. Первый байт содержит условный номер канала, а следующие два — открываю­щий код для этого канала.

Схема замка показана на рис. 1. Так­товая частота микроконтроллера DD1 задана его внутренним RC-генератором и равна 8 МГц. Розетка XS1 — основная. Её устанавливают на двери и в неё вставляют «ключ», чтобы открыть замок. Розетка XS2 — вспомогательная. Её ус­танавливают на корпусе замка, распо­ложенном в недоступном для посторон­них месте. Эту розетку используют для записи и копирования кода в «ключ».

Рис. 1

«Ключ», схема которого изображена на рис. 2, содержит микросхему памя­ти DS1 и разъем ХР1 для подключения к замку. Микропереключатель SF1 в зам­ке установлен так, что при сочленении «ключа» с разъемом XS1 замка его кон­такты замыкаются и включают питание замка.

Рис. 2

При совпадении кода, хранящегося в замке, с кодом в «ключе» программа ус­танавливает высокий уровень на выходе PD4 микроконтроллера. Если перемыч­ка S1 установлена в положение 3-4, то этот уровень открывает транзистор VT1, в результате чего срабатывает реле К1, подавая питание на обмотку электро­магнита, воздействующего на запорный механизм. Одновременно вторая пара замкнувшихся контактов реле блокиру­ет микропереключатель SF1. Поэтому при извлечении «ключа» из разъёма пи­тание замка остаётся включённым, а запорный механизм — открытым.

Если перемычка S1 установлена в положение 1-2, реле К1 не действует, а логический сигнал открывания запора поступает на контакт 3 колодки ХТ2, к которой можно подключить любое ис­полнительное устройство.

В девятиканальном замке при совпа­дении кодов активируется канал замка, соответствующий хранящемуся в «ключе» номеру. Выход первого канала и в этом случае, в зависимости от положе­ния перемычки S1, управляет реле К1 или выведен на колодку ХТ2. Выходы остальных восьми каналов выведены на колодку ХТ5. Сигналы на колодках ХТ2 и ХТ5 имеют стандартные логические уровни: низкий — закрыто, высокий — открыто.

Питание на девятиканальный замок поступает постоянно, для чего вместо микропереключателя SF1 между кон­тактами 1 и 2 колодки XT 1 должна быть установлена перемычка. Сам микровы­ключатель подключают вместо кнопки SB1. Когда в розетку XS1 вставляют «ключ», он выводит микроконтроллер из «спящего» режима.

Кнопку SB2 и светодиоды HL1, HL2 используют при копировании и записи созданных замком кодов в микросхемы памяти «ключей». В одноканальном ва­рианте в этом процессе участвует и кнопка SB 1.

Печатная плата замка изображена на рис.3. Она рассчитана на установку любых резисторов мощностью 0,125 или 0,25 Вт, оксидных конденсаторов «TREC”, керамических конденсаторов типоразмера 1206 для поверхностного монтажа. Конденсатор С5 — КМ-6 или аналогичный импортный. Реле К1 — P2V23079A1001В301 с номинальным напряжением катушки 5 В и максималь­ным коммутируемым переменным то­ком 2 А при напряжении 250 В. Можно использовать реле с катушкой и на бо­лее высокое напряжение, подав его от отдельного источника.

Рис. 3

Для микроконтроллера DD1 на плате установлена двадцатигнёздная DIP-панель. Вместо микроконтроллера ATtiny2313V-10PU можно применить ATtiny2313-20PU.

Розетки XS1 и XS2 — USB-AF. Вилка ХР1 «ключа» — USB-AM. На ней закреп­лена изображённая на рис. 4 печатная плата с микросхемой DS1.

Микросхему AT24C08A-10PI можно заменить на другую серии 24С или 24LC с последующими цифрами: 01, 02, 04 или 08, например, 24LC01B-I/P. Эти микросхемы имеют разное число выве­денных на выводы 1—3 адресных вхо­дов. Но на все эти входы в рассматри­ваемом устройстве следует подавать логически низкие уровни напряжения. Поэтому на печатной плате контактные площадки под выводы 1 —4 микросхемы DS1 соединены между собой.

Рис. 4

Прилагаемый к статье файл Code_Lock.asm содержит исходный текст программы одноканального замка, а файл Code_L.ock.hex — её коды для загрузки в микроконтроллер. После выполнения инициализации эта про­грамма читает двухбайтное слово кода из EEPROM микроконтроллера. Затем она выполняет цикл сравнения кода из «ключа» с кодом из EEPROM. При их сов­падении программа записывает логиче­скую 1 в четвёртый разряд выходного регистра порта D, чем открывает замок. Затем она ждёт извлечения «ключа” из разъёма (признак этого — несовпаде­ние кодов), после чего запускает отсчёт времени удержания замка открытым. По завершении отсчёта заданного вре­мени программа обнуляет четвёртый разряд выходного регистра порта D, а реле К1 не только размыкает цепь элек­тромагнита, но и выключает питание замка до повторного присоединения к нему «ключа».

При записи или копировании кода в «ключ» программа переходит к выполне­нию соответствующей подпрограммы. Запись она выполняет в два этапа. Сначала записывает в микросхему па­мяти «пустое» слово $0000, а затем — двухбайтный код. Это позволяет добить­ся уверенной записи кода без много­кратного повторения процесса записи.

В программе предусмотрено форми­рование двух интервалов времени. Пер­вый интервал длительностью около 0,5 с использован в процедуре подавления дребезга контактов кнопок. Второй ин­тервал длительностью около 5 с — про­должительность удержания замка от­крытым после извлечения «ключа». В формировании обоих интервалов участ­вует таймер ТО микроконтроллера, ге­нерирующий запросы прерывания с периодом 0,0327 с.

Подпрограмма генератора псевдо­случайных чисел описана в [2, с. 124]. Первое число в их последовательности программа читает при каждом запуске из ячейки по адресу 2 в EEPROM микро­контроллера. Если содержимое EEPROM было стёрто, а запись в него ещё не производилась, это будет число 255.

Программная реализация интерфей­са I2С взята из [3], где на с. 431 она опи­сана применительно к микроконтролле­рам семейства AT90S. В неё внесены изменения, позволяющие читать более одного байта.

Файл MultichanneLLock.asm содер­жит исходный текст программы девяти­канального замка, а файл Multichannel. Lock.hex — её коды для загрузки в мик­роконтроллер. После инициализации микроконтроллера эта программа за­пускает отсчёт времени таймером Т1 и цикл поиска «ключа». Если в течение заданного времени «ключ» не обнару­жен, программа переводит микроконт­роллер в «спящий» режим. Подключён­ный «ключ» замыкает контакты микропе­реключателя SF1. Обнаружив установ­ленный в результате этого низкий уро­вень на входе PD2, микроконтроллер «просыпается» и начинает чтение услов­ного номера «ключа» и кода.

Следующее действие программы — чтение соответствующего условному номеру «ключа» кода из EEPROM микро­контроллера. Далее идёт проверка ко­дов на совпадение и выбор соответст­вующего «ключу» выходного канала. При положительном результате сравнения замок открывается. После извлечения «ключа» из разъёма следует выдержка длительностью 5 с. По её истечении программа устанавливает низкие уров­ни на всех выходах замка, запускает таймер Т1 и, отсчитав заданное время, переводит микроконтроллер в «спящий» режим.

Время до «засыпания» микроконт­роллера задано в программе констан­тами Time1L, Time1H и NumCyc. Если Time1L=Time1H=0 и NumCyc=1, дли­тельность выдержки будет равна 8,4 с. Уменьшить её можно, присвоив констан­там Time1L и Time1Н значения, отличные от нуля, а увеличить — присвоить большее значение константе NumCyc. На­пример, при NumCyc=2 выдержка удвоится и станет равной 16,8 с.

Конфигурация микроконтроллера для обоих вариантов программы долж­на быть следующей:

EESAVE=0;

BODLEVEL=100;

CKSEL=0100;

SUT=00.

При исправных деталях и безоши­бочном монтаже устройство не требует налаживания. Нормальное функциони­рование одноканального замка прове­ряют до его монтажа на объекте запи­сью кода в «ключ» или в несколько «клю­чей». Для этого «ключ» вставляют в розетку замка. При нажатии на кнопку SB2 должен включиться светодиод HL2. Программный генератор псевдослу­чайных чисел создаёт код, затем про­грамма записывает этот код в микро­схему памяти «ключа», в ОЗУ и в EEPROM микроконтроллера. В следую­щие «ключи» при нажатии на кнопку SB2 программа запишет код из ОЗУ микро­контроллера, не запуская генератор псевдослучайных чисел. После записи кода в первый «ключ» светодиод HL2 остаётся включённым, а после записи в следующие «ключи» он по окончании записи гаснет.

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

Записав код в один или несколько «ключей», проверяют работу замка в целом. Для проверки выключают пита­ние замка. При его включении и присо­единении содержащего правильный код «ключа» реле К1 должно сработать. Оно должно отпустить якорь через 5 с после извлечения «ключа».

Для копирования кода в дополни­тельный «ключ» предназначена кнопка SB1. Новый «ключ» присоединяют к замку и нажимают на эту кнопку. При этом включается светодиод HL1, код извлекается из EEPROM микроконтрол­лера и записывается в «ключ». Содер­жимое EEPROM остаётся прежним. Пи­тание не выключают, пока код не будет записан во все необходимые «ключи».

Запись кодов в «ключи» для девяти­канального замка производят в следую­щем порядке. «Ключ» присоединяют к замку. При нажатии на кнопку SB2 вклю­чаются светодиоды HL1 и HL2, а генера­тор псевдослучайных чисел создаёт код, который и будет записан в микро­схему памяти, ОЗУ и EEPROM микро­контроллера. Вместе с кодом записыва­ется и номер канала замка, к которому он относится.

Светодиод HL2 гаснет при выходе из подпрограммы записи, а светодиод HL1 — после записи кода в «ключи” всех каналов. Число рабочих канатов девятиканального замка задано в про­грамме константой QuanCH, значение которой должно быть втрое больше этого числа. Каналы замка активируют­ся через 5 с после записи кода в «ключ», что позволяет проверить соот­ветствие канала и кода ключу. Во время записи кодов в «ключи» таймер Т1 не работает.

Коды во все необходимые «ключи» записывают в едином цикле, т. е. без выключения питания или аппаратной установки микроконтроллера в исход­ное состояние.

Скачать программу для микроконтроллера

ЛИТЕРАТУРА

  1. Шишкин С. Семиканальный электрон­ный ключ. — Радио, 20)5, № 2, с. 39, 40.
  2. Мортон Д. Микроконтроллеры AVR. Вводный курс. — М.: Додэка-ХХ1, 2006.
  3. Трамперт В. AVR-RISC микроконтрол­леры. — Киев: Микроконтроллер-Пресс. 2006

Автор: Н. САЛИМОВ, г. Ревда Свердловской области
Источник: журнал Радио №11, 2015

Exit mobile version