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


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


  • 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.

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

Если по какой-то причине дверь подъезда, ворота частного дома или замок на работе перестали деблокироваться, часто возникает вопрос: как перепрограммировать ключ от домофона? Этот процесс для рядового пользователя совсем не означает сложного вмешательства и участия в программировании личного идентификационного устройства.

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

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

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

RFID

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

По дальности срабатывания ключи ранжируются:

  1. с зоной идентификации в 100-150 мм, распространенный формат, тип Proximity;
  2. с дальностью определения до 1 м, тип Vicinity.

Не смотря на такие отличия в дальности, работа всех идентификаторов проходит по простой схеме.

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

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

Простого способа, как перепрограммировать ключ от домофона класса RFID — просто не существует для большинства типов изделий. Идентификатор формируется напыленным в заводских условиях чипом, количество уникальных комбинаций (карт и брелков) — огромно, изменения в коде не предусматриваются.

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

Touch-Memory

Touch-Memory - это знакомые большинству людей контактные таблетки. Внутри такого ключа также расположен микрочип.

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

Уникальный код, прошитый в таблетке — передается и проверяется на соответствие одному из записанных в памяти устройства. Если опознавание прошло — дверь разблокируется.

Испортить Touch-Memory таблетку можно воздействием сильного статического напряжения, приложив таблетку к наэлектризованной одежде. Сделать это достаточно сложно, поскольку импульс должен пройти между определенными точками контактной площадки, однако такая причина поломок — самая распространенная.

Таблетка с чипом очень прочная, повредить ее механически сложно, ключ, кроме воздействия статики — можно сжечь в микроволновке. Любым другим воздействиям, включая мощнейшие ниодимовые магниты — Touch-Memory переносит без последствий.

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

Touch-Memory делятся на классы. Они зависят не от внутренней структуры и принципов работы, а от производителей, каждый из которых создает внутреннюю схему с определенными характеристиками и методикой формирования уникального кода.

Широко используются Touch-Memory следующих типов:

  • с маркировкой, начинающейся на DS (Dallas), применяются в огромном числе моделей Vizit, Eltis, С2000 и других;
  • с маркировкой DC, а также Цифрал КП-1 — данные Touch-Memory предназначены только для домофонов Cifral;
  • серии К, широко используемый в системах контроля доступа Metacom и других домофонах.

Аналогично существуют и классы, форматы RFID, к примеру, самый старый HID, популярный EM-Marin, а также используемый в срабатывающих с дальнего расстояния картах Mifare. Поэтому, прежде чем выяснять, как запрограммировать личный ключ от домофона от подъездной двери — сначала нужно приобрести Touch-Memory или RFID совместимого формата.

Программирование ключа от домофона своими руками

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

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

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

Алгоритм действий

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

Но есть набор стандартных действий для домофонов распространенных марок.

  1. Rainmann, Raikman — нажимается вызов, вводится 987654, после звукового сигнала — 123456. Если появилось приглашение Р на дисплее — нажимается 2, прикладывается таблетка, нажимается #, <номер квартиры>, #. Запись в память производится кнопкой *;
  2. — набирается #-999, после звука-приглашения набирается код 1234 (у отдельных серий — 6767, 0000, 12345, 9999, 3535). После этого нажимается 3, после паузы — номер квартиры, прикладывается ключ, нажимается #,*. Если заводской код (1234 и другие) — не принят, домофон издаст двухтональный сигнал;
  3. , — держать кнопку вызов до реакции (звук, приглашение на дисплее), ввести 1234, затем номер квартиры, вызов. В ответ на приглашение прислонить ключ, выйти из меню нажатием кнопки *.

В самых современных версиях домофона Cifral используется достаточно сложные кодовые наборы. Методика, как закодировать ключ от домофона от подъездной двери, выглядит так: вызов, 41, вызов, 14102, 70543.

Затем следует дождаться появления на экране приглашения, нажать 5, ввести номер квартиры, после надписи на дисплее Touch — приложить ключ. О записи в память свидетельствует звуковой сигнал.

