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


Для копирования ключа домофона необходимо получить код ключа оригинала, затем записать его в ключ копию. Домофон определит ключ дубликат как свой и откроет входную дверь.
С помощью модуля Ардуино по интерфейсу onewire можно провести считывание а также запись домофонных ключей.
Перечень инструментов и материалов.
— плата Arduino Nano-1шт ;
— подстроечный многооборотный резистор на 10Ком -1шт;
— соединительные провода;
— макетная плата -1шт ;
— RFID ключ болванка T5577(Т5557) ;
— Ibutton ключ болванка RW1990 ;
— RGB светодиод-1шт;
— кнопка-1шт;
— выключатель питания-1шт;
— активный зуммер 5В -1шт;
— считыватель контактный-1шт;
— провод ПЭВ 0,2-0,4мм;
— конденсаторы и резисторы согласно схемы;
— пластмассовый корпус (распредкоробка);
— паяльник;
— тестер.
Шаг первый. Распайка схемы.

Схема состоит из платы Arduino Nano с подключенными считывателем контактных ключей и платы считывателя бесконтактных ключей. RGB светодиод служит для индикации режимов работы-дежурный, считывание ключа,запись ключа. Подстроечный многооборотный резистор для регулировки компаратора. Кнопка предназначена для переключения режимов работы дубликатора. Зуммер- для звукового контроль работы копира.
Основная работа предстоит в изготовлении и настройке платы приема сигналов с RFID ключей. На куске монтажной платы распаиваем конденсаторы и резисторы. Конденсаторы желательно надо высоковольтные так, как они лучше работают на высоких частотах.

Колебательный контур состоит из конденсатора 4700 пФ и катушки индуктивности.
Расчет катушки колебательного контура можно произвести на калькуляторе сайта


Шаг второй. Настройка и проверка работы.
Собираем всю схему для настройки на макетной плате. Загружаем скетч. Версия IDE Arduino должна не ниже 1.8.9
С платы Arduino Nano контакт D11 выдается сигнал 125 kHz, который идет на колебательный контур катушки и конденсатора. Но потому что конденсаторы имеют разброс по емкости от 5 до 30%, колебательный контур надо точно настроить на частоту 125 kHz. Для этого катушку наматываем с запасом 10-15 витков, затем сматываем пока на тестере не будет увеличиваться напряжение до максимума. Тестер подключаем к амплитудному детектору(в точке –диод,конденсатор). Напряжение должно находится в пределах 16-22 Вольта. После подстроечным резистором выставляем напряжение 0,1 Вольта(тестер на вывод D6 и GND).

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




