С появлением домофонных систем появилась необходимость в дубликаторах. Дубликаторы - это устройства, созданные с целью копирования домофонных ключей. Приобрести их можно как для изготовления ключей в небольших количествах, например, для дома или офиса, так и для выполнения больших заказов в мастерских.
Принцип работы копировщика можно уяснить, разобравшись с принципом работы самого домофона. Домофон посылает сигнал открыть дверь тогда, когда получает некую информацию с ключа. Мы подносим домофонный ключ к считывающей панели - распознается код ключа - двери разблокированы. Индивидуальный код ключа задается уже в процессе создания. Таким образом, каждый ключ уникален. Когда устанавливается подъездный домофон, в его базу записываются коды ключей, которые выдаются жителям. После этого открыть дверь без наличия ключа, внесенного в базу или специального кода, состоящего из цифр, - задача нереальная. Но что делать, если ключ утерян или сломан? Тут-то и приходят на помощь дубликаторы домофонных ключей.
Дубликатор представляет собой небольшое по размеру устройство, чаще всего портативное, работающее на батарейках. Он способен считать код с оригинального ключа и записать его на новый, чистый ключ, заготовку. Происходит все это в считанные секунды. В результате небольших махинаций мы получаем дубликат ключа, на который домофон будет реагировать так же, как и на оригинальный. С помощью дубликатора можно создать домофонный или электронный ключ.
КУПИТЬ ДубликаторЫ в интернет-магазине «Домофонный сервис»
В каталоге магазина вы найдете разнообразные модели дубликаторов домофонных ключей. Они отличаются функциями и возможностями. Отличительными чертами является:
год выпуска;
внешний вид, размер, вес;
объем памяти, возможность удалять из нее некоторые коды и запоминать кодовые комбинации некоторых ключей;
возможность получать обновления через ПК и т.д.
О каждой модели вы можете узнать детали в карточке товара. Обратиться за дополнительной информацией необходимо к менеджеру-консультанту по номеру, указанному на сайте. Уточнить условия заказа, оплаты и доставки вы можете по тому же номеру.
Почему дубликаторы купить стоит именно на ? Потому что здесь сделать это можно недорого, а также при покупке получить гарантии и уверенность в качестве. Доставка из главного офиса в Москве производится в другие города России.
Каждый ключ для домофона имеет свой номер - именно этот номер и служит идентификатором ключа. Именно по номеру ключа домофон решает - свой или чужой. Поэтому алгоритм копирования такой: сначала нужно узнать номер разрешённого ключа, а затем присвоить этот номер другому ключу - клону. Для домофона нет разницы, был приложен оригинальный ключ или его копия. Сверив номер со своей базой данных разрешённых номеров, он откроет дверь.
Ключи для домофона, которые мы будем подключать к Arduino (их иногда называют iButton или Touch Memory ), считываются и записываются по однопроводному интерфейсу 1-wire . Поэтому схема подключения очень проста. Нам нужны лишь пара проводов и подтягивающий резистор номиналом 2,2 кОм. Схема соединений показана на рисунке.
Собранная схема может выглядеть примерно так:
2 Считывание идентификатора ключа iButton с помощью Arduino
Для работы с интерфейсом 1-wire существуют готовые библиотеки для Ардуино. Можно воспользоваться, например, этой . Скачиваем архив и распаковываем в папку /libraries/ , расположенную в каталоге Arduino IDE. Теперь мы можем очень просто работать с данным протоколом.
Загрузим в Ардуино стандартным способом этот скетч:
Скетч чтения ключа iButton с помощью Arduino (разворачивается) #includeДанный скетч показывает номер ключа для домофона, который подключён к схеме. Это то, что нам и нужно сейчас: мы должны узнать номер ключа, копию которого хотим сделать. Подключим Ардуино к компьютеру. Запустим монитор последовательного порта: Инструменты Монитор последовательного порта (или сочетание клавиш Ctrl+Shift+M).
Теперь подключим ключ к схеме. Монитор порта покажет номер ключа. Запомним этот номер.
А вот какой обмен происходит на однопроводной линии при чтении идентификатора ключа (подробнее - далее):
На рисунке, конечно, не видны все детали реализации. Поэтому в конце статьи я прикладываю временную диаграмму в формате *.logicdata , снятую с помощью логического анализатора и программы Saleae Logic Analyzer и открываемую ей же. Программа бесплатная и скачивается с официального сайта Saleae . Чтобы открыть файл *.logicdata нужно запустить программу, нажать сочетание Ctrl+O или в меню Options (расположено вверху справа) выбрать пункт Open capture / setup .
3 Запись идентификатора ключа Dallas с помощью Arduino
Теперь напишем скетч для записи данных в память ключа iButton.
Скетч записи ключа iButton с помощью Arduino (разворачивается) #includeНе забудьте задать номер своего оригинального ключа в массиве 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) Инициализация
Инициализация заключается в том, что ведущий выставляет условие сброса 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
2) Если при компиляции появляется ошибка class OneWire has no member named read_bytes, то найдите и попробуйте использовать другую библиотеку для работы с интерфейсом OneWire.
Элементы интерфейса программы KeyCopy Pro, непосредственно используемые при работе с ключами, находятся в закладке Работа с ключами . Дубликатор должен быть подключен USB кабелем к компьютеру, а также быть подключенным в программе.
Считывание ключей
Дубликатор должен находится в программном режиме работы. Переведите дубликатор в режим считывания ключей, нажав кнопки Чтение или Сброс .
Приложите ключ к считывателю дубликатора. После считывания дубликатор издаст звуковой сигнал и в поле Код ключа отобразится информация, содержащая код ключа и его формат.
Бесконтактные прокси карты и брелки нужно прикладывать к середине задней стенки корпуса дубликатора.
В разных ситуациях при считывании ключей также может произойти:
- Переход программы в режим записи при включенной функции Запись после считывания в настройках программы;
- Добавление считанного ключа в базу программы при включенной функции Добавлять считанный ключ в базу в настройках программы;
- В поле Код ключа появится надпись Ошибка CRC при считывания ключа Dallas с неправильной контрольной суммой (например пустой заготовки с кодом FF);
- В поле Код ключа появится информация о наличии дополнительной памяти при считывании ключей Dallas DS1992L, DS1993L, DS1996L;
Запись ключей
Если выбрана опция При считывании ключа переходить на запись , дубликатор перейдет в режим записи автоматически, если нет, то нажмите кнопку Запись . В поле справочной информации отобразится подсказка о ключах-заготовках, подходящих для копирования текущего ключа, а на дисплее дубликатора отобразится код и тип ключа.
При необходимости включите финализацию, пароль RFID или выберите тип заготовки. Поддерживаемые заготовки для соответствующих типов оригинальных ключей приведены в таблице:
Оригинальный ключ | Поддерживаемые заготовки | Примечание |
Dallas DS1990 | ||
Dallas DS1992L, DS1993L, DS1996L | - | Работа с памятью ключа |
Cyfral | КС-07, КС-07Ц, КС-7ТМ, ТМ-01, RW057 | |
ТМ-01A, RW15* | ||
КС-3ТМ (аналоги: ТМ2004, RW2004), КС-4ТМ (аналоги: RW1990, RW1990.1, ТМ08, TM08v2, TM08Vi, TM08Vi2), RW1990.2, ТМ-01, TM08viF* | Запись с перекодировкой | |
Metakom | КС-07, КС-07Ц, КС-7ТМ, ТМ-01 | |
ТМ-01A, RW15* | С настройкой электрических параметров | |
КС-3ТМ (аналоги: ТМ2004, RW2004), КС-4ТМ (аналоги: RW1990, RW1990.1, ТМ08, TM08v2, TM08Vi, TM08Vi2), RW1990.2, ТМ-01, TM08viF* | Запись с перекодировкой | |
EM-Marine | Т5557 (аналоги: T5567, Т5577), EM4305* (аналоги: EM4205) | Возможна запись с паролем |
i57, i57v2* | ||
OTP* | Одноразовая заготовка | |
HID 44, 26, 34, 37 | Возможна запись с паролем | |
Indala | Т5557 (аналоги: T5567, Т5577) | Возможна запись с паролем |
* для KeyCopy 4v2
После этого, приложите ключ-заготовку к считывателю. При успешной записи дубликатор издаст звуковой сигнал и в поле справочной информации отобразится тип используемой заготовки и количество записанных ключей.
При записи ключей Cyfral и Metakom необходимо выбрать тип заготовки при помощи кнопки «Выбор заготовки» или кнопок «Вверх» и «Вниз» на дубликаторе.
При несоблюдении режимов заготовки могут выходить из строя.
Создание нескольких копий с одного ключа-оригинала
Для изготовления нескольких копий нужно произвести копирование одного ключа, а после, не выходя из режима записи, поочередно прикладывать к считывателю другие ключи-заготовки. После записи каждой заготовки дубликатор издаст звуковой сигнал и в поле справочной информации отобразится тип используемой заготовки и количество записанных ключей.
Создание копий с нескольких ключей-оригиналов
Для изготовления копий с нескольких ключей-оригиналов, перед копированием следующего ключа-оригинала переведите дубликатор в режим считывания ключей, нажав кнопку Сброс (или Чтение ) или кнопку Назад на дубликаторе.
Функции финализации и пароля RFID
Функция финализации предназначена для блокирования возможности перезаписи заготовки. В ряде случаев финализация ключа позволяет проходить фильтры, устанавливаемые в домофонах.
Функция записи с паролем позволяет многократно перезаписывать ключ на данном приборе, в то время как другие приборы будут воспринимать его как финализированный. Пароль каждого прибора уникален. При необходимости, пароль можно изменить в настройках прибора: «Настройки» - «Защищенный раздел» - «Пароль RFID» или в закладке «Установки» программы.
Для включения функции финализации (форматы Dallas, EM-Marine, HID, Indala) или пароля (формат EM-Marine, HID, Indala), при записи ключей нажмите кнопку Функции записи или кнопки Вверх или Вниз на дубликаторе. После считывания ключа функции финализации и пароля отключены.
Для снятия пароля с заготовки T5 произведите запись любого кода на заготовку без пароля.
Перезапись заготовок
В некоторых случаях возможно произвести повторную запись на заготовки с уже записанным кодом:
- Перезаписать код на оригинальный ключ или заготовку OTP невозможно;
- Заготовки КС-3ТМ, TM08viF, Т5557, EM4305, i57v2 можно перезаписать, если они не были финализированы;
- Заготовки КС-4ТМ, RW1990.2, КС-07, КС-07Ц, RW057, RW15, TM-01A, TM-01C можно перезаписать всегда;
- Заготовку КС-7ТМ можно перезаписать всегда, однако при перезаписи ее необходимо держать приложенной к контактору 15...20 секунд, до появления сигнала успешной записи;
- Заготовка ТМ-01 при записи в режиме Cyfral и Metakom всегда финализируется. Заготовки TM-01C и TM-01A можно перезаписать или вернуть в исходное состояние при помощи функции «Стирание» в основном меню дубликатора;
- Заготовки Т5557 и EM4305 с установленным паролем можно перезаписать только при совпадении пароля прибора c паролем, установленным на заготовку.
Настройка электрических параметров заготовок
Заготовки RW15 и TM-01A обладают возможностью изменять свои электрические параметры в режимах Cyfral и Metakom: уровень потребляемого заготовкой тока и скорость выдачи кода. Изменение данных параметров позволяет придать заготовке характеристики, максимально соответствующие конкретному оригинальному ключу. Настройка электрических характеристик делается при необходимости обхода домофонных фильтров, индивидуальна в каждом конкретном случае.
Электрические параметры заготовок RW15 и TM-01A устанавливаются одновременно с записью кода ключа. Значения параметров можно изменить в меню дубликатора «Настройки» - «Опции TM-01», «Опции RW15» или в закладке «Установки» - «Опции заготовок».
Настройки заготовки RW15 включают: «Нагрузка» (включение нагрузочного резистора увеличивает уровень тока) и «Скорость» (скорость выдачи кода ключа, 4 значения).
Настройки заготовки TM-01A включают: «Нагрузка» (настройка уровня тока, 3 значения) и «Период кода» (длительность периода кода, 7 значений).