Рассмотрен простой эффективный дубликатор домофонных электронных ключей с рабочей схемой. На видео продемонстрирована готовая сборка и проверка в работе.

В интернете немало неплохих схем для этой функции, но, во-первых, они сложные, во-вторых не все они рабочие. Автор данного видео-урока сначала пытался собрать дубликатор ключей на конструкторе Arduino, но по каким-то причинам у него это не получилось, поэтому сделал более простое, но полностью рабочее устройство для тех, кто занимается вопросами, связанными с установкой домофонов.

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

Особенности простого копировальщика для ключей домофона

Множество заготовок были куплены на АлиЭкспресс, стоит они недорого. Была найдена простая схема такого дубликатора, которую можно собрать буквально за 5 минут. Заготовки приобретены в этом китайском магазине , там же есть нужный для работы устройства программатор.

Основа или сердце данного копировщика – микроконтроллер.

Подойдет 628, 648 или 88. Естественно, если просто устройство соберете, оно работать не будет. Необходимо в этот микроконтроллер записать программу. Для этого потребуется программатор, который подсоединяется к компьютеру для прошивки. В Интернете можно найти инструкции по пользованию программатором. Стоит он 10-15 долларов. Любой начинающий радиолюбитель сможет прожить этот микроконтроллер а также повторить эту схему дубликатора.

Как видно на схеме и фото, в схеме есть 3 светодиода – красный, желтый и зеленый.

Красный светодиод светится тогда, когда есть питание в самой системе; желтый светится, когда он находится в режиме считывания ключа. А зеленый светится, когда запись или дублирование ключа прошло успешно. Мигание светодиодов происходит, когда заготовка одноразовая неперезаписываемая. Все заготовки, приобретенные на AliExpress перезаписываемые.

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

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

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

Вторая часть (видео запускается).

Схема и обсуждение на форуме этого дубликата .

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

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

Зачем нужен дубликатор ключей?

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

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

В глобальной сети Интернет существует множество различных проектов того, как используя Arduino, собственноручно сделать копию ключа к домофону. Задача не такая уж и сложная, как это кажется на первый взгляд.

Нужно просто узнать номер-идентификатор оригинального ключа и присвоить его дубликату. Система домофона будет распознавать такой ключ как «свой» и произведет открывание двери.

Процедура считывания с ключа, а также запись на него идентификатора выполняются с применением только однопроводного интерфейса 1-wire. Благодаря этому принципиальная схема будущего дубликата домофонного ключа является достаточно простой.

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

Как изготовить дубликатор на основе Arduino

Чтобы изготовить дубликатор домофонных ключей на Arduino Uno или Nano следует провести отдельную работу с аппаратной частью будущего устройства, а затем и с программной.

Аппаратная часть

Создать компактный дубликат ключа к домофону можно с помощью модуля Arduino Nano, который помещен в корпус от нефункционирующего USB-хаба. Ключ в таком исполнении является достаточно компактным и удобным в использовании.

Для подключения устройства к COM-терминалу, а также для подачи питания на него используется USB-кабель. На корпусе дубликатора ключа следует установить нефиксируемую кнопку, которая будет использоваться в тех случаях, когда нужно выполнить переключение режимов «чтения»/«записи»/«восстановления».

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

Электронная схема устройства будущего дубликатора отличается своей простотой. Она включает в свой состав линию обмена данными 1-wire, к которой подается питание величиной +5В через транзистор, номинал которого может составить 1÷4,5 кОм.

Оптимальным вариантом будет среднее значение сопротивления резистора 2,2 кОм. Светодиод режимов подключается через ограничивающий резистор оптимального номинала. Кнопка переключения режимов подключается к контактам D2 и GND.

Программная часть

В прошивке устройства можно без изменений оставить часть кода, которая отвечает за процессы чтения и записи данных в электронный ключ через протокол 1-wire, а также ту, которая обеспечивает функционирование модуля.

Остальная часть кода переписывается под собственные потребности, используя для этого стандартную Arduino-библиотеку OneWire. Скетч для программирования модуля Arduino, используемого для дубликатора ключа можно написать самостоятельно или подыскать в интернете готовый вариант, который можно оптимизировать «под себя».