Заключение

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

Доступны разнообразные методики применения ключей. Один и тот же может использоваться на нескольких домофонах одной марки, при условии, что произведена регистрация на каждом. Главное, чтобы Touch-Memory таблетка или RFID карта, брелок — имели совместимы формат с устройством на двери.

Видео: Как сделать дубликат ключа от домофона

Копировщик домофонных ключей

Копировщик домофонных ключей

Присоединяйтесь к нашей группе в Facebook: https://www.facebook.com/groups/463937897339644

Примерно два года назад, в рамках цикла публикаций о копировании электронных ключей, была размещена , разработанным Recto - участником форума сайта Kazus.ru. C тех пор проект получил дальнейшее развитие - как в плане элементной базы, так и в плане выполняемых функций. На сегодняшний день он ни в чем не уступает промышленнымобразцам, выполняющих схожие задачи. Но в отличие от промышленных изделий, которые к тому же стоят немалых денег, копировщик Recto является открытым проектом и его собрать под силу даже начинающим радиолюбителям, при условии, что у них будет возможность прошить микроконтроллер. Впрочем, сейчас это не такая уж и проблема. Зато в итоге вы получите устройство, которым можно сделать копию практически любого электронного ключа для домофона или иного устройства контроля доступа.

Предлагаемый копировщик (дубликатор) позволяет читать и записывать практически все существующие в настоящее время «домофонные» контактные ключи (Touch Memory ) форматов Dallas -1990 A , Метаком и Cyfral . Поддерживается запись на заготовки: ТМ-2004, TM -08, TM -08 v 2, RW -1990, RW -1990.1, RW -1990.2 и ТМ-01.

Помимо основных функций, указанных выше, устройство позволяет:

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

2. Производить различные операции с буфером - редактировать, создавать и сравнивать ключи.

3. Сохранять базу ключей из EEPROM на внешний носитель, а так же загружать базу ключей в EEPROM с внешнего носителя. В качестве носителя информации используется заготовка ТМ-2004 или ключ ТМ-2003, имеющие дополнительную память 1 кбит.

4. Включать/отключать режим контроля CRC . Отключение этого режима позволяет читать и записывать любые ключи Dallas , в т.ч. имеющие некорректную CRC .

5. Программное выключение питания.

Управление устройством организовано через меню. Всё функции имеют простой, интуитивно понятный интерфейс и снабжены подсказками. Новая версия работает на микроконтроллерах PIC 16 F 648 A или PIC 16 F 88 , в архив проекта вложены оба варианта прошивки.

Описание схемы.

Особенностью данного устройства является то, что его можно собрать как в минимальной , так и в полной конфигурации , используя те же прошивки. Минимальная конфигурация предполагает, что устройство будет использоваться без ЖК-дисплея, а вся информация будет выводиться на три светодиода (рис. 1).

Рис. 1

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

Описание минимальной конфигурации приведено в отдельном файле, далее речь пойдет о полнофункциональной версии устройства, принципиальная схема которой приведена на рис. 2

Рис. 2

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

Красный (HL 1 ) - индикатор питания «POWER », а так же индикатор разряда батареи. Если в устройстве реализован детектор снижения напряжения питания, то при его срабатывании индикатор начинает светиться прерывистым светом.

Желтый (HL 2 ) - обозначен как «READ », выдает сигнал о чтении ключа. Загорается и горит постоянно, если в памяти устройства находится ключ. Если индикатор не горит - значит, ключа в памяти нет.

Зеленый (HL 3 ) - обозначен как «WRITE », в режиме записи сигнализирует об окончании процесса. При этом, если индикатор горит обычным светом - запись проведена успешно, а если мерцающим - ошибка. В режиме чтения этот светодиод короткими вспышками отмечает каждое чтение ключа.