Получился интересный и полезный приборчик. Конечно это не панацея, но какую то часть проблем можно решить с помощью данной самоделки сделанной своими руками.
Процесс изготовления и настройки можно посмотреть в видео
Всем желаю здоровья и интересных самоделок!
Делаем на Ардуино дубликатор домофонных ключей
Создадим дверной замок RFID Arduino посредством копирования домофонного ключа. Узнаем о радиочастотной идентификации RFID и используем беспроводную связь.
Предназначение дубликатора домофонных ключей
С помощью микроконтроллера Arduino можно копировать домофонный ключ, если случайно его потерял.
RFID – радиочастотная идентификация. Устройство выполняет ту же функцию, что и штрих-код или магнитная полоска на задней стороне кредитной карты. Он предоставляет уникальный идентификатор для этого объекта. И так же, как штрих-код или магнитная полоса, RFID должен быть отсканирован для получения информации.
Идентификатор, считываемый из тегов, сравнивается с хранимой информацией, и если он совпадает, то дверь открывается.
Принцип работы дубликатора на Ардуино
Каждый ключ имеет внутреннюю связь с домофонной дверью – этот номер и служит ключевым идентификатором. Этот номер интерком-ключа решает, нужный ли вы приложили ключ. Поэтому принцип работы дубликатора домофонных ключей на Arduino довольно прост: сначала нужно проверить «разрешенный» ключ, а затем присвоить тот же номер другому ключевому клону.
Проверяя номер из своей базы данных разрешенных скоростей передачи данных, он откроет дверь. Ключи для внутренней связи, которые мы будем подключать к Arduino дубликатору (иногда называемому iButton или Touch Memory), считываются и записываются в 1-проводной интерфейс. Поэтому схема подключения очень проста.
Необходимые материалы
Для конструирования проекта Arduino дубликатор домофонных ключей понадобятся следующие комплектующие:
- Arduino Nano.
- RFID RC522.
- Пьезо-зуммер.
- 2x LED-монитора.
- 2x 330 резистор.
- Клавиатура 4 × 4.
- Адаптер I2C для ЖК-дисплея.
- LCD16X2BL.
Создание дубликатора своими руками
ЖК-дисплей имеет 16 контактов, что слишком много для Arduino Nano домофона, поэтому важно иметь адаптер I2C. Это позволяет управлять дисплеем только из двух сигнальных штырей на Ардуино. Это полезно из-за небольшого числа контактов, которые нужно будет контролировать из MCU.
ЖК-контакты
ЖК-дисплеи имеют параллельный интерфейс, а это означает, что MCU должен одновременно управлять несколькими контактами интерфейса для управления дисплеем. В приведенной ниже таблице дается описание каждого из контактов на английском языке:
Спецификация контактов
Для начала сделаем связи между ЖК-дисплеем и I2C. Для этого нужен адаптер ЖК-дисплея I2C (LCD1602). Адаптер преобразует ЖК-дисплей формата 16 x 2 в серийный ЖК-дисплей I2C, которым можно управлять через Arduino всего посредством 2-х проводов.
Соединения между Arduino и LCD
Аппаратная часть
Для набора кода понадобится библиотека LiquidCrystal_I2C.h в Arduino IDE. Библиотека позволяет подключить ЖК-дисплей к Ардуино. Встроенная библиотека LiquidCrystal_I2C позволяет легко отображать символы на ЖК-дисплее.
Вы можете скачать LiquidCrystal_I2C.h с нашего сайта отсюда, или с Github — https://github.com/todeilatiberia/SmartDoor.
Следуйте приведенным ниже инструкциям, чтобы установить новую библиотеку в свою среду разработки Arduino.
- Сначала загрузите файлы из Github.

- Извлеките из архивов каждую папку.

- Скопируйте ZIP-файлы в папку Ардуино.

- Откройте Ардуино и добавьте Keypad.zip:
Меню эскиза -> Включить библиотеку -> Добавить ZIP-библиотеку
- Добавить библиотеку клавиатуры:
Эскиз -> Включить библиотеку -> Клавиатура
Программная часть
Мы подключим клавиатуру для отображения номеров на ЖК-дисплее для Arduino и скопируем ключ, который вводим с клавиатуры.
В этом проекте используется клавиатура 4 × 4.
В таблице показано соединение между платой Arduino и клавиатурой. Штыри клавиатуры подключены к цифровым выходным выводам Arduino. Pin D6 использовался для зуммера, потому что это был штырь ШИМ.
| Вывод клавиатуры | Контакт Arduino |
|---|---|
| 1 | D2 |
| 2 | D3 |
| 3 | D4 |
| 4 | D5 |
| 5 | A0 |
| 6 | D7 |
| 7 | D8 |
Затем добавим RFID. В этом случае плата RFID использует протокол связи SPI, где Arduino будет действовать, как ведущий и считыватель RFID в качестве подчиненного. Считыватель карт и теги предназначены для связи с частотой, равной 13,56 МГц.
Это важный шаг, поскольку он помогает нам считывать данные с карты, и он будет решать, соответствует ли идентификатор информации, хранящейся в EEPROM. Если он соответствует, он даст нам доступ и отобразит «Unlocked». В противном случае на ЖК-дисплее отобразится «Заблокировано».
Соединение между Arduino, LCD и RFID
Домофон на Ардуино, LCD и RFID
Следующий шаг – добавить зуммер и 2 светодиода для имитации системы контролируемого доступа. Ознакомьтесь с приведенной ниже диаграммой. Зуммер установлен так, что он гудит всякий раз, когда мы получаем доступ (разблокирован). Красный светодиод всегда горит, когда он заблокирован, но зеленый светодиод загорается, когда он разблокирован.
Чтобы защитить модули, нужно использовать 3D-печать корпуса. Если у вас нет 3D-принтера, вы можете просто использовать пластиковый корпус, который позволяет вам вставлять все компоненты внутрь. Это очень полезно, потому что модули будут размещены внутри, а единственными частями вне коробки будут светодиоды, клавиатура и ЖК-дисплей.
Схема соединений, показывающая соединение между Nano, LCD, клавиатурой, RFID и звуковым сигналом
Код для загрузки на микропроцессор доступен по ссылке:
Тестирование и настройка готового дубликатора
Для описанного выше проекта понадобится специальный корпус, чтобы аккуратно разместить все компоненты и сохранить их без ущерба.
Можно разработать корпус с использованием программы SketchUp, которая имеет удобный интерфейс с простыми кнопками, такими как Eraser, Lines и Tape Measure Tool.
Размеры коробки составляют: 120 х 125 х 37 мм.