Созданный и запрограммированный модуль на основе Arduino позволит:

  1. выполнять чтение с оригинального ключа его ID с последующей перезаписью в подготовленную «болванку» ключа;
  2. записывать универсальный ID, который задается в скетче;
  3. обеспечивать защиту случайного перезаписывания ID некорректным значением;
  4. восстанавливать несчитываемые ключи после некорректной записи идентификатра;
  5. вводить ID номер в ручном режиме;
  6. поддерживать работу без COM-терминала при условии наличия источника постоянного тока с напряжением 5 В, которое подается через USB-разъем.

Как работать с устройством

Дубликатор домофонных ключей своими руками на Arduino может использоваться как с COM-терминалом, так и без него. Чтобы работать с COM-терминалом, на компьютер предварительно нужно установить соответствующие драйверы для используемой платы Arduino.

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

После выполненных настроек устройства, его следует подключить к персональному компьютеру и запустить терминал COM-порта. Модуль Arduino при этом автоматически перезагрузится. В процессе загрузки светодиодный индикатор несколько раз мигнет.

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

Через терминал пользователю будут доступны следующие команды:

  • процесс загрузки в буфер универсального идентификатора;
  • переключение между режимами чтения и записи;
  • переход в режим для ручного ввода ID-идентификатора;
  • переход к режиму восстановления нечитаемого ключа;
  • вывод справки по используемым командам.

Считывание ключа

Чтобы сделать дубликатор домофонных ключей на Ардуино, нужно изначально произвести копирование ID-идентификатора с оригинального ключа. Для того чтобы произвести считывание ключа нужно приложить его к контактной площадке устройства.

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

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

Записать ключа

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

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

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

Если операция прошла успешно, он будет соответствовать тому идентификатору, который был ранее считан из оригинального домофонного ключа. Если записываемый ID-код был некорректным или произошла ошибка записи, то в терминале будет выведено соответствующее сообщение и процедура записи будет отменена.

Благодаря этому устройство предохраняет домофонный ключ от записи в него некорректной информации.

Восстановление нечитаемого ключа

Чтобы произвести восстановление нечитаемого домофонного ключа нужно переключить устройство в соответствующий режим, используя для этого специальную команду в СОМ-терминале или посредством удерживания нажатой кнопки на лицевой панели устройства. Далее следует приложить ключ к контактной площадке.

Если он работоспособен и из него можно считать ID-код, то это произойдет как в обычном режиме чтения, после которого на терминале будет отображен соответствующий 16-значный идентификатор. Если же ключ не считывается, то соответственно никакая процедура не будет реализована до конца и на терминале код отображаться не будет.

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

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

Другие операции

Загрузка в буфер универсального ID-кода. Эту процедуру можно осуществить посредством выполнения соответствующей команды в терминале или же при перезагрузке устройства, если универсальный ID-идентификатор был прописан в скетче.

Копирование домофонных ключей Arduino можно выполнять и без наличия оригинала. Для этого достаточно знать его ID-идентификатор который прописывается в скретч и используется как универсальный код.

Устройством предусмотрена возможность ручного ввода ID-идентификатора. Для этого в терминале нужно задать соответствующую команду после исполнения которой можно будет вводить любой ID-код в 16-значном виде.

Заключение

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

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

Видео: Простой дубликатор домофонных ключей на Arduino Nano

Всем доброго времени суток!
Хочу предоставить Вашему вниманию дубликатор (копировальщик) ключей от домофона.
Копировальщик умеет считывать/записывать на брелок или карту.
Давно хотел опробовать недорогое устройство для копирования ключей от домофона. И вот этот момент настал, итак приступим.

Заказ пришел за 3 недели.

Ключи от домофона. Небольшой ликбез.

Ключи бывают:

  • Контактными. Официальное название Touch memory (сокр. TM) или iButton
(т. е. их надо прикладывать к считывателю)
К ним относятся:

Dallas.

В большинстве случаев под TM подразумевается ключ семейства Dallas (например, DS1990A). С этими ключами работает множество устройств: Vizit, Eltis, Z-5R, С2000-2 и др.

Cyfral.

Эти домофоны работают только с ключами DC2000А и Цифрал-КП1.

Metakom.

Под эти домофоны разработаны ключи К1233КТ2. Эти ключи годятся и для многих других контроллеров.

Резистивные.

Есть экзотические домофоны, работающие с резистивными ключами. Вместо кода с них считывается сопротивление. Без сомнения, это контактные ключи, но я бы не назвал их Touch memory.
  • Бесконтактные. Официальное название RFID.
(их надо просто подносить к считывателю на расстояние 2-3 см).

