Дубликатор на Arduino чаще всего собирают для копирования домофонных ключей iButton (DS1990A) и RFID-меток стандарта EM-Marin на частоте 125 кГц — именно эти два формата встречаются в подавляющем большинстве подъездных домофонов. Прежде чем покупать компоненты, определите, какой тип ключа вы планируете копировать: для контактных «таблеток» iButton нужен считыватель с однопроводным интерфейсом 1-Wire, а для бесконтактных карт и брелоков — модуль RDM6300 или аналогичный RFID-ридер.
В этой статье разберём оба варианта: какие компоненты понадобятся, как подключить модули к плате, какой скетч использовать для чтения и записи, а также какие ограничения и подводные камни ждут при копировании ключей разных форматов. Отдельно остановимся на записываемых болванках — без правильной заготовки даже идеально собранный дубликатор не создаст рабочую копию.
Принцип работы дубликатора ключей
Любой домофонный ключ содержит уникальный код — последовательность байт, которую контроллер домофона сравнивает с базой разрешённых идентификаторов. Дубликатор выполняет две операции: чтение кода с оригинального ключа и запись этого кода на чистую перезаписываемую болванку. Arduino здесь выступает в роли контроллера, который опрашивает считыватель, сохраняет код в память и передаёт его на записывающее устройство.
Важно понимать ограничение: скопировать можно только ключи с фиксированным кодом. Современные системы с криптографической защитой (например, метки Mifare с защищёнными секторами или ключи с динамическим кодом) простым дубликатором на Arduino не копируются — там требуется совсем другой уровень оборудования и знаний.
Дубликатор на Arduino копирует только ключи с фиксированным кодом: iButton DS1990A и RFID-метки 125 кГц. Криптозащищённые метки Mifare DESFire и подобные таким устройством не дублируются.
Какие ключи можно скопировать
Перед сборкой полезно разобраться в форматах. Контактные ключи-«таблетки» чаще всего построены на микросхеме DS1990A (или её аналогах TM1990, RW1990) и работают по протоколу 1-Wire. Бесконтактные брелоки и карты подъездных домофонов обычно используют стандарт EM-Marin на частоте 125 кГц. Реже встречаются ключи форматов Cyfral и Metakom — для них потребуются специфические схемы считывателей.
| Формат ключа | Тип | Болванка для копии | Сложность копирования |
|---|---|---|---|
| DS1990A / TM1990 | Контактный (iButton) | RW1990, TM08 | Низкая |
| EM-Marin 125 кГц | Бесконтактный RFID | T5577, EM4305 | Низкая |
| Cyfral | Бесконтактный | Специальные заготовки | Средняя |
| Metakom | Контактный | Специальные заготовки | Средняя |
| Mifare Classic (защищённый) | Бесконтактный 13,56 МГц | Не копируется простым способом | Высокая |
Обратите внимание на строку с болванками: оригинальные ключи DS1990A перезаписать нельзя, код в них прошит на заводе. Для копий используются перезаписываемые аналоги — RW1990 для контактных ключей и T5577 для RFID-меток 125 кГц. При покупке проверяйте, что заготовка именно перезаписываемая.
Необходимые компоненты
Базовый набор для дубликатора iButton-ключей минимален и недорог. Подойдёт практически любая плата на ATmega328 — Arduino Uno, Nano или Pro Mini. Для RFID-варианта дополнительно понадобится модуль считывателя 125 кГц.
- 🔧 Плата Arduino — Uno или Nano, разницы в функционале для этой задачи нет
- 🔌 Считыватель iButton — контактная площадка с двумя выводами или просто два провода с зажимами
- 📡 Модуль RDM6300 — если планируется копирование RFID-меток 125 кГц
- 💾 Перезаписываемые болванки — RW1990 для iButton, T5577 для RFID
- 🔘 Кнопки и резисторы — для выбора режима чтение/запись
- 📟 Дисплей (опционально) — OLED 0.96" на I2C для отображения считанного кода
Дисплей не обязателен — код ключа можно выводить в монитор порта через USB. Но автономное устройство с экраном и питанием от батареи удобнее в практическом использовании.
Схема подключения считывателя iButton
Контактный ключ DS1990A работает по протоколу 1-Wire: данные и питание идут по одной линии, второй контакт — общий провод (GND). Для подключения к Arduino нужна подтяжка линии данных к питанию через резистор 4,7 кОм — это стандартное требование шины 1-Wire, без резистора шина работать не будет.
Типовое подключение выглядит так: сигнальный контакт считывателя — на цифровой пин (в примерах библиотеки OneWire обычно используется пин D2 или D10), общий контакт — на GND, резистор 4,7 кОм — между сигнальной линией и +5V. Кнопки режимов подключаются на свободные цифровые пины с подтяжкой к земле.
Считыватель iButton:
DATA → D2 (через схему) + резистор 4,7 кОм на +5V
GND → GND Arduino
⚠️ Внимание: не путайте полярность при подключении записывающего контакта к болванке RW1990. Хотя ключи DS1990A устойчивы к переполюсовке, некорректная схема записи может вывести перезаписываемую заготовку из строя. Проверяйте схему конкретного скетча перед первой записью.
☑️ Проверка перед первым запуском
Скетч для чтения и записи ключей
Для работы с шиной 1-Wire используется библиотека OneWire — она доступна в стандартном менеджере библиотек Arduino IDE. Логика скетча проста: в режиме чтения контроллер опрашивает шину, при обнаружении ключа считывает его 8-байтовый ROM-код и сохраняет в массив. В режиме записи этот массив передаётся на болванку RW1990 через специальную последовательность команд.
Фрагмент чтения кода ключа выглядит примерно так:
#include <OneWire.h>
OneWire ds(2); // шина 1-Wire на пине D2
void loop() {
byte addr[8];
if (ds.search(addr)) {
// ключ обнаружен — addr[] содержит его код
ds.reset_search();
}
}
Здесь ds.search(addr) выполняет поиск устройства на шине и заполняет массив addr восьми байтами уникального кода. Первый байт — код семейства (для DS1990A это 0x01), далее шесть байт серийного номера и контрольная сумма CRC. Запись на RW1990 сложнее: болванка требует особой последовательности импульсов, поэтому проще взять готовый проверенный скетч дубликатора из открытых источников, чем писать процедуру записи с нуля.
Почему нельзя просто «скопировать байты» на болванку
RW1990 эмулирует протокол DS1990A, но для записи нового кода использует расширенные команды, которых нет у оригинала. Контроллер должен перевести болванку в режим программирования, передать новый код и подтвердить запись. Тайминги этих операций критичны — поэтому в готовых проектах используются отлаженные функции записи.
RFID-дубликатор на модуле RDM6300
Для копирования бесконтактных меток 125 кГц схема другая. Модуль RDM6300 сам выполняет всю радиочастотную часть и выдаёт код карты через последовательный интерфейс UART — Arduino остаётся только принять данные. Подключение: VCC модуля к +5V, GND к GND, выход TX модуля — к цифровому пину Arduino (удобно использовать программный UART через библиотеку SoftwareSerial, чтобы не конфликтовать с USB-портом).
Запись на болванку T5577 — более сложная задача: этот чип программируется радиосигналом по специальному протоколу, и RDM6300 писать не умеет, он только читает. Для записи T5577 обычно применяют отдельные записывающие модули или собирают схему записи на транзисторном ключе с катушкой. Если цель — только читать коды карт и выводить их на экран, RDM6300 справляется отлично.
Начинайте с чтения: сначала добейтесь стабильного вывода кода ключа в монитор порта, и только потом добавляйте функцию записи. Так проще локализовать ошибку — вы будете точно знать, на каком этапе сбой.
Типичные ошибки при сборке
Чаще всего самодельный дубликатор «не видит» ключ по банальным причинам. Отсутствие подтягивающего резистора на линии 1-Wire — лидер среди ошибок: без него шина физически не может сформировать корректные уровни сигнала. Вторая частая проблема — несовпадение пина в скетче с реальным подключением.
- ❌ Нет резистора 4,7 кОм — шина 1-Wire не работает, ключ не определяется
- ❌ Неверный пин в коде — проверьте соответствие скетча и схемы
- ❌ Плохой контакт — окисленная площадка ключа или неплотный прижим дают сбои чтения
- ❌ Одноразовая болванка — дешёвые «пустышки» TM1990 без поддержки записи не прошьются
- ❌ Питание от слабого источника — просадки напряжения вызывают сбои при записи
⚠️ Внимание: некоторые домофоны ведут «чёрный список» скопированных ключей или проверяют время отклика ключа. Если копия не открывает дверь, хотя код считан верно, возможная причина — защитные механизмы конкретного домофона. Проверить это можно, попробовав копию на другом домофоне того же формата.
Ещё один нюанс: контрольная сумма CRC в последнем байте кода. Если ключ читается с ошибками (код меняется от считывания к считыванию), проблема почти наверняка в контакте или в питании, а не в скетче.
90% проблем самодельного дубликатора — это отсутствие подтяжки 4,7 кОм, плохой контакт с ключом и неперезаписываемая болванка. Проверяйте эти три пункта в первую очередь.
Правовые и практические аспекты
Копирование собственного ключа от собственного подъезда — бытовая задача, но стоит помнить о границах. Изготовление дубликатов ключей для доступа в чужие помещения без согласия владельца или управляющей организации может повлечь ответственность. Используйте дубликатор для резервных копий своих ключей, восстановления утерянного доступа по согласованию с обслуживающей организацией и в учебных целях.
С практической стороны: перед записью болванки всегда сверяйте считанный код с повторным чтением оригинала — два подряд совпавших считывания гарантируют, что вы записываете корректный код, а не мусор из-за плохого контакта. После записи проверяйте копию чтением: болванка должна отдавать ровно тот же код, что и оригинал.
Часто задаваемые вопросы
Подойдёт ли Arduino Nano вместо Uno?
Да, разницы нет — обе платы построены на одном микроконтроллере ATmega328. Nano даже удобнее для компактного автономного устройства. Убедитесь только, что пины в скетче соответствуют вашей разводке.
Можно ли скопировать ключ от домофона с дисплеем и криптозащитой?
Если ключ использует фиксированный код (DS1990A, EM-Marin) — да. Если система применяет криптографические метки (Mifare DESFire, защищённые сектора Mifare Classic) — простой дубликатор на Arduino не справится, потребуется специализированное оборудование.
Почему записанная копия не открывает домофон?
Возможные причины: ошибка при чтении оригинала (проверьте код повторным считыванием), некачественная болванка, сбой записи или защитные механизмы домофона (фильтрация дубликатов). Сначала считайте код с готовой копии и сравните с оригиналом — если коды совпадают, проблема на стороне домофона.
Нужен ли дисплей для дубликатора?
Нет, код ключа можно выводить в монитор порта Arduino IDE через USB. Дисплей нужен только для автономной работы без компьютера. Начинать сборку разумно без дисплея, а экран добавить после отладки основных функций.
Где взять перезаписываемые болванки?
Болванки RW1990 (для iButton) и T5577 (для RFID 125 кГц) продаются в магазинах радиодеталей и на маркетплейсах. При покупке проверяйте в описании, что заготовка перезаписываемая (rewritable) — одноразовые аналоги внешне неотличимы, но не прошиваются.