В качестве дисплея может быть использован любой ЖК-индикатор 16х2 на базе контроллера HD 44780 с русифицированной таблицей символов, либо совместимый с ним. В авторском варианте, например, использовался дисплей FDCC1602B-FLYYBW-51LR. Можно, конечно, использовать дисплей и без «кириллицы», с учетом такого варианта к архиву проекта приложены «адаптированные» прошивки, с сообщениями на английском языке.

На печатной плате полной конфигурации разведены 4 отверстия для крепления дисплея, расстояние между отверстиями - 80 х 31 мм. Специального разъема под дисплей не предусмотрено, поскольку конструкций дисплеев довольно много, и каждый имеет своё расположение контактов. Дисплей соединяется с платой при помощи небольшого жгута или шлейфа, который подпаивается к подписанным контактам на плате.

Некоторые детали, отмеченные на схеме «звездочкой», потребуют подбора под конкретные условия. Во-первых, номинал и мощность резистора R 9 , ограничивающего ток подсветки дисплея, подбирается индивидуально под каждый конкретный дисплей. Например,для моего дисплея потребовался резистор сопротивлением около 10 Ом.

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

И, наконец, если будет использоваться детектор разряда батареи, потребуется подобрать резистор R 4 и стабилитрон VD 2. При указанных на схеме номиналах детектор срабатывает при падении напряжения ниже 4,7 вольта. Однако, до впаивания в плату, эти детали желательно подобрать на макетке, чтобы выставить нужный конкретно Вам порог срабатывания. Детали детектора необходимо подобрать так, чтобы напряжение, измененное прямо на стабилитроне, составляло около 4,2 вольта (при нормальном питании на входе устройства). То есть, оно должно быть примерно на 0,5 вольта ниже выбранного порога срабатывания детектора.

Контроль за разрядом батарей и управление питанием ЖКИ-дисплея являются дополнительными функциями, которые можно отключить, если для питания устройства используется стационарный источник. При этом, если детектор питания будет исключен из схемы, необходимо подать уровень лог. «1 » на вход А5 (нога 4), чтобы МК всегда «видел» полную батарею. При использовании в устройстве только моей прошивки можно просто соединить ноги 4 и 2 между собой. Данная ситуация отслеживается программно, поэтому ложного срабатывания детектора при нажатии на кнопку S 1 не произойдет.

Чтобы заблокировать функцию управления питанием, необходимо вместо транзистора VT 1 поставить перемычку, замкнув выводы коллектор-эмиттер (если Вы используете предложенную печатку для полной конфигурации). А на вывод 15 МК(линия А6 ) необходимо подать уровень лог. «0», чтобы МК не входил в спящий режим по тайм-ауту. В принципе, можно просто соединить этот вывод с «землей». Однако, для надежности, желательно сделать это через резистор сопротивлением в несколько килоом.

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

Заказ пришел за 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

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

Ключи для домофона, которые мы будем подключать к Arduino (их иногда называют iButton или Touch Memory ), считываются и записываются по однопроводному интерфейсу 1-wire . Поэтому схема подключения очень проста. Нам нужны лишь пара проводов и подтягивающий резистор номиналом 2,2 кОм. Схема соединений показана на рисунке.

Собранная схема может выглядеть примерно так:


2 Считывание идентификатора ключа iButton с помощью Arduino

Для работы с интерфейсом 1-wire существуют готовые библиотеки для Ардуино. Можно воспользоваться, например, этой . Скачиваем архив и распаковываем в папку /libraries/ , расположенную в каталоге Arduino IDE. Теперь мы можем очень просто работать с данным протоколом.

Загрузим в Ардуино стандартным способом этот скетч:

Скетч чтения ключа iButton с помощью Arduino (разворачивается) #include OneWire iButton(10); // создаём объект 1-wire на 10 выводе void setup (void) { Serial.begin(9600); } void loop(void) { delay(1000); // задержка 1 сек byte addr; // массив для хранения данных ключа if (!iButton.search(addr)) { // если ключ не приложен Serial.println("No key connected..."); // сообщаем об этом return; // и прерываем программу } Serial.print("Key: "); for(int i=0; i }