Выпускаются в форме карт, брелоков, браслетов и пр. Бытовое название «карточки» и «капельки» (брелоки). Ключи действующие до 10-15 см называются Proximity (ближнего действия), а действующие до 1 м - Vicinity (дальнобойные). В домофонах используются исключительно ключи Proximity, и этот термин стал чуть ли не синонимом «бесконтактного ключа».

В мире Proximity тоже нет единства форматов:

EM-Marin

самый популярный на сегодня формат.

HID

аксакал среди бесконтактных ключей.

MIFARE

перспективный формат. Именно к нему относятся бесконтактные смарт-карты.

Данное устройство предназначено ИСКЛЮЧИТЕЛЬНО для копирования бесконтактных ключей с частотой 125KHz.
Никакие другие ключи скопировать не получится.

Содержимое посылки:






Комплект поставки:

- RFID 125KHz EM4100 ID Card Copier;
- перезаписываемы брелки 6шт;
- перезаписываемые карточки 6шт.;
- инструкция (англо-китайская).
Батарейки ААА в комплект не входят.

Внешний вид прибора:






Внутренности прибора:










Прибор во включенном положении:


(горит красный огонек, значит прибор включен)

Внутренности ключа:


Инструкция:




  • Процесс копирования:
1. Вставляем две батарейки ААА.
2. Включаем тумблер, расположенный с правой стороны (загорается красный индикатор с надписью POWER и издается два коротких звуковых сигнала).
3. Подносим карточку или брелок к левой боковине, на уровне надписи POWER.
4. Нажимаем кнопку «READ». В ответ дубликатор пискнет 2 раза и загорается зеленый светодиод с надписью «PASS»
5. Убираем карточку или брелок с которого считали метку.
6. Подносим к копировальщику перезаписываемую карточку или брелок. Нажимаем кнопку «WRITE». На время загорится желтый светодиод с надписью BUSY и опять и раздастся двойной писк. Всё новом брелоком или карточкой можно пользоваться.

Видео процесса считывания и записи:

Итог.

Всё прекрасно работает. Если надо сделать несколько копий ключей RFID 125KHz, смело можете покупать, тем более что в комплекте 6 брелоков и 6 карт, а средняя цена за одну копию 100 рублей, выгода очевидна. Если брелоки или карточки закончатся на просторах интернета можно купить в пределах 20р.
Перед покупкой данного устройства рекомендую узнать частоту и тип вашего ключа, иначе Вы выбросите деньги на ветер.

Если обзор вам понравился, или помог в выборе устройства ставим лайки, это лучшая Ваша награда моего труда.
Всем спасибо за внимание!

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Планирую купить +88 Добавить в избранное Обзор понравился +44 +83

  • Стилус-насадка для носа - гаджет для тех, кто постоянно мечтал иметь лишний палец на лице...


  • Titan Sphere - продукт скоро разорившейся компании SGRL, неудавшаяся попытка сообщить новое слово в сфере джойстиков...

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


  • Существуют ли в действительности ненужные органы? Вряд ли кому-то захочется расстаться со своим аппендиксом, пока он е...

  • «Мать всех демонов», 1968 год...


  • Будущее с инопланетянами - почему бы и нет? Кое-какие уверены, что инопланетяне уже среди нас...

23.05.2012

Рассмотрен несложный действенный дубликатор домофонных электронных ключей с рабочей схемой. На видео показана проверка и готовая сборка в работе. В сети много хороших схем для данной функции, но, во-первых, они сложные, во-вторых не все они рабочие.

Создатель данного видео-урока пробовал собрать дубликатор ключей на конструкторе Arduino, но не известно почему у него это не получилось, не смотря на то, что в сети имеется видео, где продемонстрирован трудящийся прибор на Ардуино.

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

Множество заготовок были приобретены на АлиЭкспресс, стоит они недорого. Нашлась несложная схема для того чтобы дубликатора, которую возможно собрать практически за 5 мин.. Заготовки куплены в этом китайском магазине, в том месте же имеется необходимый для работы устройства программатор.

обсуждение и Схема на форуме этого дубликата тут. База либо сердце данного копировщика - микроконтроллер.

Подойдет 628, 648 либо 88. Конечно, в случае если легко устройство соберете, оно трудиться не будет. Нужно в данный микроконтроллер записать программу. Для этого потребуется программатор, что подсоединяется к компьютеру для firmware.

В сети возможно отыскать инструкции по пользованию программатором. Стоит он 10-15 долларов. Любой начинающий радиолюбитель сможет прожить данный микроконтроллер и повторить эту схему дубликатора.

