Программатор домофонных ключей на Arduino чаще всего собирают для копирования ключей iButton (таблетки DS1990A и их аналоги) на перезаписываемые заготовки RW1990 — и первая техническая развилка здесь именно в типе ключа: контактный iButton и бесконтактный RFID 125 кГц требуют разных схем и разных модулей. Если считыватель домофона реагирует на таблетку, но не видит карту, это не неисправность, а признак того, что система работает только с одним стандартом, и программатор нужно строить под него.
В этой статье разберём, как определить тип ключа, какие компоненты понадобятся, как собрать схему на базе Arduino Uno или Nano и как загрузить скетч для чтения и записи. Отдельно затронем правовую сторону: копирование собственного ключа для личного пользования и несанкционированное клонирование чужих идентификаторов — разные вещи, и второе может иметь юридические последствия.
Какие ключи используются в домофонах
Перед покупкой компонентов нужно точно определить, с каким стандартом работает ваш домофон. Возможная проверка проста: приложите ключ к считывателю и посмотрите на его конструкцию. Контактная «таблетка» в пластиковом держателе — это почти наверняка iButton по протоколу 1-Wire (DS1990A или клон). Бесконтактная карта или брелок без металлических контактов — чаще всего RFID 125 кГц формата EM-Marin (EM4100).
Код ключа iButton можно прочитать и визуально: на оригинальных таблетках Dallas он выгравирован на корпусе. У RFID-брелоков номер иногда напечатан на корпусе, но чаще его приходится считывать электронно. Если на корпусе ничего нет — это нормально, скетч выведет код в монитор порта.
- 🔑 iButton DS1990A — контактный ключ, 64-битный код, читается по 1-Wire;
- 💾 RW1990 / RW1990.2 — перезаписываемая заготовка под iButton, на неё и пишут копию;
- 📇 EM4100 (EM-Marin) — бесконтактный ключ 125 кГц, только чтение;
- 🔄 T5577 — перезаписываемая RFID-заготовка, эмулирует EM4100 после записи;
- 🚫 Cyfral и Metakom — резистивные ключи старых домофонов, копируются по-другому и с Arduino iButton-схемой несовместимы.
Что понадобится для сборки
Базовый программатор iButton собирается из минимального набора деталей, доступных в любом магазине радиокомпонентов. Для RFID-варианта дополнительно нужен модуль считывателя — чаще всего используют RDM6300 для чтения EM4100.
| Компонент | Назначение | Примечание |
|---|---|---|
| Arduino Uno / Nano | Управляющая плата | Подойдёт любой клон на ATmega328P |
| Резистор 2,2–4,7 кОм | Подтяжка линии 1-Wire | Точное значение некритично |
| Контактная площадка iButton | Считыватель таблеток | Можно заменить двумя проводами |
| Модуль RDM6300 | Чтение RFID 125 кГц | Только для бесконтактных ключей |
| Заготовки RW1990 / T5577 | Носители для копий | Проверяйте поддержку записи |
Обратите внимание на заготовки: дешёвые «болванки» бывают однократной записи, хотя продаются как перезаписываемые. Проверить это можно только экспериментально — записать тестовый код, стереть и записать другой. Если вторая запись не прошла, заготовка одноразовая.
Схема подключения iButton-программатора
Схема предельно проста: линия данных 1-Wire подключается к цифровому пину Arduino через подтягивающий резистор к питанию +5 В. Второй контакт таблетки — общий провод (GND). Если у вас нет фирменной контактной площадки, центральный контакт ключа прижимается к проводу данных, а ободок — к земле.
Типовое подключение выглядит так: пин D10 (или другой, указанный в скетче) — через резистор 2,2 кОм на 5V и напрямую на центральный контакт ключа; ободок ключа — на GND. Для RFID-варианта модуль RDM6300 подключается по UART: выход TX модуля — на RX Arduino (пин D0 при прошивке лучше отключать, иначе загрузка скетча будет конфликтовать с модулем).
Если используете SoftwareSerial для RDM6300 (например, пины D6/D7), аппаратный UART останется свободным — прошивать плату и смотреть лог можно будет, не отключая модуль.
⚠️ Внимание: не подавайте на линию 1-Wire напряжение выше 5 В и не замыкайте питание на землю прижимом таблетки «вверх ногами» — ключ поляризован, но короткое замыкание питания на корпус способно вывести из строя пин Arduino.
Скетч: чтение и запись ключа
Для работы с 1-Wire используется библиотека OneWire, она устанавливается через менеджер библиотек Arduino IDE (Скетч → Подключить библиотеку → Управление библиотеками). Логика программы строится в два этапа: сначала контроллер читает 8-байтный ROM-код приложенного ключа и выводит его в монитор порта, затем по команде записывает этот код в заготовку RW1990 через специфические команды записи.
Упрощённый фрагмент чтения кода ключа выглядит так:
#include <OneWire.h>
OneWire ds(10); // линия 1-Wire на пине D10
void loop() {
byte addr[8];
if (ds.search(addr)) {
for (byte i = 0; i < 8; i++) {
Serial.print(addr[i], HEX);
Serial.print(" ");
}
Serial.println();
ds.reset_search();
delay(500);
}
}
Запись на RW1990 сложнее: заготовка требует строгой временной диаграммы — команды разблокировки, записи байтов и финального «прошива» кода. Готовые проверенные скетчи-дубликаторы есть в открытых репозиториях; при выборе сверяйте, что скетч рассчитан именно на RW1990, а не на TM1990 или другую разновидность — команды записи у них различаются. После прошивки заготовки обязательно проверьте копию на реальном домофоне, не выбрасывая оригинал.
☑️ Проверка перед записью копии
Частые проблемы и их диагностика
Самая распространённая жалоба — «ключ читается, но домофон копию не открывает». Причин несколько, и проверять их стоит по порядку. Во-первых, убедитесь, что код записался: прочитайте заготовку тем же скетчем и сравните код с оригиналом побайтно. Во-вторых, некоторые домофоны проверяют не только код, но и контрольную сумму семейства (первый байт 0x01 для DS1990A) — если заготовка пишет его некорректно, домофон отклонит ключ.
Если ключ вообще не определяется скетчем, проверьте контакт: окислы на таблетке снимаются ластиком или спиртом, а подтягивающий резистор должен быть именно между линией данных и +5 В, а не последовательно в цепи. Ещё одна возможная причина — ключ оказался не iButton, а Cyfral или Metakom: внешне они похожи на таблетку, но протокол у них другой, и 1-Wire-скетч их не увидит в принципе.
Как отличить Cyfral/Metakom от iButton без приборов
Приложите таблетку к считывателю рабочего домофона: если она срабатывает, но Arduino-скетч на 1-Wire её не видит — вероятно, это Cyfral или Metakom. Также у iButton на торце обычно виден ровный металлический «стакан» с изолятором, а у резистивных ключей конструкция контактов иная. Точно определить тип поможет мультиметр: между контактами Cyfral измеряется сопротивление порядка сотен Ом–единиц кОм, у iButton цепь ведёт себя иначе.
Правовые и практические ограничения
Сам по себе программатор — легальное устройство, а копирование собственного ключа от подъезда, где вы живёте, обычно не вызывает вопросов. Проблемы начинаются там, где копируются ключи от чужих помещений, офисов или систем с договорными ограничениями. Ряд управляющих компаний и производителей домофонов прямо указывает, что идентификаторы выдаются под учёт, и их самовольное тиражирование нарушает условия обслуживания.
⚠️ Внимание: изготовление копий ключей от чужих домофонов, домов и помещений без согласия владельца системы может квалифицироваться как неправомерный доступ. Используйте программатор только для собственных ключей или с явного разрешения владельца системы контроля доступа.
Также учитывайте технический предел метода: современные домофоны с защищёнными идентификаторами и фильтрацией «болванок» могут не принимать копии на RW1990. Если домофон принимает оригинал, но стабильно отклоняет любые заготовки — вероятно, в нём включена защита от дубликатов, и обойти её простым копированием кода не получится. В таком случае корректный путь — заказать дополнительный ключ через обслуживающую организацию.
Программатор на Arduino надёжно копирует классические ключи DS1990A и EM4100 на заготовки RW1990 и T5577, но бессилен против резистивных ключей Cyfral/Metakom и домофонов с защитой от дубликатов.
Часто задаваемые вопросы
Подойдёт ли Arduino Nano вместо Uno?
Да, схема и скетч идентичны — обе платы построены на ATmega328P. Nano удобнее для компактного корпуса, но при использовании RDM6300 следите за распиновкой UART.
Почему скетч не видит ключ вообще?
Проверьте подтягивающий резистор, чистоту контактов таблетки и правильность пина в коде. Если всё в порядке, но ключа нет — возможно, это не iButton, а резистивный ключ Cyfral или Metakom, который протоколом 1-Wire не читается.
Можно ли перезаписать заготовку повторно?
Качественные RW1990 и T5577 допускают многократную перезапись. Однако встречаются дешёвые заготовки однократной записи — проверяйте возможность повторной прошивки на тестовом коде до финальной записи.
Домофон не принимает копию, хотя код совпадает. Что делать?
Вероятные причины: некорректный байт семейства в заготовке, защита домофона от дубликатов или ошибка в процедуре записи. Сравните код побайтно, попробуйте другую заготовку; если и это не поможет — скорее всего, в домофоне включён фильтр копий, и ключ придётся заказывать официально.
Нужен ли отдельный программатор для RFID 125 кГц?
Для чтения EM4100 достаточно Arduino с модулем RDM6300. Для записи на T5577 потребуется либо специальный скетч с формированием сигнала записи, либо готовое устройство-копировщик — запись RFID технически сложнее, чем запись iButton.