Данный скетч показывает номер ключа для домофона, который подключён к схеме. Это то, что нам и нужно сейчас: мы должны узнать номер ключа, копию которого хотим сделать. Подключим Ардуино к компьютеру. Запустим монитор последовательного порта: Инструменты Монитор последовательного порта (или сочетание клавиш Ctrl+Shift+M).

Теперь подключим ключ к схеме. Монитор порта покажет номер ключа. Запомним этот номер.


А вот какой обмен происходит на однопроводной линии при чтении идентификатора ключа (подробнее - далее):

На рисунке, конечно, не видны все детали реализации. Поэтому в конце статьи я прикладываю временную диаграмму в формате *.logicdata , снятую с помощью логического анализатора и программы Saleae Logic Analyzer и открываемую ей же. Программа бесплатная и скачивается с официального сайта Saleae . Чтобы открыть файл *.logicdata нужно запустить программу, нажать сочетание Ctrl+O или в меню Options (расположено вверху справа) выбрать пункт Open capture / setup .

3 Запись идентификатора ключа Dallas с помощью Arduino

Теперь напишем скетч для записи данных в память ключа iButton.

Скетч записи ключа iButton с помощью Arduino (разворачивается) #include // подключаем библиотеку const int pin = 10; // объявляем номер пина OneWire iButton(pin); // объявляем объект OneWire на 10-ом пине // номер ключа, который мы хотим записать в iButton: byte key_to_write = { 0x01, 0xF6, 0x75, 0xD7, 0x0F, 0x00, 0x00, 0x9A }; void setup(void) { Serial.begin(9600); pinMode(pin, OUTPUT); } void loop(void) { delay(1000); // задержка на 1 сек iButton.reset(); // сброс устройства 1-wire delay(50); iButton.write(0x33); // отправляем команду "чтение" byte data; // массив для хранения данных ключа iButton.read_bytes(data, 8); // считываем данные приложенного ключа, 8х8=64 бита if (OneWire::crc8(data, 7) != data) { // проверяем контрольную сумму приложенного ключа Serial.println("CRC error!"); // если CRC не верна, сообщаем об этом return; // и прерываем программу } if (data & data & data & data & data & data & data & data == 0xFF) { return; // если ключ не приложен к считывателю, прерываем программу и ждём, пока будет приложен } Serial.print("Start programming..."); // начало процесса записи данных в ключ for (int i = 0; i } // Инициализация записи данных в ключ-таблетку iButton: void send_programming_impulse() { digitalWrite(pin, HIGH); delay(60); digitalWrite(pin, LOW); delay(5); digitalWrite(pin, HIGH); delay(50); }

Не забудьте задать номер своего оригинального ключа в массиве key_to_write , который мы узнали ранее.

Загрузим этот скетч в Arduino. Откроем монитор последовательного порта (Ctrl+Shift+M). Подключим к схеме ключ, который будет клоном оригинального ключа. О результате программирования монитор последовательного порта выведет соответствующее сообщение.

Если данный скетч не сработал, попробуйте заменить код после Serial.print("Start programming...") и до конца функции loop() на следующий:

Дополнительный скетч записи ключа iButton с помощью Arduino (разворачивается) delay (200); iButton.skip(); iButton.reset(); iButton.write(0x33); // чтение текущего номера ключа Serial.print("ID before write:"); for (byte i=0; i<8; i++){ Serial.print(" "); Serial.print(iButton.read(), HEX); } Serial.print("\n"); iButton.skip(); iButton.reset(); iButton.write(0xD1); // команда разрешения записи digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); // выведем ключ, который собираемся записать: Serial.print("Writing iButton ID: "); for (byte i=0; i<8; i++) { Serial.print(key_to_write[i], HEX); Serial.print(" "); } Serial.print("\n"); iButton.skip(); iButton.reset(); iButton.write(0xD5); // команда записи for (byte i=0; i<8; i++) { writeByte(key_to_write[i]); Serial.print("*"); } Serial.print("\n"); iButton.reset(); iButton.write(0xD1); // команда выхода из режима записи digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(10); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); Serial.println("Success!"); delay(10000);