Как видно на схеме и фото, в схеме имеется 3 светодиода - красный, желтый и зеленый.

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

Все заготовки, купленные на AliExpress перезаписываемые.

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

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

Прикладываем копируемый ключ, индикатор продемонстрировал считывание. Имеется кнопка для дублирования данного ключа. Прикладываем чистую заготовку, светодиод продемонстрировал, что случилось дублирование. Для опыта был скопирован ключ на лифт и проверен.

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

Вторая часть

Случайные записи:

Простой дубликатор домофонных ключей на arduino nano.

Ты потерял ключи от домофона и не можешь сделать дубликат. Хочешь ходить в гости к подруге, но у тебя нет ключей от её подъезда. Либо просто тебе нужно подосрать твоему недругу, но ты не можешь попасть к нему в дом, тогда эта статья для тебя.

Пара слов о принципе работы…
Бытует мнение, что в таблетках от домофона находится магнит, и он открывает дверь. Нет, это не так. Таблетка представляет собой ПЗУ, с жёстко зашитым в ней ключом. Называется это ПЗУ — Touch Memory, марки DS1990A. DS1990A — это и есть марка домофонных ключей. Общается с домофоном по шине one-wire (однопроводной интерфейс). Эта шина разработана фирмой Dallas и позволяет общаться двум устройствам всего по одному проводу. Если устройство пассивное (как в нашем случае), то оно ещё и передаёт ему питание по этому проводу. Надо ещё заметить, что необходим ещё общий провод (чтобы цепь замыкалась), но, как правило, все земли устройств подключённых к этой шине соединены воедино. В ключе находится конденсатор на 60 пикофарад, который обеспечивает кратковременное питание ключа на момент ответа. Но ведущее устройство должно постоянно (не реже чем в раз 120 микросекунд) генерировать сигнал единицы, для зарядки этого конденсатора, чтобы ПЗУ в таблетке продолжало питаться.

Внутреннее устройство таблетки

Организация шины One-wire
Шина One-wire работает следующим образом. Есть ведущее устройство Мастер, и ведомое устройство, в нашем случае пассивный ключик. Основные сигналы генерирует мастер, сигналы логической единицы и нуля. Ведомое устройство может только принудительно генерировать сигналы нуля (т.е. просто просаживать шину на землю через транзистор). Упрощённая схема ведущего и ведомого устройства показана на картинках.

Схема мастера

Если взглянуть на схему, нетрудно заметить, что по умолчанию у мастера стоит всегда +5 вольт, а ля логическая единица. Для передачи логического нуля мастер через транзистор замыкает шину на землю, а для передачи единицы — просто размыкает. Это сделано для того, чтобы обеспечить питание ведомого устройства. Ведомое устройство сделано аналогично, только оно не генерирует +5 вольт. Оно может только просаживать шину на землю, тем самым, передавая логический ноль. Логическая единица передаётся просто «молчанием» устройства.

Протокол работы
Сразу можно однозначно заметить, что парадом правит только Мастер, сам ключик DS1990A либо удерживает землю (мастер её сам выставляет шину в ноль), либо просто отмалчивается, в случае, если он хочет передать единицу, то он просто молчит. Смотрим рисунок.

Пример чтения домофоном ключа.

После генерации ключом импульса PREFERENCE, мастер девайс выжидает некоторое время и выдаёт команду на чтение ПЗУ, обычно это код семейства, в нашем случае 33H. Обрати внимание, как сделана передача нуля и единицы. В любом случае импульс «роняется» на землю, но если передаётся единица, то он быстро восстанавливается (около 1 микросекунды), если же должен быть ноль, то импульс некоторое время «висит» на земле, затем возвращается опять в единицу. Возвращение в единицу нужно для того, чтобы пассивное устройство постоянно пополняло энергию конденсатора, и на ней было питание. Далее домофон выдерживает некоторое время и начинает генерировать импульсы приёма информации, всего 64 импульса (т.е. принимает 64 бита инфы). Ключ лишь должен правильно сопоставить длительности. Если он хочет вывести ноль, то он удерживает шину некоторое время в нуле, если же нет, то просто молчит. Всё остальное за него делает домофон.

Содержимое ключа DS1990A.
В домофонах, и просто устройствах, где для открытия дверей используется подобные устройства, применяется ключ стандарта DS1990A. Это устройство представляет собой 8-ми байтовое ПЗУ, с информацией записанной лазером.


