Аналог электронного ключа "Метаком ТМ-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