Здесь функция writeByte() будет следующей:

int writeByte(byte data) { int data_bit; for(data_bit=0; data_bit<8; data_bit++) { if (data & 1) { digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } else { digitalWrite(pin, LOW); pinMode(pin, OUTPUT); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } data = data >> 1; } return 0; }

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

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

При желании можно переписать программу для ключа другого типа. Для этого воспользуйтесь техническим описанием Вашего типа ключа (datasheet) и изменить скетч в соответствии с описанием. Скачать datasheet для ключей iButton можно в приложении к статье.

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

4 Описание однопроводного интерфейса 1-Wire

Давайте чуть глубже познакомимся с интерфейсом One-wire. По организации он похож на интерфейс I2C: в нём также должно присутствовать ведущее устройство (master), которое инициирует обмен, а также одно или несколько ведомых устройств (slave). Все устройства подключены к одной общей шине. Устройства iButton - всегда ведомые. В качестве мастера чаще всего выступает микроконтроллер или ПК. Скорость передачи данных составляет 16,3 кбит/сек. Шина в состоянии ожидания находится в логической "1" (HIGH). В данном протоколе предусмотрены всего 5 типов сигналов:

  • импульс сброса (master)
  • импульс присутствия (slave)
  • запись бита "0" (master)
  • запись бита "1" (master)
  • чтение бита (master)
За исключением импульса присутствия все остальные генерирует мастер. Обмен всегда происходит по схеме: 1) Инициализация 2) Команды работы с ПЗУ 3) Команды работы с ППЗУ 4) Передача данных.

1) Инициализация

Инициализация заключается в том, что ведущий выставляет условие сброса RESET (на время от 480 мкс или более опускает линию в "0", а затем отпускает её, и за счёт подтягивающего резистора линия поднимается в состояние "1"), а ведомый не позднее чем через 60 мкс после этого должен подтвердить присутствие, также опустив линию в "0" на 60…240 мкс и затем освободив её:


2) Команды работы с ПЗУ

Если после импульса инициализации не пришёл сигнал подтверждения, мастер повторяет опрос шины. Если сигнал подтверждения пришёл, то мастер понимает, что на шине есть устройство, которое готово к обмену, и посылает ему одну из четырёх 8-битных команд работы с ПЗУ:

(*) Кстати, семейств устройств iButton существует довольно много, некоторые из них перечислены в таблице ниже.

