Домой / Windows 8 / Дубликатор домофонных ключей (iButton) с мозгами из Arduino Nano. Простой дубликатор домофонных ключей своими руками Дубликатор электронных ключей своими руками

Дубликатор домофонных ключей (iButton) с мозгами из Arduino Nano. Простой дубликатор домофонных ключей своими руками Дубликатор электронных ключей своими руками

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

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

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

Порой случается так, что нужно изготовить копию домофонного ключа. Дубликатор домофонных ключей 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

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

Ключи для домофона, которые мы будем подключать к 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.

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

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

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

Как устроен и работает дубликатор

Какие модели и виды дубликаторов ключей бывают

Все имеющиеся в природе дубликаторы домофонных ключей можно отнести к трем разным типам:

  1. Программаторы для перепрошивки бесконтактных ключей tmd;
  2. Дубликаторы для создания копий контактных домофонных ключей;
  3. Универсальный тип дубликаторов, которые могут перепрошивать любые виды домофонных чипов.

Каждый из этих типов устройств имеют свои модификации.

Дубликаторы-бесконтактники

В их числе имеется три модификации аппаратов.

К первой модификации относятся программаторы, делающие стандарт радиочастотной идентификации EM-Marin, HID и Indala (дубликаторы tmd), ко второй – поддерживающие стандарт Mifare, третья модификация дубликаторов работает с ключами стандарта ТЕХ-КОМ или ТКРФ.

Устройства контактного типа

Аппараты представлены двумя видами. Первый вид рассчитан на работу с ключами контактного типа dallas, второй вид программаторов дублирует ключи типа либо .

Даллассовский чип имеет шестнадцатиричный код, а цифраловский прошивается кодом протокольного типа, который отличается большим объемом.

Универсальные устройства программирования ключей

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

  • Способность к обновлению;
  • Наличие базы памяти;
  • Генерация кодов.

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

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

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

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

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

Элементная база, которая понадобится для изготовления устройства:

  1. Микроконтроллер типа «Arduino Nano» - это основные «мозги» аппарата, где происходит обработка информации и запись данных;
  2. Плата RFID RC522, выполняющая роль считывающего коды модуля и перенаправления информации в микроконтроллер;
  3. Зуммер пьезоэлектрического типа;
  4. Два LED элемента для монитора;
  5. Два резистора по 330 Ом;
  6. Блок клавиатуры типа 4Х4;
  7. Адаптер для жидкокристаллического дисплея типа I2C (LCM1602), выполняющий роль преобразователя ЖК –дисплея в формат совместимый с «ардуино»;
  8. Жидкокристаллический экран типа LCD16X2BL.

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

Далее на адаптер дисплея от модуля rf ID RC522 подводят питающие провода: красного цвета – к контакту VCC (+) и черного – к контакту GND (общий). Управляющие провода припаивают к контактам SDA и SCL. LED элементы устанавливают в паре с ограничивающими ток резисторами.

Принцип прошивки ключей

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

Схемотехника устройства построена на применении энергонезависимой памяти (другими словами - ПЗУ).

В такую память производится запись последовательности символов цифрового уникального кода.

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

RFID-система построена на передачи кода не при помощи контакта, а определенной радиочастоты.

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

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

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

Заключение

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

Для начала можно сделать простой копировщик домофонных ключей для самых ходовых «болванок».

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

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

Добрый день! Как-то надоело платить по 150 рублей за копию ключа от домофона и решил собрать простой, бюджетный дубликатор iButton на Arduino. Цены на подобные готовые устройства «кусаются», хотя и функционал у них шире, копируют практически всё, включая беспроводные ключи. Мне достаточно простого копирования ключа iButton а-ля «кнопка». Интересно? Прошу под «cut»!

Итак, приступим! Для начала «техзадание», что должно уметь это устройство :
1) Читать содержимое ключа, интересно же что там зашито.
2) Копировать ключи, как это ни странно звучит:)
3) Прошивать «универсальный» ключ. Под словом «универсальный» будем понимать какой-либо свой ключ, который будет записываться по-умолчанию.

UPD. Очень важно! Если первый байт, family code, будет 00 , например 00 :12:34:56:AB:CD:EF:AA , то после прошивки ключ «умрёт», читаться он уже этим программатором, а возможно и другими, не будет. Выявлено опытным путём, спасибо товарищу 16 :AB:CD:EF:E0 с естественно неверной контрольной суммой E0 . Так как контрольная сумма неверная, то домофон игнорирует эту последовательность при считывании. Этот домофон загубил все перезаписываемые ключи, пока я разбирался в чём дело и почему «сами по себе» меняются данные в ключах. В итоге дубликат к этому домофону сделать не удалось, пришлось идти в обслуживающую организацию и заказывать ключик за 100 рублей. :)


В итоге получаем полезную в хозяйстве штуку за смешные деньги, «болванки» для записи продают , хотя у нас в оффлайне можно найти по 30 рублей за штуку, у копировальщиков на рынке по 100 - 150 рублей:).
UPD. О том какие типы ключей можно записать этим дубликатором читаем . Спасибо за помощь товарищу "у.
UPD. Если ключ не пишется следуем товарища . Планирую купить +191 Добавить в избранное Обзор понравился +95 +184

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

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

Присоединяйтесь к нашей группе в 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», чтобы МК не входил в спящий режим по тайм-ауту. В принципе, можно просто соединить этот вывод с «землей». Однако, для надежности, желательно сделать это через резистор сопротивлением в несколько килоом.