Крутой дубликатор домофонных ключей на Arduino

Привет, друзья!
Я запилил копировальщик домофонных ключей на ардуино и сделал пару видосов на своём канале youtube про копирование контактных ключей типа Dallas, токовых ключей Cyfral и Metakom, а также про копирование rfid ключей типа EM-Marine, работающих на частоте 125 кГц. Как раз такие используются в домофонах наших подъездов.

Подробное видео можно посмотреть тут:

Электрическая Схема

Так выглядит схема копировальщика: к ардуино нано подключается луза для копирования контактных ключей, а к ногам 11 и 7 подключается вход и выход rfid модуля.
Rgb-cветодиод для индикации режима чтение/запись/BlueMode, buzzer — для попискивания. Энкодер — для управления дибликатором. На шине i2c подцеплен oled дисплей.

Схема дубликатора

Корпус и Механическая сборка

Я забацал 3D модель кастомного корпуса для моего дубликатора.

А вот как это напечаталось на 3D принтере. У меня нет принтера, но я нашёл человека через сервис дружественная печать.

Чтобы плата энкодера влезла в корпус ее необходимо немного подпилить напильником с конца, на котором нет дорожек.

Катушку можно взять готовую, например от модуля rdm или купить у китайцев на али на 340 мкГн.
Если будете мотать на спичечный короб — это 59 витков.

Вот как выглядит аппарат в сборе.

Скетч и библиотеки

Ссылка на гитхаб библиотеки и скетч. Библиотеки oled дисплея и oneWireSlave нужно сложить в папочку libraries среды ардуино. Для энкодера я использую библиотеку от Алекса Гайвера. Её нужно распаковать туда же.
Также нужно доустановить библиотеку oneWire и TimerOne из репозитория библиотек ардуино.

Описание работы дубликатора

При запуске копировальщик достаёт из eeprom последний сохранённый туда ключик и показывает на дисплее количество ключей в EEPROM, шифр ключа и его тип. Максимум в дубликатор можно сохранить 20 разных ключей.
Rgb диод светит зелёным, т.е ключ уже можно писать на болванку. Если в EEPROM было пусто, на экране будет соответствующая надпись, в ожидании чтения ключа.
Чтобы выбрать из EEPROM другой ключ , достаточно покрутить энкодер вправо или влево.

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

Для перевода в режим записи жмём на кнопку энкодера — светится красный диод. Ключ который отображается на дисплее будет записан на болванку.

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

Но и это ещё не всё! Я прикинул, а что если сделать эмулятор rfid ключа? У меня есть девайс, который может хранить до 20 разных ключей, в нем есть мозги и рамка, как в обычном ключе. С манчестерским кодом я уже разобрался….
Короче, жмём на кнопку энкодера и переключаемся в третий режим — blueMode. Достаточно поднести дубликатор к домофону и … опа.. дверь открывается! Магия!

Если вам понравился проект — поддержите автора!

Если вам нравится самоделка, но чувствуете, что сил сделать самому пока не достаточно — можете заказать самоделку в авторском исполнении.

  • Дубликатор 3200 руб
  • Комплект для самостоятельной сборки 2300 руб

Доставка в ваш город составляет примерно 250 руб и уже входит в стоимость.

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

Необходимые Материалы

Конденсаторы любые неполярные. Я использовал керамические на 50В.

Полезные ссылки