Коды семейств устройств типа iButton (разворачивается)
Код семейства Устройства iButton Описание
0x01 DS1990A, DS1990R, DS2401, DS2411 Уникальный серийный номер-ключ
0x02 DS1991 Мультиключ, 1152-битная защищённая EEPROM
0x04 DS1994, DS2404 4 кб NV RAM + часы, таймер и будильник
0x05 DS2405 Одиночный адресуемый ключ
0x06 DS1993 4 кб NV RAM
0x08 DS1992 1 кб NV RAM
0x09 DS1982, DS2502 1 кб PROM
0x0A DS1995 16 кб NV RAM
0x0B DS1985, DS2505 16 кб EEPROM
0x0C DS1996 64 кб NV RAM
0x0F DS1986, DS2506 64 кб EEPROM
0x10 DS1920, DS1820, DS18S20, DS18B20 Датчик температуры
0x12 DS2406, DS2407 1 кб EEPROM + двухканальный адресуемый ключ
0x14 DS1971, DS2430A 256 бит EEPROM и 64 бита PROM
0x1A DS1963L 4 кб NV RAM + счётчик циклов записи
0x1C DS28E04-100 4 кб EEPROM + двухканальный адресуемый ключ
0x1D DS2423 4 кб NV RAM + внешний счётчик
0x1F DS2409 Двухканальный адресуемый ключ с возможностью коммутации на возвратную шину
0x20 DS2450 Четырёхканальный АЦП
0x21 DS1921G, DS1921H, DS1921Z Термохронный датчик с функцией сбора данных
0x23 DS1973, DS2433 4 кб EEPROM
0x24 DS1904, DS2415 Часы реального времени
0x26 DS2438 Датчик температуры, АЦП
0x27 DS2417 Часы реального времени с прерыванием
0x29 DS2408 Двунаправленный 8-разрядный порт ввода/вывода
0x2C DS2890 Одноканальный цифровой потенциометр
0x2D DS1972, DS2431 1 кб EEPROM
0x30 DS2760 Датчик температуры, датчик тока, АЦП
0x37 DS1977 32 кб защищённой паролем EEPROM
0x3A DS2413 Двухканальный адресуемый коммутатор
0x41 DS1922L, DS1922T, DS1923, DS2422 Термохронные и гигрохронные датчики высокого разрешения с функцией сбора данных
0x42 DS28EA00 Цифровой термометр с программируемым разрешением, возможностью работать в режиме подключения к последовательному каналу и программируемыми портами ввода/вывода
0x43 DS28EC20 20 кб EEPROM

Данные передаются последовательно, бит за битом. Передачу каждого бита инициирует ведущее устройство. При записи ведущий опускает линию к нулю и удерживает её. Если время удерживания линии равно 1…15 мкс, значит записывается бит "1". Если время удерживания от 60 мкс и выше - записывается бит "0".

Чтение битов также инициируется мастером. В начале чтения каждого бита мастер устанавливает низкий уровень на шине. Если ведомое устройство хочет передать "0", оно удерживает шину в состоянии LOW на время от 60 до 120 мкс, а если хочет передать "1", то на время примерно 15 мкс. После этого ведомый отпускает линию, и за счёт подтягивающего резистора она возвращается в состояние HIGH.

Вот так, например, выглядит временная диаграмма команды поиска Search ROM (0xF0). Красным цветом на диаграмме отмечены команды записи битов. Обратите внимание на порядок следования битов при передаче по 1-Wire: старший бит справа, младший - слева.


3) Команды работы с ППЗУ

Прежде чем рассматривать команды для работы с ППЗУ iButton, необходимо пару слов сказать о структуре памяти ключа. Память разделена на 4 равных участка: три из них предназначены для хранения трёх уникальных ключей, а четвёртый - для временного хранения данных. Этот временный буфер служит своеобразным черновиком, где данные готовятся для записи ключей.


Для работы с ППЗУ существуют 6 команд:

Название Команда Назначение
Записать во временный буфер (Write Scratchpad) 0x96 Используется для записи данных во временный буфер (scratchpad).
Прочитать из временного буфера (Read Scratchpad) 0x69 Используется для чтения данных из временного буфера.
Копировать из временного буфера (Copy Scratchpad) 0x3C Используется для передачи данных, подготовленных во временном буфере, в выбранный ключ.
Записать пароль ключа (Write Password) 0x5A Используется для записи пароля и уникального идентификатора выбранного ключа (одного из трёх).
Записать ключ (Write SubKey) 0x99 Используется для непосредственной записи данных в выбранный ключ (минуя временный буфер).
Прочитать ключ (Read SubKey) 0x66 Используется для чтения данных выбранного ключа.

4) Передача данных

Продолжение следует...

5 Возможные ошибки при компиляции скетча

1) Если при компиляции скетча возникнет ошибка WConstants.h: No such file or directory #include "WConstants.h", то, как вариант, следует в файле OneWire.cpp заменить первый блок после комментариев на следующий:

#include #include extern "C" { #include #include }

2) Если при компиляции появляется ошибка class OneWire has no member named read_bytes, то найдите и попробуйте использовать другую библиотеку для работы с интерфейсом OneWire.