Схема дампа ключа.

В младшем байте содержится код семейства. Для DS1990A он всегда будет равен 01h. В шести последующих байтах содержится серийный номер ключа. То самое сокровенное, что идентифицирует ключик. Последний байт называется CRC, это контроль чётности, обеспечивающий подлинность переданных данных. Он вычисляется из семи предыдущих байт. К слову заметить, что это не единственный стандарт. Существуют перезаписываемые ПЗУ, на которых можно носить информацию, также есть ключи шифрования. Но всё многообразие таблеток Dallas просто нереально рассмотреть в рамках одной статьи, о них можно почитать на диске.

Физическое устройства ключа.
Наверное, всё вышесказанное отбило всякое желание заниматься эмуляторами ключей, ведь ключ надо прочитать, а это такой геморрр. Оказывается нет! Производители Dallas позаботились о нас и всю необходимую для нас информацию разместил непосредственно на ключе, при том в шестнадцатеричной системе! Она выгравирована на нём и её вполне можно прочитать, а потом в дальнейшем зашить в наш замечательный эмулятор.

Морда ключа

Нас интересует из всей этой информации следующее:

CC = CRC — это байт контроля чётности 7-й байт в прошивке
SSSSSSSSSSSS = двенадцать ниблов //нибл = 1/2 байта// серийного номера, т.е. самого ключа в хекс кодах.
FF = код семейства, в нашем случае равен 01h — нулевой байт нашего ключа.

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

Эмулятор.
Вот и дошли мы до самого вкусного — эмулятора ключей от домофона. Сначала я нашёл на каком-то сайте готовый эмулятор, зашил его в свой АТ89С51 и он не заработал (что не удивительно). Но это не спортивно юзать чужие прошивки и отлавливать чужие, специально оставленные, баги в коде. По сему я начал делать свои эмуляторы и писать под них свои программы. В общем, я попробовал сделать эмулятор на 6 различных микроконтроллерах, разных архитектур, принадлежащих двум семействам AVR и i8051, все производства Atmel. Заработал не на всех, и программ было написано уйма. По началу ставились вообще наполеоновские задачи сделать универсальный эмулятор с возможностью подборки ключа, но потом я оставил эту затею в силу её геморойности и бессмысленности, пусть ей займутся другие люди, кого заинтересует данная статья. Но себестоимость эмулятора, не считая затраченных трудов меньше 70-80 ре, можно даже уложиться в 30 ре, если делать, например на ATtiny12.

Принцип действия эмулятора.
Мы достаточно подробно рассмотрели принцип работы домофона, и соответственно не составит большой проблемы описать алгоритм программы эмулятора DS1990A. Смотрим внимательно диаграмму, и думаем, что надо сделать. А делать надо следующее. Висящая в воздухе нога микроконтроллера (пока не присоединена к земле, импульс ресета) будет считаться контроллером логической единицей. Значится так, мы после подачи питания на котроллер должны ждать того пока наша ножка не уйдёт на землю, а ля в ноль. Как мы услышали ноль, радуемся, ждём некоторое время и переводим порт из режима чтения в режим записи. Затем роняем шину в ноль, и держим её некоторое время — генерим импульс PRESENCE (длительности импульсов смотри в даташите). Дальше снова переводим шину в режим чтения, и ждём что же нам скажет мастер — домофон. Он нам скажет команду чтения, состоящую из 8-ми бит. Декодировать её не будем, т.к. в 99,999% случаев он нам скажет команду дать свой дамп, а ля 33H, просто отсчитываем 8-мь импульсов и не паримся. Дальше ждём. И начинается самое сложное и интересное — надо быстро смотреть, что нам говорит домофон и отвечать ему тоже быстро. Нам нужно побитно выдать серийный номер, состоящий из 8-ми байт, о которых я говорил выше. Я это делал следующим образом (не важно, какой микроконтроллер, принцип везде один будет), загружал байт в какой-нибудь свободный регистр, и сдвигал его вправо, и смотрел бит переноса. Как только домофон роняет шину в ноль, то если у меня флаг переноса установлен в еденицу, то я просто отмалчиваюсь на этот импульс, и жду генерации следующего импульса чтения бита от мастера. Если же у меня во флаге переноса находиться ноль, то после того как домофон уронит шину на ноль, я перевожу порт микроконтроллера в режим вывода и принудительно удерживаю шину в нуле некоторое время, потом отпускаю и обратно перевожу порт контроллера в режим чтения. По длительности импульса в земле устройство мастер понимает, передана была ли ему единица или нуль. В принципе всё, дальше домофон должен радостно запипикать и открыть дверь.

