В настоящее время электронные ключи для домофона и аналогичные настолько широко распространены, что многие постоянно носят с собой несколько штук от замков, ограничителей доступа и устройств сигнализации. Разработанное автором устройство представляет собой эмулятор ключей для домофона, оно позволяет записать в память и воспроизвести код восьми разных ключей. Используя это устройство, можно не носить с собой все ключи.
Основой устройства является микроконтроллер PIC16F84A, и оно моделирует работу самой простой микросхемы — DS1990A. Другие микросхемы эмулировать сложнее из-за наличия встроенной в них памяти. Использование эмулятора позволяет делать виртуальные копии ключей, но при этом у него нет главного преимущества ключей для домофона — энергонезависимости. Если контроллер электронного замка использует только серийный номер ключа, то эмулятор будет работать и с ключами на основе других микросхем — DS1991—DS1996. Устройство успешно проверено в работе с различными электронными замками и показало высокую надежность.
Описание работы электронных ключей на основе микросхемы DS1990A (далее ключ) можно найти в [1]. Чтобы эмулировать ключ для домофона, необходимо воспроизвести его эквивалентную электрическую часть и алгоритм работы. Микроконтроллер PIC16F84A имеет все возможности для решения этой задачи. Внутренняя EEPROM объемом 64 байта позволяет хранить восемь кодов ключей по 8 байт каждый. Устройство можно условно разделить на две части: считыватель кода и эмулятор. Для упрощения конструкции для них использован один разъем, по форме и габаритам совпадающий с корпусом F5 MicroCan.
Схема устройства показана на рис. 1. Микроконтроллер работает по программе, коды которой приведены в таблице. В ней же указана его конфигурация. Была выбрана тактовая частота микроконтроллера 10 МГц, позволяющая реализовать требуемые временные параметры для входных и выходных сигналов В режиме считывания кода ключа резистор R4 подключен к линии питания +5 В через линию порта RAO, а информационный сигнал поступает на линию порта RA4. В режиме эмуляции линия порта RA4, соединенная с линией порта RB0, образует выход и вход ключа соответственно. С помощью резистора R13 имитируется ток, "потребляемый" ключом (около 5 мкА). Стабилитрон VD1 и резистор R12 выполняют защитные функции.
Элементы светодиодного индикатора HG1 с общим анодом подключены к разным портам, что не очень удобно с точки зрения разработки программы, но позволяют подключать непосредственно к печатной плате провода для внутрисхемного программирования микроконтроллера. Питание устройства — от одного гальванического элемента (напряжение 1,5 В) типоразмера АА. Максимальный потребляемый ток — 75 мА. Для питания микроконтроллера DD1 и светодиодного индикатора HG1 применены повышающий преобразователь напряжения на транзисторах VT1, VT2 [2, 3] и стабилизатор напряжения DA1. Программа эмулятора реализует следующие функции: чтение кода ключа с сохранением в памяти, извлечение из памяти номера ранее сохраненного и его "воспроизведение". Наиболее сложной оказалась задача правильно реализовать функцию MASTER RESET, т. е. установку в исходное состояние. Дело в том, что разные считыватели по-разному обнаруживают "прикладывание" ключа. В некоторых на приемном контакте установлено напряжение +5 В, и они реагируют на кратковременный спад этого напряжения при подключении ключа. Другие опрашивают контакт периодически. Есть и такие, у которых на контакт поступает минусовое напряжение, и они определяют подключение ключа по нулевому уровню напряжения.
Поэтому применен следующий прием: прерывания запрещаются, a T0IF (разряд переполнения таймера) проверяется программно одновременно с проверкой наличия плюсового напряжения в одном цикле. Это позволяет определить, когда происходит принудительный сброс или питание на ключ подано при первом прикосновении. Также для повышения надежности считывания данных от ключа использована программная проверка флага прерывания от RB0, но не в обработчике прерываний, а в самой программе:
btfss INTCON, INTF goto ...
вместо:
btfsc PORTB.RBO goto ....
Если прерывания от RBO запретить, то разряд INTF в регистре INTCON можно анализировать программно, что дает несколько преимуществ. Во-первых, на входе блока прерываний установлен триггер Шмитта. Это существенно повышает помехоустойчивость в случае неустойчивого контакта. Во-вторых, использование программного чтения флага прерывания позволяет асинхронно определить начало фронта с помощью программного опроса состояния входа и спада импульса благодаря установке флага прерывания. Это облегчает задачу синхронизации устройства с мастером. После обнаружения подключения программа формирует импульс присутствия и переходит к приему команды от замка. Если это команда READ ROM (ЗЗН) то эмулятор начинает выдачу кода семейства ключа, серийного номера и контрольной суммы. После прочтения "ключа" целевым устройством эмулятор выключают. Программа написана на языке ассемблера MPASM и отлажена в среде MPLAB IDEV8.10.
После включения эмулятора на индикаторе HG1 отображается цифра 0. Последовательно нажимая на кнопку SB1 "Номер", выбирают номер текущей записи от 0 до 7. В этом режиме можно выбирать номер записи и сохранить в памяти под этим номером код нового ключа. Так, после выбора, например, номера 0 прикладывают к считывателю ключ (рис. 2). Кратковременно высвечивается символ "Р" (Program), что означает успешную запись кода ключа в память под этим номером. Следует обратить внимание, что контроль содержимого памяти не осуществляется, поэтому новая запись всегда стирает предыдущую запись без предупреждения. Эмуляцию ключа начинают после выбора номера записи с нажатия на кнопку SB2 "Старт". При этом на индикаторе высвечивается "тире" (элемент G). Теперь можно приложить устройство к считывателю замка взамен стандартного ключа.
В устройстве применены резисторы МЛТ, С2-33 (R4— R12), остальные — для поверхностного монтажа Р1-12, РН1-12 типоразмера 0805. Оксидные конденсаторы — импортные малогабаритные, С5 — К10-17, остальные — керамические для поверхностного монтажа типоразмера 0805. Кнопки SB1 и SB2 — с самовозвратом SDTX размерами 6x6 мм и высотой 9,5 мм. Если применить кварцевый резонатор в корпусе с тремя выводами и встроенными конденсаторами, конденсаторы С1 и СЗ не устанавливают. Трансформатор намотан на магнитопроводе К10x6x4,5 из феррита 2000НМ. Каждую обмотку наматывают вдвое сложенным проводом, соединяя затем конец одного провода с началом другого. Обмотка I содержит 10x2 витков, а обмотка II —70x2 витков провода ПЭВ-2 0.2.
Для изготовления печатных плат применен односторонне фольгированный стеклотекстолит толщиной 1,5 мм. Всего печатных плат две, сборку начинают с платы, на которой размещены элементы преобразователя напряжения и светодиодный индикатор (рис. 3). Сначала собирают преобразователь напряжения, стабилизатор и проверяют их работоспособность. После подачи питания на конденсаторе С2 должно быть напряжение около 9 В, а на выходе стабилизатора DA1 — 5 В. Если преобразователь не работает, возможно, придется поменять местами выводы; одной из обмоток трансформатора. Кнопки устанавливают со стороны печатных проводников. У светодиодного индикатора отгибают выводы под прямым углом, немного укорачивают и припаивают к печатным проводникам как элемент для поверхностного монтажа. Затем впаивают резисторы R5—R11 и меж платные перемычки из оголенного провода. Эти резисторы и перемычки выполняют функцию соединителей двух плат.
Затем монтируют плату универсального ключа для домофона, на которой установлен микроконтроллер (рис. 4). Его предварительно программируют. Но возможно и внутрисхемное программирование, для этого к плате припаивают провода от программатора. Элементы для поверхностного монтажа устанавливают со стороны печатных проводников. Аккуратно соединяют две платы этажеркой (рис. 5) так, чтобы печатные проводники были на внешней стороне, а перемычки и выводы резисторов попали в соответствующие отверстия. Общая высота сборки, замеренная по внешним поверхностям плат, не должна превышать 10 мм.
Сборку помещают в пластмассовый корпус-кассету BAT/HOLDER АА2 SBH-321AS, предназначенный для двух элементов типоразмера АА, а именно на место одного элемента (рис. 6). Движковый выключатель питания уже встроен в указанный корпус. Конструкция контактного устройства показана на рис. 7. В корпусе 1 делают отверстия для индикатора, толкателей кнопок и делают отверстие под потайной винт М2,5. Само устройство состоит из внешнего элемента 2 (стакан из латуни с толщиной стенок 1 мм), изолятора 3 толщиной 2 мм (полистирол) и центрального элемента 4 (латунь) толщиной 2,5 мм с резьбой М2,5 в центре. Перед сборкой под внешний элемент 2 и крепежный винт прокладывают оголенные провода 5, которые соединяют с соответствующими элементами на плате. Срез под углом 45° на центральном элементе 4 предназначен для соединения с ключом, код которого считывают. Внешний вид эмулятора показан на рис. 8.
Дальнейшим усовершенствованием конструкции может быть применение более мощного микроконтроллера, например PIC16F628A. Это позволит увеличить объем памяти для хранения кодов шестнадцати ключей. При этом, используя одну из линий порта, например, RA3 и десятичную точку на индикаторе, можно отображать номера больше 9. Взамен повышающего преобразователя и гальванического элемента на 1,5 В возможно применить батарею питания на 12 В — А27 или А23. Это позволит упростить конструкцию, но надежность работы при этом снизится, поскольку емкость этих батарей существенно меньше, чем одного элемента АА.
Качаем код программы универсального ключа для домофона kod.rar [6,2 Kb]