566 комментариев к «Крутой дубликатор домофонных ключей на Arduino»

  1. Добрый день.
    Нужна помощь в подключении энкодера и лузы.
    Энкодер какие пины куда подключать на колодку ?
    CLK, DT, SW, +, GND в какой последовательности Помогите пожалуйста.
    Луза :
    Красный ТМ+
    Черный ТМ-
    Жёлтый LED+
    Белый LED-
    Тоже не могу разобраться как их правильно вставить в пины.
    ПОМОГИТЕ ПОЖАЛУЙСТА

    1. Энкодер:
      CLK — D8
      DT — D9
      SW — D10
      «+» — 5V
      GND — на землю в любом месте

      Луза:
      зелёный — А3
      красный — на отдельную 6 pin колодку (на фото видно)
      белый и чёрный — это светодиод, его можно вообще не подключать (я так и поступил)

  2. Распиновка энкодера есть на схеме автора, где фотография энкодера. По поводу лузы, распиновка есть на схеме принципиальной, где 220 Ом питание светодиода. Если вы сделали плату, то подключаете в нужные разъемы на плате.

  3. Здравствуйте я собрал это, считывает(ME-Marine), но не пишет. Иногда сериал мониторинг показывает (b2). подскажите пожалуйста на что обращать внимание?

    1. Его в скетче нет, т.к. это аппаратный компаратор. Заменить его нельзя

  4. Привет!
    Could you send me URLs for elements but in banggood? I’m not sure about elements what I saw but it’s faster ship.
    I wait for your answer.
    Have a nice day!
    Пока

  5. Собрал прибор.
    Копирует, эмулирует. все как положено. но мне хотелось бы создавать свои rfid ключи (или брать из интернета). слегка доработал прошивку прибора и теперь можно вгружать в него ключи формата FF:8F:A0:5:6:1:A5:30:
    при считывании прибор в ком порт выдает это FF:8F:A0:5:6:1:A5:30: ( id 30 key 10551620) Type: EM-Marie
    и у меня возник вопрос можно ли из 10551620 сделать FF:8F:A0:5:6:1:A5:30
    просмотрел очень много сайтов и нашел интересную программу.
    из 0010551620 она делает
    текстовый формат: 161,00324
    шестнадцатиричный формат: A10144
    для контроллеров болид: 7F000000A1014401
    Но никак не могу найти нужную информацию. эти цифры (0010551620) нацарапаны непосредственно на ключе. можете помочь?

    1. Николай, поделитесь пожалуйста скетчем
      В заранее спасибо!
      vlad.misharin2014@yandex.ru
      Приведите пример ввода команды, а то я пытался командой ASCII ‘$01 12 1c fb 09 00 00 3e;’
      У меня ключ не отображается.

  6. Собрал прибор.Бесконтактные ключи считывает,а вот записывать никак не получается -на дисплее пишет The key copy faild.На катушке стабильно 25 вольт.Помогите пожалуста разобраться в чём тут дело,очень бы хотелось иметь такой прибор.С уважением-Дамир.

    1. В сети проще встретить однокурсников, чем в жизни))

    1. Я товарищ дерево чтобы что то менять .Тупо все закинул в Arduino IDE скетчи и проверив компиляцию прошил Arduino

  7. Привет, все сделал как на видео. Получилось шикарно. Но есть одна проблема. Когда он входит в третий режим (синий режим), он не может выйти. Для входа в первый режим (чтение) требуется перезагрузка. В ролике тоже пропущен этот момент. Как я могу решить эту проблему. Простите за плохой русский, но я из Болгарии.

    1. Странно.. у меня не зависает в 3-м режиме

  8. почему не происходит считывание с лузы ?
    в какую сторону копать ????
    подскажите !!!!

    1. тут уже ответ по моему писали -поищите

  9. Здравствуйте! Подскажите пожалуйста в чём проблема? RFID ключ читается, при попытке записать на болванку, ничего не происходит. В консоли:
    Mode: 2
    FF:A7:A0:4:B0:51:4A:5E: ( id 78 key 10232120) Type: EM-Marie

  10. Здраствуйте. У меня измерения 2.7 вольт. Вроде все проверил, но что то не получается. Помогите куда смотреть

    1. Или катушка не та или подбирать кондер 4700пФ

  11. Подскажите, а можно ли сюда прикрутить готовую плату RFID-RC522, чтобы не мотать катушку и т.д.?

  12. Уважаемый МЕХАТРОН DIY! Ваш проект посто супер! Пользуюсь уже пол года. Теперь бы простенькую СКУД на ЕМарине создать и был бы полный комплект. Сделайте, пожауйста! Тема очень актуальная…

    1. Добрый день, подскажите в чем может быть причина неисправности. Собрал дубликатор, работал до недавнего времени исправно, в один не прекрасный момент перестали читаться и писаться метки rfid. Думал села крона. Батарейку сменил, но метки так и не читаются. Очень редко получается считать но при попытки записи выдает ошибку. Ключи типа Даллас читаются без проблем. Напряжение в контрольной точке >15в. Странный феномен. Работал же и вдруг перестал

  13. Здравствуйте .
    Подскажите пожалуйста ключ для домофона сс 20 , написано на домофоне Cyfral оригинальный DS2000A Ваш дубликатор , модернизированный . доработанный , сможет прочесть и записать этот прочитанный код на заготовку ТМ-01 или КС-07 ? На видео Вы показали на видео как прочесть код с оригинального ключа Метаком и записали прочитнный код на заготовку ТМ-01. А извините повторюсь для ключа DS2000A от домофона Cyfral можно код прочесть и записать его на заготовку ТМ-01 или КС-07 ?Спасибо за ответ .

  14. Всем доброго времени суток, проблема такая, собрал копировальщик, некоторое время работал без нареканий. , в один прекрасный момент перестали читаться и писаться ключи rfid. Изредка считывает в определенном месте катушки, но на запись ключа выдает ошибку. Катушку прозвонил, целая, пайка тоже в порядке. Странно, что же это может быть

    1. Попробую пересобрать RFID модуль, может в нем проблема

  15. Задал вопрос по поволу чтения и записи ключа от домофона Cyfral СС 20 оригинальный ключ DS2000A на данной разработке автора , но отчего то до сих пор нет ответа от автора сайта , не ужели автору трудно ответить.

    1. собрал сегодня и нихуя не работало, даже заготовку не читало

  16. Объясните, пожалуйста, как работает фрагмент кода проверки вертикальной четности:

    k = 1&buf[1]>>5 + 1&buf[1] + 1&buf[2]>>3 + 1&buf[3]>>6 + 1&buf[3]>>1 + 1&buf[4]>>4 + 1&buf[5]>>7 + 1&buf[5]>>2 + 1&buf[6]>>5 + 1&buf[6] + 1&buf[7]>>3;
    if (k&1) return false;

    Если предполагается, что из буфера выбираются необходимые биты, суммируются и сумма проверяется на четность, то в коде ошибка. Если учесть приоритет операций, то оператор суммирования имеет наибольший приоритет по сравнению с операторами сдвига и битовыми операторами. Получается, что при выделении 1-го бита буфер сдвинется не на 5ьф, а на 6 (=5 + 1) битов. А операция «&» (битовое «и») будет выполнена в последнюю очередь.
    Для того, чтобы алгоритм заработал так, как я предположил вначале, необходимо операнды суммирования заключить в круглые скобки.
    Или я что-то не понимаю и алгоритм работает по-иному?

    1. Еще раз посмотрел таблицу приоритетов операций С++. Похоже, вы правы. Но в результате код работает правильно. В ардуино используется не чистый С, а wiring. Может в этом дело… На всякий случай можно расставить скобки

  17. На плате присутствуют контакты J1 и P3.
    Для чего они? Насколько я вижу, они не были использованы.

    1. adcsrb was not declared in this что это значит?ошибка в скетче или я что то не правильно делаю?

  18. Как скачать библиотеки? Какой то ресурс НЕРУССКИЙ! Бредятина! Нахрен это нужно? Вы же русский человек!

    1. А где вы видели чтобы программы для микроконтроллеров писались на русском языке ? И для перевода на русский ресурса в браузере существует переводчик страниц

  19. Отличный проект, все в тему. Соберу себе такой-же.
    Прошу подкорректировать рисунки схем на отсутствие выключателя электропитания. В комплектующих есть, на схеме нет… Мне кажется нужно чтобы все соответствовало.

  20. Поделюсь своей болью. Доработал сей девайс до последней версии с дисплеем и энкодером. И тут начались танцы с бубном. То читает ключи то нет, весь мозг сломал. Перебрал схемку детектора, перемотал катушку, а он как глючил так и глючит. Причём предыдущая версия работала как часы! За это огромное спасибо автору! И вот спустя 4 часа мучений замечаю на картинке маленькую чёрную закарючку выходящую из пина D6 ардуины. Припаял эту злосчастную массу и олле опп всё заработало как часы.

    1. Здравствуйте уважаемый Николай, а можно по подробнее про D6 ? А как припаять массу ?

  21. МЕХАТРОН DIY, а есть функция удаления лишних ключей? Если нет, то нельзя ли сделать?

    1. Качайте скечь автора, я им пользуюсь. Отлично всё работает. Скечи других проектов тоже отлично работают, лично проверял. Вообще всё что он выкладывает проверено им самим и уже многими людьми. Если что то не работает, ищите косяки в сборке, пайке, наличии или отсутствии правильных библиотек. Если так и не заработало значит у вас руки кривые и это не ваше! Без обид! 🙂

  22. Всем привет. Подскажите, что не так с Rfid. Катушка от RDM6300(приблизительная индуктивность 420 мкГн). Подогнал резонанс кондером. Сначало 3,9 нф(на катушке 12 вольт), затем 3,6 нф(17 в), сейчас 3,3 нф(27 вольт). Но при всем при этом не читает 125 кгц. Светодиод начинаем моргать по другому, но считывание не идет. В момент когда карта под считывателем напряжение падает до 13 вольт. Пробовал 3 разных ключа, ни один не прочитался. Объясните, где я рукожоп и может ли быть из-за того что использую в обвязке СМД компоненты

    1. смд не при чем. Как именно ключи были?

    2. Один для вызывной панели fermax, второй либо Vizit, либо Cyfral, третий не знаю.

  23. Классный копировальщик, собрал, всё работает. Но есть вопрос — можно ли записывать свой код в RFID балванку, если можно то как?

  24. спасибо все получилось. Но возникла другая поблема ключи типа Type: EM-Marie считает, а типа Т5557 не считает и не пишет. Как все это преодолеть.

  25. Собрал копировщик. Таблетки копирует без проблем. Рамку сделал 340 микрогенри, но rfid ключи не читает. В чем может быть проблема? Должен ли прибор как-то реагировать на неподходящий ключ… издавать какой-то сигнал? Как проверить работоспособность этой части прибора?
    А в целом спасибо. Ждём следующей версии.

  26. На сколько я помню тип ключа определяется по коду семейства 1-wire(01 для DS1990A), возможно ошибаюсь, т.к. давно делал.
    В архиве есть файл DublicatorMan.txt. В нем соответственно описание того что и как отправлять. Тестировал только на ключах DS1990A, на остальные не было нужды, но я думаю будет работать.

  27. Я не понимаю — как ЭТО может работать… Поменял энкодер на GyverButton — 3 кнопки, выбросил светодиод лузы, заменил дисплей на LiquidCrystal 1602, адаптировал под него сообщения… , включаю… Приветствие (на дисплее и спикере) есть, сообщение «ROM пустой» есть, G_LED не загорелся (вообще ничего не светится) — значит мы в режиме md_empty. Нажимаю на батон MODE (бывший isClick энкодера) — пишет «Ключ 0 в 0 ROM 0:0:0:0:0:0:0:0: тип «неизвестный» » и остается в режиме md_empty. Попытался разобраться в условиях переключения режимов — в switch (copierMode) черт голову сломит. Почему их два и что там происходит… ЭТО не может работать в таком виде !!! Как покинуть md_empty и войти в md_read если в памяти нет ни одного ключа…??? Какие пины еще (с D7 разобрались) нельзя менять?

  28. …Все…разобрался… Но есть ряд вопросов…
    1. Каким образом строки для вывода на дисплей 1602 (подключенный по 4-х битному интерфейсу) влияют на G_LED ? Он начинает моргать или гаснет совсем если изменяется String st.
    2. Правильна ли замена байта 0b0011 на 0b0111 в функции ADCsetOn в строке ADMUX = (ADMUX&0b11110000) | 0b0011 | (1<<ADLAR);// (1 << REFS0); если надо поменять пин А3 на А7?
    3. Можно ли удалить из скетча без последствий все что касается работы с Serial-терминалом и функции ACsetOn (она нигде не востребована)?
    4. Луза — это просто контакты или там что-то есть, ибо подключение ключа Dallas проводками не работает?
    5. Катушка RF…Осциллограф показал полную амплитуду импульсов около 40 V. Это не очень много? Карточки EM_Marine определяет пишет и эмулирует нормально, а маленькие ключи Metacom — через пень-колоду на десятый раз, и постоянно ловит какие-то шумы и пытается идентифицировать их как ключи. Что мне предпринять?

  29. На 1-й и 3-й вопросы ответы нашлись. Ответ на 1-й вопрос: убрал макросы F() и светодиоды заработали. Ответ на 3-й вопрос: закомментил все не нужное работоспособность не пострадала… Остальные вопросы открыты.

  30. Аууу!!! Где вы все!!!??? Кто нибудь объяснит — как этот говнокод работает???
    bool read_cyfral(byte* buf, byte CyfralPin)
    bool read_metacom(byte* buf, byte MetacomPin)
    Вы ничего не замечаете? Переменные из говна и палок…, и в скетче такого вот мусора до-хрена.
    Какие-то ненужные функции, переменные…, а они, между прочим, место занимают…
    МЕХАТРОООН!!! ТЫ ГДЕ???
    Позарез надо поменять пин А3 на А7… Поменял в #define, поменял в ADCsetOn() ADMUX 0b0011 на 0b0111 (может не правильно)… — не работает…, читает 00000000. Может где-то что-то еще надо поменять???
    …и наведи, наконец, порядок в коде… позорище…

    1. Евгений, если вы такой борец за чистоту кода, значит сможете самостоятельно разобраться с A3 и А7.

  31. Обиделся… Ты приготовил вкусное блюдо для дорогих гостей… Честь тебе и хвала… Можно подать его красиво сервированным со словами: «кушайте пожалуйста» (бери пример с Gyvera), а можно кинуть в миску с костями, чешуей, шелухой и сказать: «нате-жрите, сами разберетесь»… Я слабый (никакой) программист и тем более никогда не работал с регистрами напрямую — не разберусь. И подавно не разберусь в авторских тонкостях… Мне пришлось вмешаться в код и переделать на 1602 т. к. OLED дисплей мелковат для моего зрения и плату надо было подогнать под корпус. Я потратил время и деньги впустую, да еще ковыряешься в функциях, которые (rкак потом выясняется) прграммой даже не используются — обидно. Ты творец, и кому — как не тебе помогать, хотя бы, советами…
    Да… вот что еще нашел:
    TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20) Нафига «поджигать» 250 кГц на D3… у тебя там G_LED, а у меня — спикер…

    1. Народ кто подскажет, собрал данный дубликатор вроде заработало, таблетки читает(писать не пробовал), рфид читает и пишет только е маринэ а вот ни цифрал не метаком не читает, на контуре 15 вольт. Может напряжения мало куда копать?

    2. Это необходимо, чтобы получить 125кГц на pin11. Код подробно прокомментирован

    3. Максиму. Цифрал и Метаком — контактные ключи. Ты, наверное, путаешь с ТехКомом… Он на 13 МГц…

  32. Ты чего до человека докапался?, не нравиться делай как тебе надо с нуля и т.д. У всех работает только у тебя запары с какой то ерундой. Ключи копирует TM, Rfid и ладно. У меня изумительно все работает.

    1. В том то и вопрос, что RFID читает, а TM — одни нули. Мне пин А3 на А7 надо поменять, а в коде бардак и неразбериха…

  33. Ключи действительно были от ТехКом, я из за них 5 разных катушек намотал пока не догадался попробовать другой ключ 🙂
    У меня появилась пара вопросов:
    1 можно ли брать катушку из ключа или карточки em-marine чтобы не мотать самим?
    2 можно в третьем режиме транслировать ключи ТМ если сделать контакты из ключа?
    3 было бы хорошо те же функции ток на 13,56МГц и экранчик побольше.
    Паять умею а вот программирование не дается к сожалению.
    Заранее спасибо за ответ, автору большое спасибо

  34. Привет «МЕХАТРОН DIY»
    Вопрос.
    ты данную тему забросил ?
    что бы сделать (v4) ?
    а то столько времени прошло и все (

    1. МЕХАТРОН молчит, как рыба об лед… Наверитенил и в тину… Может ты подскажешь — куда копать?
      Надо мне было поменять А3 на А7 . Поменял в #define, поменял в ADCsetOn() ADMUX 0b0011 на 0b0111 (может не правильно)… — читает 00000000. Вставал осциллографом на А7 — высокий уровень. Ложится в «0» при подключении ключа и никаких импульсов. Куда копать???

    2. Очень обидно что не продолжает в этом направлении. Видимо слишком мало донатов по этому проекту.
      вот ему перестала быть интересна эта тема….

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх