Аналог электронного ключа "Метаком ТМ-2002" на ATtiny2313
Д. ГРИГОРЬЕВ, г. Пенза
В настоящее время широкое распространение получили различные виды подъездных домофонов Cyfral, Vizit, Метаком и др В результате все большее число людей вынуждено носить с собой постоянно растущее число электронных ключей к различным дверям своих родственников и знакомых. Как сделать самодельный аналог такого ключа на микроконтроллере, рассказанс в предлагаемой статье.
Простая хозяйственная задача — как избавиться от нескольких ключей, — породила различные варианты устройств типа "ключ почтальона", которые позволяют считывать и хранить в себе некоторое число кодов других ключей. Но такие устройства не бесплатны, как правило, имеется схема, но для получения кодов прошивки микроконтроллера необходимо заплатить автору некоторую сумму. Данная проблема и чисто житейская необходимость побудили к созданию аналога электронного ключа на микроконтроллере.
Объектом исследования стал ключ (рис. 1), который не имеет какой-либо маркировки, кроме надписи "Метаком" (Метаком) на пластиковом держателе. Поиск в различных источниках дал повод утверждать, что тип ключа — ТМ-2002, однако описания его работы не было найдено. Первоначальное предположение о его принадлежности к семейству ключей iButton типа DS1991 отпало сразу — он просто не читался. Предположение о емкостном или резистив-ном типе ключа также не выдержало проверки, кроме того, он явно "звонился" как диод, что дало основания подозревать о наличии в нем микросхемы или защитного стабилитрона.
![]()
В ходе экспериментов было выявлено следующее: если на ключ через резистор сопротивлением 1 кОм подать напряжение + 5 В, то осциллограф показывает, что ключ непрерывно генерирует пачки импульсов на своей линии питания (рис. 2). Характер импульсов позволяет предположить, что применено широтно-импульсное кодирование, последовательность из 35 импульсов кода завершается низким логическим уровнем в течение временного интервала, равного или превышающего период следования импульсов (очевидно, для синхронизации всей последовательности). Важным оказалось то, что сигнал имеет большую постоянную составляющую, а это, по-видимому, исключает возможность распознавания импульсов данного ключа устройствами для чтения ключей iButton.
![]()
Прочитать код ключа можно различными способами. Используя осциллограф с памятью, код считывается прямо с экрана. Для этого центральный контакт ключа через резистор сопротивлением 1 кОм соединяют с "+" источника питания 4...5 В и с входом осциллографа. Внешний контакт ключа соединяют с "-" источника питания и общим проводом осциллографа. Получить информативную "картинку" с использованием внутренней синхронизации осциллографа С1-65А не получилось, но удалось ее сфотографировать в режиме однократного запуска. Для осциллографов с памятью проблем быть не должно. Вид сигнала показан на рис. 2, считывание кода проводят в следующем порядке. Сначала находят самый длинный "провал" (низкий уровень) сигнала — это сигнал синхронизации. Далее следуют информационные посылки (всего 35 штук). Способ кодирования 0 и 1 представлен на рис. 2, разряды передают от младшего к старшему. Если нет ошибки в счете, после 35-го импульса снова будет сигнал синхронизации.
Полученный код в порядке передачи разрядов разбивают на четыре группы — по восемь разрядов в каждой (последние три составляют отдельную группу и дополняются нулями до восьми). Затем его представляют в шестнадцатиричном виде. Например, код 00011100-11110000-11101100-00000001-001 будет иметь вид 0x38, OxOF, 0x37, 0x80, 0x04.
Но более надежный результат можно получить с помощью специально разработанной программы и устройства считывания (рис. 3), которое подключают к LPT-порту компьютера. Контакты подобраны так, что их номера соответствуют как разъему Centronics, так и DB-25M LPT кабеля. Резистором R2 устанавливают рабочую точку транзистора так, чтобы при отсутствии входного сигнала на входе на коллекторе было напряжение 0,4...0,5 В, что соответствует низкому логическому уровню.
![]()
Если устройство работает нормально, то после подачи питающего напряжения и подключения ключа на коллекторе транзистора VT1 должен быть инвертированный информационный сигнал ключа с крутыми перепадами. Затем устройство подключают к разъему кабеля LPT-порта, запускают программу xbutton.exe (файл xbutton.sys должен находиться в той же папке). В процессе работы программы на экран выводятся результаты трех попыток чтения кода ключа для их визуального сравнения. Если ключ не подключен, читаются все нули. Вопросы взаимного влияния данной программы и программного обеспечения, установленного на ПК (драйверы принтеров, программы, использующие LPT-порт, и т. д.), не исследовались, но при испытании проблем отмечено не было.
![]()
Схема аналога электронного ключа на микроконтроллере показана на рис. 4. Он работает по программе, коды которой приведены в таблице. Всего в память микроконтроллера можно записать коды двух ключей, месторасположение которых в таблице выделено полужирным шрифтом, код второго ключа разделен на две части, что связано с форматом НЕХ-файла. Тактовая частота в микроконтроллере (1 МГц) получена делением частоты встроенного RC-генератора (8 МГц) на восемь, биты секретности не установлены.
![]()
Питание микроконтроллера осуществляется от домофона. Исследование показало, что напряжение в лузе для ключа составляет 3,9 В, а ток короткого замыкания — 4 мА, т. е. внутри шина . данных соединена с ли-' нией питания 3,9 В через резистор сопротивлением около 1 кОм. Исходя из этого были рассчитаны номиналы резисторов R1, R2 и конденсатора С2. Стабилитрон VD1 предназначен для защиты от кратковременного превышения напряжения на входе или его пере-полюсовки. Следует отметить, что микроконтроллер работает при напряжении питания около 2 В, поэтому он и применен с индексом V (минимальное напряжение питания — 1,8 В). Но эксперименты с микроконтроллерами без такого индекса (минимальное напряжение питания — 2,7 В) показали, что все испытанные образцы работали устойчиво.
Элементы, кроме микроконтроллера и стабилитрона, — в корпусах для поверхностного монтажа, они смонтированы на печатной плате из односторонне фольгированного стеклотекстолита, чертеж которой показан на рис. 5. Для установки микроконтроллера (корпус DIP-20) на плату со стороны, свободной от печатных проводников, монтируют панель. Задействованные выводы вставляют в отверстия, а остальные подгибают под панель.
![]()
Резисторы и конденсатор С1 (керамический) — типоразмеров 0805, 1210, конденсатор С2 — танталовый для поверхностного монтажа. Стабилитрон припаивают непосредственно к контактным площадкам платы, к ним же припаивают отрезки жесткой проволоки, которые использованы в качестве контактов для подключения к лузе домофона.
Программирование микроконтроллера производится любым доступным способом. По причине низкого напряжения питания при программировании необходимо установить разряды конфигурации BODLEVEL [0..2]=111.
Внешний вид устройства показан на рис. 6.
Несмотря на то что какой-либо механической защиты или герметизации нет, оно безотказно работает больше года. При использовании микроконтроллера в корпусе SOIC размеры устройства можно уменьшить. Следует также отметить, что изучение того, как именно представлен код ключа в оригинальных изделиях ТМ-2002, какова его структура и возможное назначение отдельных разрядов, не проводилось. ![]()
От редакции. Программное обеспечение устройства находится на нашем FTP-сервере по адресу <ftp://ftp.radio.ru/pub/2009/0/key.zip>.
Радио 6-2009