Если вы не знакомы с Sketchup, вам нужно ознакомиться со следующими учебниками SketchUp:
Коробка для корпуса устройства (вид сверху)
Коробка для корпуса устройства (вид снизу)
Перед разработкой корпуса для проекта необходимо учитывать следующие аспекты:
- Вид сверху:
— 2 отверстия для светодиодов (5,2 мм).
— 1 для ЖК-дисплея (42,2 × 7,3 мм).
— 1 отверстие для кабеля (16 × 10,5 мм). - Вид снизу:
— 1 открытие для клавиатуры (27 × 10 мм).
После этого можно соотнести размеры и построить пластиковый корпус. Причем можно менять дизайн по своему усмотрению.
Полный корпус с модулями, расположенными внутри
Как пользоваться устройством
Откройте последовательный монитор. Нажмите клавиши. Вы должны заметить, что последовательный монитор сообщает, какой именно ключ пользователь нажал.
Тем не менее, может потребоваться небольшая практика нажатия кнопок.
OSBoy notes.
Записки обо всём.
Дубликатор домофонных ключей на Arduino
В интернете можно найти достаточно готовых Arduino-проектов устройств для копирования домофонных ключей DS1990, в народе так же известных как ibutton, или просто «таблетки». Но практически всё проекты, что я нашёл, оказались несколько сыроваты. Поэтому решено было, используя уже имеющиеся наработки, сделать свой проект, полностью законченный и достаточно функциональный. За основу была взята эта статья, а так же, некоторые идеи были почерпнуты отсюда, поэтому на авторство сильно не претендую.
Аппаратная часть
Данное устройство я собрал на Arduino Nano (его китайском аналоге) в корпусе от нерабочего USB-хаба. Получилось достаточно компактно и удобно:
USB-кабель используется как для питания устройства, так и для взаимодействия с COM-терминалом. На корпусе установлена нефиксируемая кнопка для переключения режимов чтение/запись/восстановление, светодиод для индикации текущего режима, и контактная площадка (считыватель) для ключей.
Схема устройства простейшая. Линия данных 1wire (ibutton) обязательно подтягивается к питанию (+5В) через резистор 2,2 кОм (скорее всего, будет нормально работать и с другими номиналами порядка 1. 4,7 кОм). Светодиод подключаем через ограничительный резистор подходящего номинала. Так как в скетче используем вход кнопки (D2) со встроенным подтягивающим (PULLUP) резистором, то кнопку сажаем на GND.
Програмная часть
В прошивке практически без изменений оставил только часть кода, отвечающую непосредственно за чтение/запись данных в ключи по протоколу 1-wire и, собственно, принцип работы устройства (дабы не изобретать велосипеды). Однако, остальная программная часть была фактически полностью переписана и при этом дополнена разными полезными фичами. В скетче используется стандартная Ардуино-библиотека «OneWire».
Актуальную версию скетча смотрите в конце статьи.
Возможности устройства:
- Чтение ID ключа с последующей записью в перезаписываемую «болванку» (RW1990);
- Запись «универсального» ID, заранее заданного в скетче (в данном случае используется ID: 01:FF:FF:FF:FF:FF:FF:2F );
- Защита от случайной записи некорректного значения ID;
- Восстановление нечитаемых ключей, случайно испорченных при неудачной записи;
- Ввод ID вручную в терминале;
- Возможность работы без COM-терминала (при наличии источника питания постоянного тока на 5В с USB разъёмом).
Работа с устройством
Устройство можно использовать как с COM-терминалом (предпочтительно), так и без него. Для работы с терминалом на компьютере должны быть установлены драйверы для платы Arduino (FTDI, CH341 или др., в зависимости от того, какой чип установлен на Вашей плате). Если плата удачно программируется в среде разработки Arduino-IDE, значит нужный драйвер в системе уже установлен. Терминал COM-порта можно использовать любой, какой больше нравится (например, монитор порта среды Arduino-IDE или Гипертерминал. Лично я использую PuTTY). В настройках терминала нужно выбрать виртуальный COM-порт, под которым определилась наша плата, и скорость обмена, выставленную в скетче (в моём случае — 115200).
Итак, подключаем устройство к компьютеру и запускаем терминал COM-порта (Arduino при этом автоматически перезагружается). Светодиод несколько раз мигает в процессе загрузки. Через пару секунд устройство готово к работе, светодиод при этом гаснет, а в терминале выводится сообщение о готовности системы.
Список доступных команд через терминал:
- d — загрузка в буфер «универсального» ключа (в данном случае: 01:FF:FF:FF:FF:FF:FF:2F);
- w — переключение режима чтение/запись;
- m — переход в режим ручного ввода ID;
- r — переход в режим восстановления нечитаемых ключей;
- h — показать справку по командам.
Чтобы считать ID ключа, прикладываем ключ к контактной площадке. Светодиод при этом начинает часто моргать, а в терминале отображается считанный ID, который сохраняется в буфере (переменной oldID ) до тех пор, пока в неё не будет загружен другой ID. Идентификатор состоит из восьми бит, которые отображаются в шестнадцатиричном виде: 01 XX XX XX XX XX XX YY. Здесь первый бит — это Family code, для ключей ibutton он всегда будет равен 1. Если считанный Family code будет отличаться от 1, в терминал будет выведено соответствующее предупреждение и записывать данный ID устройство откажется.
Следующие шесть бит — это, собственно, уникальный идентификатор ключа. А восьмой бит — это, так называемый, «избыточный код» CRC или, другими словами, контрольная сумма, вычисляемая по специальному алгоритму из предыдущих семи бит. Контрольная сумма проверяется, и если её значение не верно, то, опять же, в терминал выводится предупреждение об этом и запись такого ID будет невозможна.
Чтобы записать ID в перезаписываемый ключ, в терминале нужно отправить символ «w», либо нажать кнопку на устройстве. При этом зажигается светодиод, что говорит о готовности устройства к записи. Прикладываем записываемый ключ к контактной площадке: светодиод при этом гаснет, а примерно через секунду начинает часто моргать, что говорит о завершении процесса записи и переключении устойства обратно в режим чтения. Если в терминале мы видим, что считывается только что записанный ID, без каких либо предупреждений, значит всё прошло успешно. С таким же успехом можно копировать ключи и без использования терминала, наблюдая только за светодиодом.
Если записываемый ID был некорректный (с неверным Family code, или CRC), в терминал выведется соответствующее сообщение и запись будет отменена. Таким образом, устройство предохраняняет ключ от записи в него некорректных данных. Тем не менее, всё же может случиться так, что данные запишутся с ошибками. Такое может произойти, например, если ключ будет недостаточно плотно приложен к контактной площадке при записи данных. Более того, ключ в этом случае может вовсе перестать читаться некоторыми устройствами (включая данный дубликатор), если в первый бит будет записано нулевое значение. А при эксперементах с ключами такое частенько бывает, особенно по неопытности! Так что незнавши можно и подумать, что ключик умер.
Для восстановления нечитаемого ключа необходимо перевести устройство в соответствующий режим. Для этого в терминале нужно отправить символ «r», либо включить устройство, удерживая кнопку нажатой. Светодиод начнёт часто моргать, независимо от того, приложен ключ, или нет (для выхода из режима восстановления отправьте символ «r» снова, или переподключите устройство).
Прикладываем ключ к контактной площадке. Если он читаемый, то его ID считается так же, как и в обычном режиме чтения. Если же ключ не читается, соответственно ничего не произойдёт. Удерживая ключ приложенным, нажимаем кнопку. При этом в ключ принудительно будет записан «универсальный» ID, прописанный в скетче (у меня: 01:FF:FF:FF:FF:FF:FF:2F) либо другой, ранее загруженный в буфер. По окончанию записи устройство вернётся в обычный режим чтения.
Загрузить в буфер универсальный ID можно, отправив в терминале символ «d», либо просто перезагрузив устройство (он используется по умолчанию, если не был введён какой-либо другой ID).
Кроме всего прочего, в устройстве предусмотрена возможность сделать дубликат ключа, даже не имея под рукой оригинала! Достаточно лишь знать его идентификатор.
Переводим устройство в режим ручного ввода ID. Для этого в терминале нужно отправить символ «m». После этого появляется приглашение ввести ID, либо выйти из ручного режима (по нажатию Esc). После этого можно ввести любой ID (в шестнадцатиричном виде). При этом первый бит (Family code) всегда должен быть равным 1 и программа подставляет его автоматически, а так же, автоматически вычисляет CRC и подставляет в восьмой бит. Таким образом, нам нет необходимости вводить Family code и вычислять контрольную сумму CRC, достаточно ввести только значения битов со второго по седьмой.
В итоге мы имеем вполне функциональное, полезное в хозяйстве устройство за смешные дениги. Теперь скопировать на скорую руку ключик на дежурную болванку можно где угодно, при наличии источника питания на 5В постоянного тока с USB разъёмом!
Возможно, что прошивка устройства будет и дальше дорабатываться. Если Вы заметили какие-то баги и недоработки в программе, конструктивная критика всегда приветствуется!
Делаем универсальный RFID-ключ для домофонов
Приветствую всех, кого интересует тема электронных ключей-вездеходов. Сам я, по правде сказать, давно не слежу за новостями в этой области. Но свою разработку трёхлетней давности хочу опубликовать, так как она проста в повторении и может быть кому-то интересна. Суть: вместо десятка ключей с кодами-вездеходами и просто кодами, все ключи можно носить в одном небольшом устройстве.
Дисклеймер: повторять — не призываю, за сборку и применение — отвечаете сами, я делюсь информацией исключительно в ознакомительных целях. Например, чтоб помогали компаниям, обслуживающим домофоны, вовремя латать «дыры», если таковые с помощью прибора обнаружатся.
1. Что это такое? Что умеет?
Устройство, которое я собирал в далёком 2017 году, есть ни что иное, как спуфер домофонного RFID-ключа, работающего на частоте 125 кГц. Слово «спуфер» в данном случае означает, что устройство, по сути ключом не являясь, выдаёт себя за него, и домофоны реагируют на это соответствующе.
Прибор умеет транслировать любые коды ключей, которые записаны в его память. Некоторые коды можно найти в Сети по запросу «ключи-вездеходы», их я вставил в прошивку в первую очередь. Но при некотором навыке и желании можно вставить в прошивку коды вообще всех RFID-ключей, которыми вы пользуетесь (если они работают на частоте 125 кГц), и, таким образом, иметь возможность заменить одним прибором связку брелков.
Я знаю, что на просторе Сети гуляет большое количество схем подобных устройств. Моей целью было создать наипростейший вариант из всех доступных. Удалось или нет — судите сами.
2. Какими навыками нужно обладать, чтобы повторить данный проект?
Прежде всего, навыки работы с Arduino: иметь установленную среду разработки, уметь заливать в плату прошивки, устанавливать библиотеки, драйверы, вот это вот всё. Далее. Имеется в проекте место, где без пайки — ну вот никак. Потому — нужны прямые руки и паяльник с расходниками. Уметь читать электрические принципиальные схемы (или их подобия). Ну и навыки программирования на C++, дабы иметь возможность кастомизации прибора. Но это уже опционально.
3. Какие запчасти нужны и как их монтировать?