Практика.

Плата тестер. Видня надпись dallas.

После небольшого гемороя и войны с отладчиком получился код. Вот пример кода вывода данных домофону на AT89C2051. (Вообще AT89C2051 это хоть и популярный, но устаревший контроллер. Один из первых которые я программировал. Периферии минимум, памяти тоже всего ничего. Шьется только высоковольтным программатором. Хотя есть его новая замена AT89S2051 его уже можно прошить внутрисхемно через какой нибудь AVR ISP, а может и через AVRDUDE — не проверял. Самое любопытное в том, что он совместим по ногам с ATTiny2313 так что код можно портировать и на Тиньку. прим. DI HALT)

DI HALT:
Этот адов код мы писали в с Длиным в далеком 2006 у него в квартире. Уржались до икоты над своими тупняками. Я тогда еще впервые пощупал AVR. Сидел фигачил на совершенно незнакомом мне ассемблере процедуры чтения из EEPROM, Длиный же ковырял демоплатку для своего будущего эмулятора. Особо запомнился мой прикол с вачдогом, когда у меня МК сбрасывался во время записи в ЕЕПРОМ и выпиливание микросхемы i2c памяти из платы с помощью отрезного круга. Эх… ничо, сгоняю в Москву мы снова отожгем!

;======================================== ; Выдача в линию серийника; in: R0- адресс где лежит серийник с типом таблетки и CRC8 ; USES: A,B,R0,R1,R2 ;======================================================== DEMUL_SendSer: mov R2,#8 SS3: mov ACC,@R0 mov R1,#8 SS2: JB TouchFuck,$ ;ожидаем, когда шину уронят в ноль 1->0 RRC A ;C:=A.0; shift A; mov TouchFuck,C ;TouchFuck:=C; MOV B,#9 DJNZ B,$ ;Delay 20 us setb TouchFuck JNB TouchFuck,$ ;цикл пока 0 DJNZ R1,SS2 inc R0 DJNZ R2,SS3 ret ;=======================================================

Результаты.
В результате я получил множество эмуляторов. Правда, некоторые ещё из них надо доводить до ума. Хотя несколько 100% рабочие. Примеры эмуляторов ты можешь поглядеть на фотках.



Фотографии эмуляторов

Наиболее интересна проверка CRC, которая осуществляется домофоном. Тебе понадобится это, если ты захочешь поставить Dallas замок например на свой комп. Пример рассчёта CRC на A89C2051 (хотя данный код будет работать на всех микроконтрерах семейства i8051.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 DO_CRC: PUSH ACC ;save accumulator PUSH B ;save the B register PUSH ACC ;save bits to be shifted MOV B,#8 ;set shift = 8 bits ; CRC_LOOP: XRL A,CRC ;calculate CRC RRC A ;move it to the carry MOV A,CRC ;get the last CRC value JNC ZERO ;skip if data = 0 XRL A,#18H ;update the CRC value ; ZERO: RRC A ;position the new CRC MOV CRC,A ;store the new CRC POP ACC ;get the remaining bits RR A ;position the next bit PUSH ACC ;save the remaining bits DJNZ B,CRC_LOOP ;repeat for eight bits POP ACC ;clean up the stack POP B ;restore the B register POP ACC ;restore the accumulator RET

DO_CRC: PUSH ACC ;save accumulator PUSH B ;save the B register PUSH ACC ;save bits to be shifted MOV B,#8 ;set shift = 8 bits ; CRC_LOOP: XRL A,CRC ;calculate CRC RRC A ;move it to the carry MOV A,CRC ;get the last CRC value JNC ZERO ;skip if data = 0 XRL A,#18H ;update the CRC value ; ZERO: RRC A ;position the new CRC MOV CRC,A ;store the new CRC POP ACC ;get the remaining bits RR A ;position the next bit PUSH ACC ;save the remaining bits DJNZ B,CRC_LOOP ;repeat for eight bits POP ACC ;clean up the stack POP B ;restore the B register POP ACC ;restore the accumulator RET

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

DI HALT:
Дела давно минувших дней, преданья старины глубокой… Длиный — WDR! (понятно будет только посвященным;)))))

Доредакционная версия статьи из журнала Хакер