Как видно, BOM для базовой версии выглядит примерно так:
- Arduino Nano (или любая другая Дуня, которая под рукой есть);
- RFID-ключ формата EM4100 (вместо катушки индуктивности);
- n-p-n транзистор (любой какой отыщется, частоты тут не очень высокие);
- резистор на 10К;
- конденсатор на 560 пФ (лучше SMD, можно прямо в корпус от ключа припаять);
- литий-ионный аккумулятор — по вкусу;
- три сенсорных кнопки;
- OLED-дисплей с I2C интерфейсом;
- модуль зарядки для liIon;
- повышающий DC-DC преобразователь с выходом 5 В.
Схема питания может быть любой, лишь бы хватило Arduino чтобы стартовать. Устройства ввода/вывода — аналогично: прошивка легко может быть адаптирована под те кнопки/дисплеи, что есть в наличии (ссылка на гитхаб — чуть ниже). Текущая версия прошивки написана под OLED-дисплей и сенсорные кнопки (взяты были из соображений «бездребезговости»).
Собрать тестовый образец можно и на беспаечной макетке. Особых инструкций тут не требуется, за исключением того, как быть с «индуктивностью». Об этом — поподробнее.

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

Она представляет собой катушку и микросхему памяти с двумя контактными площадками по бокам. Выводы катушки припаяны как раз к этим площадкам. Всё это залито тонким слоем эластичного термополимера (по виду и свойствам похожего на застывший клей B7000). Чтобы добыть катушку, я поступил следующим образом. Взяв канцелярский нож, я аккуратно продавил лезвием текстолит между площадками и микросхемой. Микросхему отделил от катушки и выкинул. Затем паяльником я аккуратно (чтобы не отпаять тонкие проводки катушки) сжёг термополимер над контактными площадками, сделав возможным дальнейшую прозвонку.

Прежде чем паять, следует измерить сопротивление катушки, убедившись, что она не в обрыве. Если всё в порядке, то собирать лучше так: сперва припаять SMD-конденсатор к контактным площадкам (он должен аккуратно поместиться между ними), затем — ножки транзистора и под конец — резистор к базе. Всё это можно аккуратно смонтировать в корпус ключа. Провода «земли» и базы транзистора припаивать в последнюю очередь.

Затем сделать в крышке ключа отверстие под эти провода, и закрыть брелок, придав ему почти что первозданный вид. Для сборки на беспаечной макетке к проводам следует припаять штырьевые разъёмы (или просто хорошенько залудить их, чтобы можно было без проблем вставлять в макетную плату).
4. Прошивка, тест и наладка
Как и обещал, ссылка на репозиторий проекта. Файлы прошивки лежат в папке My_125_kHz_spoofer_v.03.
После сборки и заливки прошивки прибор готов к использованию. Чтобы убедиться в его работоспособности, совсем не обязательно искать домофон — можно обойтись китайским модулем для чтения RFID-ключей, который называется RDM6300 и ещё одной платой Arduino (хотя кому что проще). Прошивку для модуля RDM6300, выдающую транслируемый код ключа в том же формате, в каком он внесён в прошивку спуфера, я также положил в репозиторий проекта. Схема подключения ридера — там же.
Порядок тестирования с помощью ридера RDM6300:
- Убедиться, что ридер работает, поднеся к антенне любой из имеющихся в наличии ключей на 125 кГц (данные будут выводиться в COM-порт);
- Выбрать в меню спуфера интересующий код ключа;
- Поднести антенну к ридеру. Если ридер прочёл тот же ключ, что указан в прошивке — всё получилось! Else — проверяем схему, ищем, где ошибка, устраняем её и начинаем с пункта 1.
5. Что в прошивке можно менять, а что — лучше не трогать
Поскольку лепилась прошивка на основе вот этого, не вполне понятного для меня кода, то жизненно-необходимые функции, которые менять нельзя вот прям совсем, я вынес в отдельную вкладку functions.ino. Остальная часть программы служит исключительно для предоставления пользователю комфортной возможности вызвать функцию EmulateCard (ну, и нескольких строчек кода перед ней).
Свои ключи можно добавлять в массив uint64_t universalID[], расположенный на 75 строке кода. Поскольку я не «задефайнил» общее количество ключей в памяти устройства, а некоторые функции завязаны на эту константу, при добавлении своего ключа следует менять также пределы, в которых находится переменная keyNumber, отвечающая за выбор ключа. Ну и не забывать свой ключ в меню добавлять. В общем, всё сыровато, но при желании, повторюсь, разобраться не трудно.
6. Что в приборе можно было бы доработать
- Добавить поддержку ключей iButton (хотя бы самых распространённых от Dallas).
- Добавить эмуляцию ключей, работающих на частоте 13,5 МГц (как я понял, либо через ношение перезаписываемой заготовки и модуль RC522, либо технически-сложно, через реальную эмуляцию).
- Добавить в прибор ридеры iButton, RDM6300 и RC522, чтобы сделать прибор ещё более универсальным.
У кого что получится — пишите о результатах. Сам я к разработке этой игрушки в ближайшее время возвращаться не собираюсь)
7. История создания
Была на дворе осень 2017 года. Будучи студентом второго курса магистратуры, я томился неразрешёнными вопросами самоопределения. Проще говоря, маялся бездельем и искал, чем бы заняться. В итоге решил довести до конца свои старые инженерные проекты в ущерб посещению университета.
Погода на дворе стояла просто роскошная. А что может быть лучше, чем прохладной осенней ночью сидеть где-нибудь на крыше многоэтажки, попивая чай из термоса и созерцая суету ночного города под ногами.
Днём попасть в подъезд любой многоэтажки труда не составляет никакого — социнженерия из серии «Здравствуйте, соцопрос о качестве работы управляющей компании для название_местной_газеты» отлично работает, да и вообще, в основном жильцы не против, чтобы кто-то заходил в подъезд вместе с ними. Ночью — другое дело. А я любил вылазить на крыши либо на закате, либо ночью… Назрела проблема, которую я и решил вышеописанным способом.
Как я помню, информация о подобных устройствах нашлась не сразу. Гуглёжка по ключевикам «взломщик домофонов» не давала почти ничего. Адекватное стало находиться, когда я чуть-чуть разобрался в технологии RFID, и стал задавать уже более осмысленные вопросы, типа «RFID emulator», «RFID multykey», «RFID spoofer».
В итоге получилось отыскать две приличные англоязычные статьи по теме. В одной автор описывал, как на основе Arduino делался довольно замороченный с аппаратной точки зрения ключик, а во второй — всё то же самое, но без исходников, зато с очень простой аппаратной частью. Справедливо рассудив, что раз и та, и другая схема соединяются с антенной одним пином Arduino, я решил скрестить простое аппаратное решение и открытые исходники. Удалось, пусть и не с первого раза).
На фото в начале данной статьи — далеко не первая версия прибора. Первая была на макетке, и работала через СОМ-порт. Помню, как прохожие всячески давали мне понять, что я выгляжу подозрительно, когда я с раскрытым ноутом стоял у двери многоэтажного дома, и что-то там пиликал в домофоне.
Затем было несколько более компактных версий, которые я собирал и разбирал ради интереса. Предпоследнюю спёр один из главных героев предыдущей моей статьи. Нынешняя версия была собрана 29 января сего года, в перерыве между уроками, которые я веду в своём кружке. Собрана только с целью убедиться, что я никого не дезинформирую, и прошивка со схемой работают.
Как сделать дубликатор домофонных ключей Arduino
В качестве средств защиты входных дверей домов от непрошенных гостей довольно часто используются домофоны.
Чтобы войти в дом нужно воспользоваться специальным ключом, который владеет своим номером, выполняющим роль идентификатора. По этому номеру электронная система и проводит распознавание «свой» – «чужой» и пропускает хозяина в дом.
Зачем нужен дубликатор ключей?
Порой случается так, что нужно изготовить копию домофонного ключа. Дубликатор домофонных ключей Arduino может понадобиться если один из ключей комплекта был утерян, потребовался дополнительный ключ, или старый ключ вышел из строя.
Естественно, что в таком случае можно воспользоваться услугами специализированных мастерских, но можно выполнить эту процедуру и самостоятельно. Особенно интересен этот вариант будет тем, кто разбирается в электронике и имеет практику использования модулей 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 позволит:
- выполнять чтение с оригинального ключа его ID с последующей перезаписью в подготовленную «болванку» ключа;
- записывать универсальный ID, который задается в скетче;
- обеспечивать защиту случайного перезаписывания ID некорректным значением;
- восстанавливать несчитываемые ключи после некорректной записи идентификатра;
- вводить ID номер в ручном режиме;
- поддерживать работу без 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, устройства и идентификатора оригинального ключа.




