Авторизация
Зарегистрироваться

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


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

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

Мозгами будет Arduino Nano v3 неоднократно рассмотренная на этом ресурсе.

Корпусом для этого устройства будет служить неисправный «однобаночный повербанк», так же неоднократно обозримый и тут, и там. Из внутренностей «повербанка» останется только печатная плата с гнёздами USB и MicroUSB. Через MicroUSB будем питать устройство от 5В, так же может быть запитано от порта Mini-USB Arduino. Через USB подключим считыватель iButton. Всё остальные электронные компоненты выпаяны из платы «повербанка». Кнопка для дубликатора куплена в оффлайне, ничего особенного в ней нет, обычная, без фиксации. В корпусе проделаны отверстия для порта Mini-USB расположенного на плате Arduino и над кнопкой «Reset».


Считыватель iButton, взят от какого-то неведомого устройства, ничего особенного в нём нет, просто контактная площадка. К считывателю припаян USB штекер. Так как разъём используется не по назначению и чтобы ничего не «сжечь» при подключении считывателя к порту ПК, ноутбука или зарядного устройства, для подключения используются провода зелёного «Data+» и белого «Data-» цвета.



Дополнительное фото






Дубликатор со считывателем и ключами:

Светодиоды для индикации процесса прошивки на корпус не стал выводить, корпус белый и хорошо просвечивается, всё видно.

Схема подключения:

Резистор R2 поставил 1кОм, в интернетах пишут что надо 2,2 кОм.
Вовка одобряет...


Программное обеспечение. Для компиляции необходима библиотека OneWire взять её можно тут.
Скетч от 27.06.2016


#include <OneWire.h>

#define pin 11
OneWire ibutton (pin); // Пин D11 для подлючения iButton (Data)
byte addr[8];
byte ReadID[8] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F }; // "Универсальный" ключ. Прошивается последовательность 01:FF:FF:FF:FF:FF:FF:2F

const int buttonPin = 6;
const int ledPin = 13;
int buttonState = 0;
int writeflag = 0;
int readflag = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(115200);
}

void loop() {

  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    readflag = 1;
    writeflag = 1;
    digitalWrite(ledPin, HIGH);
  }
  if (!ibutton.search (addr)) {
    ibutton.reset_search();
    delay(50);
    return;
  }

  digitalWrite(ledPin, HIGH);
  delay(50);

  for (byte x = 0; x < 8; x++) {
    Serial.print(addr[x], HEX);
    if (readflag == 0) {
      ReadID[x] = (addr[x]);
    }
    Serial.print(":");
  }

  byte crc; // Проверка контрольной суммы
  crc = ibutton.crc8(addr, 7);
  Serial.print("CRC: ");
  Serial.println(crc, HEX);
  digitalWrite(ledPin, LOW);

  if ((writeflag == 1) or (Serial.read() == 'w')) {
    ibutton.skip(); ibutton.reset(); ibutton.write(0x33);
    Serial.print("  ID before write:");
    for (byte x = 0; x < 8; x++) {
      Serial.print(' ');
      Serial.print(ibutton.read(), HEX);
    }
    // send reset
    ibutton.skip();
    ibutton.reset();
    // send 0xD1
    ibutton.write(0xD1);
    // send logical 0
    digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60);
    pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10);

    Serial.print('\n');
    Serial.print("  Writing iButton ID:\n    ");
    byte newID[8] = { (ReadID[0]), (ReadID[1]), (ReadID[2]), (ReadID[3]), (ReadID[4]), (ReadID[5]), (ReadID[6]), (ReadID[7]) };
    ibutton.skip();
    ibutton.reset();
    ibutton.write(0xD5);
    for (byte x = 0; x < 8; x++) {
      writeByte(newID[x]);
      Serial.print('*');
    }
    Serial.print('\n');
    ibutton.reset();
    // send 0xD1
    ibutton.write(0xD1);
    //send logical 1
    digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(10);
    pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10);
    writeflag = 0;
    readflag = 0;
    digitalWrite(ledPin, LOW);
  }
}

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;
}

Скетч от 04.09.2016, добавлена функция восстановления ключей с неправильным family code


#include <OneWire.h>

#define pin 11
OneWire ibutton (pin); // Пин D11 для подлючения iButton (Data)
byte addr[8];
byte ReadID[8] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F }; // "Универсальный" ключ. Прошивается последовательность 01:FF:FF:FF:FF:FF:FF:2F

const int buttonPin = 6;
const int ledPin = 13;
int buttonState = 0;
int writeflag = 0;
int readflag = 0;
int val = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(115200);
}

void loop() {

  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    readflag = 1;
    writeflag = 1;
    digitalWrite(ledPin, HIGH);
    val++;
    if (val > 6) val = 6;
    Serial.print(val);
    delay(500);
  }
  else {
    val = 0;
  }


  if (!ibutton.search (addr)) {
    ibutton.reset_search();
    delay(50);
    if (val <= 5) return;
    val = 0;
  }

  digitalWrite(ledPin, HIGH);
  delay(50);

  for (byte x = 0; x < 8; x++) {
    Serial.print(addr[x], HEX);
    if (readflag == 0) {
      ReadID[x] = (addr[x]);
    }
    Serial.print(":");
  }

  byte crc; // Проверка контрольной суммы
  crc = ibutton.crc8(addr, 7);
  Serial.print("CRC: ");
  Serial.println(crc, HEX);
  digitalWrite(ledPin, LOW);

  if ((writeflag == 1) or (Serial.read() == 'w')) {
    ibutton.skip(); ibutton.reset(); ibutton.write(0x33);
    Serial.print("  ID before write:");
    for (byte x = 0; x < 8; x++) {
      Serial.print(' ');
      Serial.print(ibutton.read(), HEX);
    }
    // send reset
    ibutton.skip();
    ibutton.reset();
    // send 0xD1
    ibutton.write(0xD1);
    // send logical 0
    digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60);
    pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10);

    Serial.print('\n');
    Serial.print("  Writing iButton ID:\n    ");
    byte newID[8] = { (ReadID[0]), (ReadID[1]), (ReadID[2]), (ReadID[3]), (ReadID[4]), (ReadID[5]), (ReadID[6]), (ReadID[7]) };
    ibutton.skip();
    ibutton.reset();
    ibutton.write(0xD5);
    for (byte x = 0; x < 8; x++) {
      writeByte(newID[x]);
      Serial.print('*');
    }
    Serial.print('\n');
    ibutton.reset();
    // send 0xD1
    ibutton.write(0xD1);
    //send logical 1
    digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(10);
    pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10);
    writeflag = 0;
    readflag = 0;
    digitalWrite(ledPin, LOW);
  }
}

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;
}



Как это работает:

Для вывода содержимого ключа подключаем дубликатор через порт Mini-USB к компьютеру. Устанавливаем драйвер устройства.
В диспетчере устройств появится COM-порт с каким-либо номером, в моём случае 4.
Скрин


Запускаем программу Putty, выбираем тип соединения «Serial» прописываем номер COM порта, в моём случае 4, и скорость 115200.
Скрин


Нажимаем кнопку «Open» и прикладываем ключ к считывателю.
Скрин



Для копирования прикладываем ключ к считывателю. Светодиод на корпусе Arduino подключенный к пину D13 начинает мигать, это говорит о том, что код ключа считался в память дубликатора. Нажимаем «зелёную» кнопку записи, светодиод начинает светиться постоянно. Прикладываем ключ который хотим записать, светодиод тухнет и примерно через 1 секунду начинает мигать, это значит что ключ записан.

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

Важно! При записи «универсального» ключа, например такого 01:FF:FF:FF:FF:FF:FF:2F, нужно правильно указать контрольную сумму ключа, в данном случае 2F это и есть контрольная сумма, рассчитывается по особому алгоритму, который описывать не вижу смысла. Ключ можно записать с кривой контрольной суммой, и скорее всего считываться устройствами (домофонами, панелями) он будет, но устройства будут его игнорировать.

Например нам нужно прошить ключ 01:12:34:56:AB:CD:EF:XX. Первый байт, передаваемый из памяти ключа, является кодом типа устройства — family code, всегда 01. После него идёт гарантированно уникальный серийный номер (6 байт) 12:34:56:AB:CD:EF. Последний байт XX несёт информацию Cyclic Redundancy Check (CRC), что означает проверочный циклический избыточный код. CRC специальным образом вычисляется от первых семи байт.
Для вычисления контрольной суммы вместо XX записываем любое шестнадцатеричное число, например AA. Получаем ключ следующего вида 01:12:34:56:AB:CD:EF:AA. Заменяем в скетче строку
byte ReadID[8] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F };

на
byte ReadID[8] = { 0x01, 0x12, 0x34, 0x56, 0xAB, 0xCD, 0xEF, 0xAA };
прошиваем ключ и смотрим что там, а там видно что в поле CRC должно быть E0.

Меняем в скетче строку
byte ReadID[8] = { 0x01, 0x12, 0x34, 0x56, 0xAB, 0xCD, 0xEF, 0xAA };

на
byte ReadID[8] = { 0x01, 0x12, 0x34, 0x56, 0xAB, 0xCD, 0xEF, 0xE0 };

снова прошиваем ключ и смотрим что там, а там теперь ключ с правильной CRC.

Коды ключей тут.

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

UPD. В скетч от 04.09.2016 добавлена функция восстановления ключей с неправильным family code, для этого необходимо приложить ключ к считывателю и удерживать кнопку в течение 6 секунд. После этого в ключ будет записан «универсальный» ключ. Спасибо за помощь товарищу krassalex'у. Подробнее тут.


Лирическое отступление
Сейчас с домофонами устанавливают всякие фильтры для проверки подлинности ключей. Самый подлый который мне попался, установлен у родителей в подъезде. Например в болванку зашит ключ 01:12:34:56:AB:CD:EF:E0, контрольная сумма верная и фильтр домофона пытается изменить один из 6 байт ключа, так как ключ перезаписываемый, то фильтру это удаётся. Теперь в болванке уже ключ 01:12:34:16:AB:CD:EF:E0 с естественно неверной контрольной суммой E0. Так как контрольная сумма неверная, то домофон игнорирует эту последовательность при считывании. Этот домофон загубил все перезаписываемые ключи, пока я разбирался в чём дело и почему «сами по себе» меняются данные в ключах. В итоге дубликат к этому домофону сделать не удалось, пришлось идти в обслуживающую организацию и заказывать ключик за 100 рублей. :)

В итоге получаем полезную в хозяйстве штуку за смешные деньги, «болванки» для записи продают тут, хотя у нас в оффлайне можно найти по 30 рублей за штуку, у копировальщиков на рынке по 100 — 150 рублей :).
UPD. О том какие типы ключей можно записать этим дубликатором читаем тут. Спасибо за помощь товарищу biverov'у.
Планирую купить +128 Добавить в избранное +95 +184
свернуть развернуть
Комментарии (150)
RSS
+
avatar
+7
Ай, молодец! Какой полезный штука замутил!
+
avatar
  • lexx
  • 27 июня 2016, 01:07
+5
Что это за домофон который ключи меняет подскажите модель? И кстати а если ключ финализировать?
+
avatar
  • kvolk
  • 27 июня 2016, 01:17
+3
Болванки rw1990 не финализируются. Если взять другие ключи с финализацией, то домофон не сможет отличить его от неперезаписываемого ключа DS1990A и, скорее всего, откроет дверь. Но функция финализации не предусмотрена в этом дубликаторе. Для фнализации нужно подать 9В после определённой последовательности данных при записи. Довольно сложно это реализовать. Тут-то смысл в том, что дёшево, быстро, для большинства устройств подойдёт.
Домофон, предположительно Vizit, без опознавательных знаков, точнее они все затёрты.
+
avatar
  • lexx
  • 27 июня 2016, 01:22
0
На arduino uno r3 наверно можно подать 9В
+
avatar
  • kvolk
  • 27 июня 2016, 01:26
0
Без дополнительного обвеса — никак.
+
avatar
+1
Подать можно, да и на большинство остальных тоже, но не на ноги — только для питания через специальный пин.
+
avatar
0
Да вроде не так уж сложно, глядя на схему — пара транзисторов как ключи и step-up до 9В (или крона, хотя она внутрь не влезет, вроде как)
+
avatar
  • volser
  • 27 июня 2016, 09:35
0
Так для этого устройства только rw1990 годные?
+
avatar
  • kvolk
  • 27 июня 2016, 09:47
0
Я использую rw1990, другие не пробовал, у меня их нет.
+
avatar
+8
Вопрос на засыпку — вы ключи от квартиры столь же часто копируете/теряете? )))
Это намёк на то, что полезность устройства весьма ммм… сомнительна чтоли… Впрочем, правильный кот вполне вполне оправдывает автора (про стремление к рукоблудию я уж не говорю — оно похвально по умолчанию! ))).
+
avatar
  • kvolk
  • 27 июня 2016, 01:42
+4
Не часто, но иногда обслуживающая организация делает ревизию ключей, ставит домофон на «обучение» на недельку, и все те кто не пользовался ключами в эту неделю попасть к себе в дом не могут. На вопрос: «Почему не работает?» отвечают: «Сломался ключ, покупайте новый!», хотя ключи прекрасно читаются, это бизнес :). А так как у нас есть резервные связки ключей, для родственников и гостей, которыми мы не пользуемся месяцами, то эти ключи перестают работать :(. Именно по этой причине запилил этот дубликатор.
+
avatar
  • katran
  • 27 июня 2016, 01:52
+2
все проще. потребуй от организации цифровой код на открытие
он есть практически на всех домофонах
.
и его дай гостят\родственикам
+
avatar
  • kvolk
  • 27 июня 2016, 01:54
+2
«Сломался ключ, покупайте новый! Кода нет!» Как-то так :)
+
avatar
  • katran
  • 27 июня 2016, 02:56
+4
код есть! всегда. просто надо начать выносить мозг этим клоунам
.
не кто не имеет права ограничивать вход в подъезд
.
если чтото не нравится пускай их человек сидит у двери 24\7 и открывает по первому требованию
+
avatar
+1
естественно коды есть. но их не дают.
не каждый пойдёт в суд из-за кода…
+
avatar
+4
Домофон — общая собственность жильцов.
Они могут (общим решением) делать с ним всё, что хотят: снять, поставить, выключить, включить, сменить обслуживающую организацию, программировать самостоятельно, и т. д.
Подсказать, что нужно делать?
+
avatar
+2
Если дом этажей 17 и подъездов так 7, подскажите как заставить эту массу народа прийти на собрание.
+
avatar
0
На Ваш домофон скидывались все 7 подъездов?
Кроме того, для добросовестного использования общего имущества не всегда требуется общее согласие.
+
avatar
+1
домофон был при постройке дома. входит он в общедомовое имущество.
Подскажите, как цивилизованно решить вопрос с кодом не прибегая к общему собранию.
+
avatar
+1
Обратиться с письменным требованием-претензией в УК. Договор с обслуживающей организацией наверняка заключала она. Как обычно, лучше «коллективно» (распечатайте N заявлений, попросите соседей их подписать, отправьте их отдельными ценными письмами (чтобы была опись) ценностью 1 рубль).
Это может быть долгий путь.

Быстрый и неофициальный — наладить личные отношения с инженером, обслуживающим домофон.

Более неофициальный — прописать самому. Если подойдёт один из «стандартных» — даже вскрывать ничего не надо…

А вообще, я не адвокат. :) Я думаю, это не то место, где нужно это обсуждать.
+
avatar
0
Более неофициальный — прописать самому. Если подойдёт один из «стандартных»
не подойдет, потому что для входа в режим программирования нужен индвидуальный код домофона, который написан внутри блока электроники. Который не находится в вызывной панели и его нужно еще найти.
С жалобами понятно, на жалобу будет дан официальный ответ, что работа кодов непредусмотрена (хоть мы и знаем, что это не так). Всё.
А дальше только в суд, а это минимум на пол года тягомотина.
+
avatar
0
Я разве говорил, что с панели? ;)
+
avatar
  • katran
  • 27 июня 2016, 12:07
+1
какой суд ты о чём?

P.S.
многие банально не знают про наличии Кодов доступа, по мимо ключей.
а эти «клоуны» намерено скрывают такую возможность работы системы
(всем хочется побольше поиметь с жильцов помимо абонентской платы, это просто бизнес нечего личного )
+
avatar
0
Дело было в прошлом году: приятель написал заявление в домофонную конторку и ему дали код. А вот когда его отец поступил точно так-же -отказали. Только через суд удалось добиться предоставления кода. Основной аргумент домофонщиков -нарушение уровня безопасности…
То есть когда народ тупо кирпичом дверь подпирает -это безопасно, а если я дал код знакомому -это ужас-ужас…
+
avatar
  • katran
  • 27 июня 2016, 21:36
-1
хочешь сказать что они материально отвечают за имущество и здоровое жильцов?
+
avatar
0
конечно они ни за что не отвечают, тупо голову «любят».
+
avatar
  • SEM
  • 28 июня 2016, 09:24
+3
Я, как житель, категорически против кодов домофонов, т.к. «копирование кода» никак не ограничено. Сегодня по коду ходит родственник жильцов квартиры напротив, завтра код узнал ещё кто-то, послезавтра его знают все наркоманы и любители погрызть семечки в тепле.
Только ключи (таблетки или карты), только по количеству официально проживающих.
+
avatar
  • kvolk
  • 28 июня 2016, 10:29
+2
Согласен, с кодом полный бардак, через месяц будет известен всем. Родители сказали сказали детям, дети всему двору, или на двери маркером напишут.
+
avatar
  • katran
  • 28 июня 2016, 10:49
+2
Только ключи (таблетки или карты), только по количеству официально проживающих.
которые копируются на раз два.и от которых по сути нет толку кто хочет тот и ходит…
да и вообще если надо звони в любую квартиру и говори почта… откроют в 9 из 10 квартир
.
обще-подъездный домофон по сути не более чем закрывалка двери от сквозняка и ВСЁ
.
хотя некоторые верят что домофон их спасёт от кражы или гопоты

P.S.
да и вообще если угодно можешь домофонщиков хоть каждую неделю заставить менять код…
они не плохие $$ за воздух получают (абонентской платой с дома)
хотя большинство таких нытиков боятся права качать, дальше чем в интернете

P.S.S.
я лично против когда кто-то там решил что он имеет права ограничить доступ. да ещё за это требует $, при этом не неся не какой ответственности материальной
+
avatar
  • SEM
  • 28 июня 2016, 11:53
+1
которые копируются на раз два.и от которых по сути нет толку кто хочет тот и ходит…
Чтобы скопировать — нужно иметь оригинал и потратить 150 рублей. Это хоть какой-то барьер от желающих поссать в подъезде, в отличие от кода, нацарапанного на двери.

Но с тезисом «домофонная компания гребёт бабло из воздуха» согласен, умножил сумму из квитанции на число квартир в подъезде, за год сумма превышает стоимость домофона.
А если соскочить с обслуживания — кто-то должен будет взвалить на себя работу по замене ключей, вызове ремонтников в случае поломки домофона и сбору денег на этот ремонт. И скандалам с теми кто деньги не сдаёт — им ведь вход в подъезд не запретишь, а переговорным устройством пользоваться им м.б. и не надо.
+
avatar
0
Только ключи (таблетки или карты), только по количеству официально проживающих.
А смысл?
Если кому нужно пройти в подъезд тупо постоит полчаса возле подъезда.
войдет вслед за входящим или выходящим.
+
avatar
  • SEM
  • 30 июня 2016, 10:21
0
Или не станет ждать и пойдёт в ссать в другой подъезд.
Да и жители бывают разные, некоторые таких «просачивающихся» принципиально не пускают, «открывай своим ключом или звони к кому пришёл». Особенно если это пьяный бомж или группа быдлодетей с «ягуаром» и семечками.
+
avatar
0
Коды меняются.
Для своего домофона я нашел алгоритм без мастер-ключей- требуется подтверждающее нажатие на кнопку из квартиры для смены.
п.с. ежемесячная плата раньше даже покрывала стоимость домофона (основного блока)
+
avatar
+2
Встречались такие. Залез в домофон, вытащил из панельки eeprom-ку и вычитал содержимое. Для визитов есть софт, который показывает по дампу все пароли, ну и ключи
+
avatar
-3
Купил универсальный ключ и нет проблем.
+
avatar
  • kvolk
  • 27 июня 2016, 09:23
+3
А что вы понимаете под словом «универсальный»?
+
avatar
+1
Может фомку? )
+
avatar
  • vadik
  • 30 июня 2016, 15:52
0
Пустой (тобишь забитый нулями или единицами). Зачастую подходит.
+
avatar
+2
Гнать взашей эту шарашкину контору. У нас тоже одно время обслуживала подобная хитрожопая фирма. То ключи резко переставали у всех работать, то домофон неделями был выключен. Потом заключили договор на обслуживание с другой организацией и уже шестой год никаких проблем.
С тех пор ни разу ключи не меняли, хотя сам домофон был год назад заменён на новый.
И вроде бы ключи они бесплатно в офисе раздают, по предъявлению паспорта.
+
avatar
  • clavic
  • 27 июня 2016, 08:22
0
Хм…
У меня компания обслуживающая домофон, новый (вместо утерянного) ключ вообще бесплатно выдала, единственное — пришлось ждать приезда специалиста пару дней, а когда я попросил несколько про запас, тогда пришлось заплатить, но символически, по 50р. за ключ…
+
avatar
0
почти доллар — это не символически. У автора дешевле должны быть болванки.
А вот халявный курьер — это приятно.
+
avatar
+1
общественность, посоветуйте тематические форумы, где можно задать нубовопросы по ардуине ))
+
avatar
+3
forum.arduino.cc
arduino.ru
+
avatar
0
Спасибо за обзор!
Давно хотел позаморачиваться с ардуиной :)
+
avatar
+1
Спасибо за обзор и скетч, как раз такой копировщик понадобился оперативно, пока для RECTO контроллеры идут.Полезная штука, дополните только, что для записи скетча необходимо еще библиотеку OneWire подключить. Ну и где ее скачать, не все об этом знают.
Однозначно плюс.
+
avatar
  • kvolk
  • 27 июня 2016, 07:06
0
В версии ардуино иде 1.6.9 я не подключал библиотеку, как я понял она сама подтягивается из репозитория.
+
avatar
+1
Мне пришлось скачивать и подключать, версия та же.
+
avatar
  • kvolk
  • 27 июня 2016, 07:22
0
Интересно, я вчера искал эту библиотеку у себя на компе и не нашел, решил что она подтягивается из репозатория. В одном из файлов нашел только ссылку на загрузку этой библиотеки. На всякий случай добавил ссылку в обзоре.
+
avatar
  • kvolk
  • 28 июня 2016, 21:41
+1
Да, подключать нужно. Установил себе SSD, и естественно все документы и прочие пользовательские данные перенёс на другой раздел. А эта библиотека была установлена в папку документы/arduino/library, которая естественно переехала на другой раздел. Искал не там, и естественно не нашел. В общем «тупанул» :)
+
avatar
0
Как стереть ключ? Или перезаписать? У меня куча ключей с ненужной информацией.
+
avatar
  • kvolk
  • 27 июня 2016, 15:06
0
Попробую в «двух словах» объяснить. Есть ключи которые можно перезаписывать, например rw1990. Есть ключи которые программируются на заводе и не могут быть перепрограммированы никаким образом, например DS1990A. Как перезаписать ключ с помощью дубликатора:
1. Собрать дубликатор.
2. Приложить исходный ключ к считывателю.
3. Нажать кнопку.
4. Приложить ключ который хотим перепрограммировать.
Всё.
+
avatar
  • Pash
  • 27 июня 2016, 08:07
+1
Сначала обрадовался, что наконец для таблеток дубликатор, а почитал и опечален. Из всех составляющих нет главного — считывателя. ТС от какого-то прибора использовал, вот только у другой публики, таких неведомых приборов не водится. Где можно приобресть эту штуку, или как она называется?
+
avatar
  • kvolk
  • 27 июня 2016, 08:20
+10
Вы прикалываетесь? Считыватель это всего лишь 2 провода, нет считывателя возьмите гнездо от батарейки с материнской платы, нет гнзда — прижимайте 2 провода пальцами :) Купите вконце концов на али или ебее 200р стоит.
+
avatar
  • Pash
  • 27 июня 2016, 09:38
+3
Вы прикалываетесь?
А вы считаете что все гении в электронике? Очевидные для вас вещи, не всегда понятны малопонимающим в этой области. Теперь, канешна, стыдно, что сам не догадался. Но в любом случае, спасибо, что не заминусили.
+
avatar
  • kvolk
  • 27 июня 2016, 09:50
+1
Считыватель iButton, взят от какого-то неведомого устройства, ничего особенного в нём нет, просто контактная площадка.
Как бы в обзоре об этом написано.
+
avatar
+3
Если человек не разбирался с ключами, да еще и в электронике плавает, то может пропустить инфу даже если она выделена жирным красным цветом большого размера.
Потом когда дойдет, сидит и плюется, да вот… оно все так просто :( :)
+
avatar
  • girox
  • 27 июня 2016, 08:56
+2
считыватель по сути — 2 контакта, прижимаемые к центральной и боковой частям таблетки, только в удобном форм-факторе
P.S. опередили выше:)
+
avatar
+1
возьмите пластиковую бельевую прищепку, 2 болтика в губки — вот вам и считыватель для баттонов. Кстати — на порядок надежнее контакт, чем в родном…
+
avatar
0
гнезда есть на али
+
avatar
  • lexx
  • 27 июня 2016, 14:22
0
Ссылку
+
avatar
  • kvolk
  • 27 июня 2016, 14:49
+1
Поиск по фразе «ibutton reader». Вот на Али, вот на Ебее. Дорого? Сколхозить считыватель можно из держателя для батареи cr2032.
+
avatar
+1
> По традиции

Наверное, повторюсь не в первый (и даже не в десятый) раз, но, вижу, некоторым это всё же не известно: «традиция» в том, чтобы фотографировать купленный товар на фоне домашних питомцев как доказательство факта его приобретения. А не просто «котофото» и прочая «милота». :) В Вашем случае вряд ли возникнут сомнения в том, что Вы товар действительно покупали, а не взяли фото в Сети. :)
+
avatar
  • kvolk
  • 27 июня 2016, 09:25
+1
Ясно, понятно!
+
avatar
0
Вы убрали КОТА????
+
avatar
  • kvolk
  • 27 июня 2016, 10:37
0
Кошку :)
+
avatar
0
Неважно! Верните взад плиз, не слушайте буквоедов!
+
avatar
+2
Коты в конце обзора — это уже просто традиция.
Не могу припомнить случая, когда у автора требовали фотографий, подтверждающих факт покупки.
Фото из сети в 99% случаев легко вычисляются.
+
avatar
0
Запускаем программу Pytty
+
avatar
  • kvolk
  • 27 июня 2016, 09:28
0
Очепятка. Спасибо, поправил! :)
+
avatar
0
Как насчет последних метаковских ключей?
+
avatar
  • kvolk
  • 27 июня 2016, 09:52
0
Понятия не имею.
+
avatar
  • DainB
  • 27 июня 2016, 09:27
0
А нет такого же но с перламутровыми пуговицами для RFID токенов?
+
avatar
  • kvolk
  • 27 июня 2016, 09:29
0
Всё есть, надо только собрать и скетч написать. Руки ещё не дошли.
+
avatar
0
А считыватель RFID для Ардуино продается?
Ведь контактной площадкой не обойдешься
+
avatar
  • kvolk
  • 27 июня 2016, 10:42
+3
А считыватель RFID для Ардуино продается?
Этот на 13 МГц.
Этот на 125 КГц.
Ведь контактной площадкой не обойдешься
Само собой разумеется!
+
avatar
  • kvolk
  • 27 июня 2016, 15:17
0
На 125 КГц проще и дешевле купить уже готовый дубликатор. Или вот, вроде бы как «всеядный».
+
avatar
+1
Отличная статья, спасибо за скеч, фото и разжёвывание всех моментов.
Буду делать себе такой же.
ЗЫ плюсануть не могу, кармы не хватат, поэтому от меня +1 за кадром
+
avatar
+1
Спасибо за обзор. +
Вот может кому будет интересно. Дубликатор на почти все случаи жизни. Правда не на ардуино (посложнее в исполнении), но тоже ничего страшного. Сам собирал (сначала на макетке, потом ЛУТом) всё с первого раза завелось.
А есть и на ардуино. Его я не пробовал, но люди пишут, что работает.
+
avatar
  • dsr
  • 27 июня 2016, 13:02
0
Что-то по второй ссылке не видать ардуину…
+
avatar
  • kvolk
  • 27 июня 2016, 13:04
+1
Как это нет? Ардуино про мини. На приципиальной схеме она обозначена.
+
avatar
  • sav13
  • 27 июня 2016, 16:27
+1
Такой просится собрать на на тиньке в маленьком корпусе и батарейкой литиевой на 3В.
Чтобы размер был с обычный домофонный ключ. А то такую хреновину как то не очень в кармане носить.
А в этом можно до кучи собрать бутфорсер с экранчиком, пароли на цифровых замках перебирать, как в голливудсктх фильмах.
+
avatar
  • Q2W
  • 27 июня 2016, 17:14
0
Боюсь, после каждой попытки домофон делает слишком большую паузу, чтобы брутфорс прошёл за адекватное время.
+
avatar
  • kvolk
  • 27 июня 2016, 17:27
0
Полностью согласен, да и времени понадобится не мало для перебора, разве что по словарю.
+
avatar
  • sav13
  • 27 июня 2016, 17:33
0
Народ так взламывает аймаки с залоченной клавиатурой. Там пауза 12 сек после каждого кода — пароль 4 цифры. Время взлома порядка 2-х суток.
+
avatar
  • sav13
  • 27 июня 2016, 17:34
0
Какой там словарь — дни цифры )))
+
avatar
  • Q2W
  • 27 июня 2016, 18:31
+1
Оставить на двое суток ноут и стоять двое суток у домофона — удовольствия разного уровня =).
+
avatar
+1
А зачем стоять у домофона двое суток?
и при количестве битности 6 байт, вам прийдется ждать гораздо больше чем 10К вариантов у Эппла :)), годиков так на 1000+
+
avatar
  • mivaybki
  • 17 августа 2016, 14:42
0
данный скетч успешно собирается под attiny85, так что это вполне реально сделать
+
avatar
  • kvolk
  • 18 августа 2016, 02:02
0
Это хорошо. Можно уменьшать габариты.
+
avatar
  • kvolk
  • 21 ноября 2016, 23:14
0
Без модификации?
+
avatar
0
Хочу добавить, что существуют несколько систем домофонов, с разными протоколами. Хотя все они будут иметь внешне одинаковый домофонный ключ iButton (металлическая таблетка ключа). Это протоколы Metakom, Cyfral и собственно Dallas (о котором речь в статье)). Статья подходит только тем, у кого домофон работает по протоколу Dallas. Есть заготовки под конкретный протокол, так и универсальные, которые можно запрограммировать под любую систему.
P.S. С iButton работал еще в 90х :). Например с логгерами температуры (DS1921H) и управление ими с КПК Palm :). Собственный аппаратно-программные разработки.
+
avatar
  • kvolk
  • 27 июня 2016, 17:29
0
Всё верно.
+
avatar
  • kvolk
  • 28 июня 2016, 21:57
+1
Но с поправками, сегодня проверил цифрал, метаком, визит. Приняли «универсальный» ключик, как родной. Дело в том, что все (99 ,9 %) устройства понимают ключи Даллас, если конечно не отключили инженеры обслуживающей организации, и если там вшит нужный ключик, то дверь откроется. Например, есть у меня оригинальный ключ от Визита, домофон по этому ключу в подъезд пускает, обозреваемый дубликатор прочитать этот ключ не может, НО «универсальный» ключ прошитый этим дубликатором домофон принимает и открывает дверь. Фраза
Статья подходит только тем, у кого домофон работает по протоколу Dallas.
означает, что подходит для большинства устройств. Другое дело если в домофоне установлен фильтр. Но его выявить тоже можно, например как тот, который меняет ключ. Если приложить неперезаписываемый «левый» ключ, домофон начинает «визжать» Error. Если приложить перезаписываемый, тупо молчит, ничего не происходит, как будто нет ключа. И это понятно, ключ перезаписан, crc не совпадает, ошибка чтения = отсутствие ключа.
+
avatar
0
народ, какой crc должен быть у такого ключа: 00:00:00:FE:D4:53? семейсво 01.
+
avatar
  • kvolk
  • 29 июня 2016, 17:11
0
01000000FED4531E, вечером проверю в дубликаторе.
+
avatar
  • kvolk
  • 29 июня 2016, 18:34
0
Всё верно, 01000000FED4531E.
+
avatar
0
спасибо
+
avatar
0
что-то не сходится. где-то ошибка.
если не трудно, проверьте еще вот этот ключ 00:36:5A:11:40:BE код семейства 01. crc какой должен быть?
+
avatar
  • kvolk
  • 01 июля 2016, 06:57
0
Всё сходится, только ключ этот задом наперёд записан. 01:be:40:11:5a:36:00:e1
+
avatar
0
да нет, ключ не задом наперед написан.
+
avatar
  • kvolk
  • 01 июля 2016, 11:57
0
Ну да конечно, 01 в конце стоять не может, прочтите обзор, там всё написано.
Первый байт, передаваемый из памяти ключа, является кодом типа устройства — family code, всегда 01.
и теперь посмотрите на Ваш ключик:
E1 00 36 5A 11 40 BE 01 – код универсального ключа в формате Даллас, для устаревших моделей домофонов марки Vizit.
Так что если вы хотите прошить этот ключ этим дубликатором, нужно байты записать в обратном порядке, начиная с 01:be:40:11:5a:36:00:e1.
Разные программаторы по разному выводят ключ, одни начиная с 01, другие с CRC. Интернеты вам в помощь.
+
avatar
0
вообще-то на всех ключах tm1990a код семейства стоит в конце. вот пример ключа переписаный с таблетки: 16 000001F8A473 01.
+
avatar
  • kvolk
  • 04 июля 2016, 09:44
0
Первый байт, передаваемый из памяти ключа, является кодом типа устройства — family code, всегда 01.
А передаётся всегда первым.
+
avatar
  • kvolk
  • 04 июля 2016, 10:48
0
Почитать тут.
+
avatar
0
Ребят подскажите, у меня скетч не компилируется.
Arduino: 1.6.10 (Windows 7), Плата:«Arduino Nano, ATmega328»

C:\Users\Андрей\Documents\Arduino\sketch_aug03a\sketch_aug03a.ino: In function 'void loop()':

sketch_aug03a:74: error: 'writeByte' was not declared in this scope

exit status 1
'writeByte' was not declared in this scope

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
+
avatar
0
Вопрос решен, установил иде 1.6.9 все скомпилировалось.
+
avatar
  • kvolk
  • 13 сентября 2016, 11:20
0
Проблема в русских буквах в имени пользователя — может кому-нибудь пригодится.
+
avatar
  • spirt
  • 22 августа 2016, 23:14
0
Купил Arduino nano v3, подключил на комп по USB — горит POW и мигает L, а в трее вылезло сообщение «Одно из подключенных к этому компьютеру USB-устройств работает неправильно, и Windows не удаётся опознать его». Попробовал подключить на другом компе — тоже самое.
Мне брак попался или я что-то сделал неправильно?
+
avatar
  • kvolk
  • 24 августа 2016, 10:28
0
Или брак, или кабель замените. Скорее всего дело в шнурке.
+
avatar
+1
Подскажите пожалуйста. Собрал сей девайс. Прикупил 10 болванок перезаписуемых. Все работает отлично, но в процессе тестирования, по дурочке в строке адреса универсального ключа изменил первый байт с 01 на 00 и попытался прошить болванку. После записи болванка умерла (точне 2шт умерло) После записи она не читается и не перезаписывается. Это всё — трупы?
+
avatar
  • kvolk
  • 29 августа 2016, 15:47
0
Скорее всего да. Я так 4 болванки загубил и не понял как. Читаться они перестают, просто не видятся дубликатором, так?
+
avatar
+1
Да, именно так. превратились в трупы. Спасибо за ответ, главное что не я один такой ламастер, теперь будет опыт.
+
avatar
  • kvolk
  • 29 августа 2016, 17:02
0
В обзоре задокументировал. Спасибо, поставил плюс в карму.
+
avatar
+1
Ключи не умирают! Другой скетч их видит (правда он не может ничего записать, только читает).
Нашел крайне костыльный способ решени проблемы. Для «лечения» подобного ключа необходимо закомментировать return в приведенном куске кода:
void loop(){
  if (!ibutton.search (addr)){//read attached ibutton and asign value to buffer
    ibutton.reset_search();
    delay(200);
    return;
 }

Запустить скетч(с заранее указанным «правильным» family code), прижать таблетку к контактам, отправляем в монитор порта «w».
И происходит маленькое чудо! Ключ успешно пишется. Можно убирать коммент, ключ снова определяется в штатном режиме.
+
avatar
  • kvolk
  • 02 сентября 2016, 09:53
0
Спасибо, протестирую, добавлю в обзор. Надо модифицировать скетч для реанимации ключей.
+
avatar
0
Вот скетч который видит ключи, но не записывает
dl.dropboxusercontent.com/u/40958483/key.ino
+
avatar
  • kvolk
  • 02 сентября 2016, 13:06
0
Да, я с этим скетчем намучился, когда только начал эту затею. Кривоватый скетч.
+
avatar
  • kvolk
  • 04 сентября 2016, 16:04
0
Спасибо за помощь, добавил в скетч, теперь можно восстанавливать такие ключи.
+
avatar
  • kvolk
  • 04 сентября 2016, 16:03
+1
Новый скетч от 04.09.2016 восстанавливает такие ключи.
+
avatar
0
Спасибо за работу. Буду пробовать.
+
avatar
0
Опробовал новый скетч, ключи оживил. От всего сердца благодарю за проявленный энтузиазм.
+
avatar
  • prom77
  • 02 сентября 2016, 10:07
0
Ветку не читал но спрошу, а можно в ключик универсальный код записать что бы ко всем подходил ну или к многим домофонам?
+
avatar
  • kvolk
  • 02 сентября 2016, 13:05
0
Можно.
+
avatar
  • hardlock
  • 10 октября 2016, 20:17
0
на домашнем домофоне сработал ключик FF:FF:FF:FF:FF:FF, ну и заодно, скопировал один из существующих, на случай утери. Спасибо!
+
avatar
  • kvolk
  • 10 октября 2016, 22:13
0
Пустые ячейки инженеры не перезаписали в домофоне, стандартный баг :)
+
avatar
  • biverov
  • 15 октября 2016, 12:16
0
Прошу пардона, если спрошу не то.
А болванки TM08v2 должны поддерживаться этим дубликатором?
+
avatar
  • kvolk
  • 15 октября 2016, 18:09
+1
Скорее всего да. Нашёл на просторах сети:
Заготовки ТМ08 и ТМ08v2, RW1990, КС-4ТМ это полные аналоги, чип ключа используется один и тот же, различия могут быть в держателе (ручке), TM08v2 проходят предпродажную проверку на запись.
+
avatar
  • biverov
  • 15 октября 2016, 22:12
0
Ясно!
Как приедет ардуино (пара недель, надеюсь), буду пробовать, начну тогда с RW1990, но постараюсь попробовать и ТМ08v2.
Т.к. цель, кроме познавательной, еще и показать место компании, которая обслуживает домофон, которая наотрез не говорит коды, заставляя всех делать ключи по 150р. Возможно так же придется попробовать болванки ТМ08Vi-2 (уверяют, что они не фильтруются новыми Vizit, а у меня, похоже, как раз такой).

Пользуясь случаем, хочу выразить большой респект за данный дубликатор :). И если всё получится, с меня отчет по совместимости с ТМ08v2 и ТМ08Vi-2.
+
avatar
  • kvolk
  • 15 октября 2016, 22:52
0
Буду ждать результата, очень интнресно как тм-ки будут себя вести.
+
avatar
  • biverov
  • 01 ноября 2016, 20:53
+1
Ну вот, за 2 недели дошла из Китая плата с Ардуино. Соорудил по-быстрому схему и опробовал запись в 3 версии меток: RW1990, TM08v2 и TM-08 VZT F.
ТМ08Vi-2 пока опробовать не получилось из-за их отсутствия.

Ключи данным скетчем успешно записались во все 3 типа меток! Т.е. опробованные ТМ совместимы по методу записи с RW1990 и никаких проблем не возникло. Аллилуйя, ура, занавес :).
Домофон все 3 ключа скушал, правда это еще не целевой домофон, более простой вариант. Испытания на совместимость с новым Визитом еще впереди.

up. Для отчетности. Резистор R2 использовал номиналом 2.7К.
+
avatar
  • kvolk
  • 02 ноября 2016, 22:48
0
Спасибо, добавил в обзор.
+
avatar
  • ns6k
  • 30 ноября 2016, 15:07
+1
ТМ08Vi-2 у меня не видит эту болванку
+
avatar
  • biverov
  • 30 ноября 2016, 15:25
0
А жаль, т.к. на них возлагал определенные надежды. Остальные целевой домофон отфильтровал, использованный код скомпроментировал и похоже занес в свой ЧС. Думал продолжить эксперимент как раз с ТМ08Vi-2, но пока не купил.
+
avatar
  • ns6k
  • 30 ноября 2016, 16:55
0
я заказал еще пару болванок ТМ08Vi, мож их этот скетч увидит
а разница между vi и vi2 как пишут только «улучшенной стабильностью при считывания ключа панелью. „
+
avatar
  • lenin-ul
  • 17 октября 2016, 13:59
0
Подскажите как быть у ключа от домофона family code заводской стоит (00) и ключ не читается. Домофон «Метаком». С него можно как то сделать дубликат?
+
avatar
  • kvolk
  • 17 октября 2016, 15:46
0
Этим скетчем прочитать ключ и узнать код ключа, потом прошить его как «универсальный» вручную на болванку rw1990.
Может быть так получится.
+
avatar
  • lenin-ul
  • 18 октября 2016, 06:57
0
Пробовал! считывает, но код выглядит вот так 00:00:00:00:00:00.
Записывать не пробовал, заготовки еще нет.
+
avatar
  • kvolk
  • 18 октября 2016, 07:03
0
Значит не считывается, дубликат этого ключа этим дубликатором не сделать, пробуйте прошивать универсальные ключи может быть какой-то подойдёт
+
avatar
  • lenin-ul
  • 19 октября 2016, 14:09
0
Купил на рынке две болванки без надписей, пробовал записать универсальные ключи. Не пишутся или записывается что то случайное. путем экспериментов был установлен подтягивающий резистор на 200 ом и только после этого ключи записались.
+
avatar
  • kvolk
  • 19 октября 2016, 17:53
0
Что за болванки такие?
+
avatar
  • lenin-ul
  • 20 октября 2016, 06:49
0
не знаю. на них нет надписей.
Вчера записал на две разные ключи, один подошел. сегодня хотел на другой тоже такой ключ записать а он не пишется(остается прежний).
+
avatar
  • kvolk
  • 20 октября 2016, 07:11
0
С питанием всё впорядке?
+
avatar
  • lenin-ul
  • 20 октября 2016, 07:25
0
да вроде как.
+
avatar
  • nomeron
  • 14 ноября 2016, 21:03
0
Очень понравилась статья. Заказал ключи, но оказалось, что родной ключ cyfral, модель домофона на определил, но скорее всего метаком. Облазил все статьи, но простого рецепта чтения ключей нет, да и с записью как повезет (самому писать было лень, лучше часы доделаю). Универсальные ключи домофон не принимает, почтальон со связкой ходит. Уже думал покупать оригинальный ключ cyfral, но приложил болванку и домофон пикнул на ключ (на ключи с FF в начале домофон не реагирует). Вызвал фирму и за копейки привязал одну болванку со случайным номером (в режиме программирования болванка с FF тоже не определилась). Ну а дальше все просто. Привет Брянску и заводу кремний с его k1233kt1.
+
avatar
  • kvolk
  • 17 ноября 2016, 23:53
0
Да, в комментариях выше уже говорили об этом, главное домофону скормить один ключ даллас, а дальше всё как по маслу :)
+
avatar
  • ns6k
  • 21 ноября 2016, 18:37
0
Отлично, скетч помог восстановить ключ
сам пользуюсь другим, попроще


//метаком, цифрал
//0x2F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01
//0x9B, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01
//0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
//0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x01
//0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
//0x49, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01
//визит
//0x01, 0xBE, 0x40, 0x11, 0x5A, 0x36, 0x00, 0xE1  //My OK
//0xE1, 0x00, 0x36, 0x5A, 0x11, 0x40, 0xBE, 0x01
//0x1D, 0x00, 0x00, 0x0A, 0x11, 0x40, 0xBE, 0x01
//0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F  //My OK



#include <OneWire.h>
#define pin 10

OneWire ibutton (pin); // I button connected on PIN 2.

byte addr[8]; //array to store the Ibutton ID.

void setup(){
 Serial.begin(115200); 
}

void loop(){
  if (!ibutton.search (addr)){//read attached ibutton and asign value to buffer
    ibutton.reset_search();
    delay(200);
    return;
 }
 
  Serial.print(millis()/1000);
  Serial.print("> ");
  for (byte x = 0; x<8; x++){  
    Serial.print(addr[x],HEX); //print the buffer content in LSB. For MSB: for (int x = 8; x>0; x--) 
     Serial.print(" ");
  }
 
  //compute crc//
  byte crc;
  crc = ibutton.crc8(addr, 7);
  Serial.print("CRC: ");
  Serial.println(crc,HEX);
  if ( Serial.read() == 'w' ){
    ibutton.skip();ibutton.reset();ibutton.write(0x33);
    Serial.print("  ID before write:");
    for (byte x=0; x<8; x++){
      Serial.print(' ');
      Serial.print(ibutton.read(), HEX);
    }
    // send reset
    ibutton.skip();
    ibutton.reset();
    // send 0xD1
    ibutton.write(0xD1);
    // send logical 0
    digitalWrite(10, LOW); pinMode(10, OUTPUT); delayMicroseconds(60);
    pinMode(10, INPUT); digitalWrite(10, HIGH); delay(10);
    
    Serial.print('\n');
    Serial.print("  Writing iButton ID:\n    ");
    // Hardcode here your desired ID //
    // 01 D5 9F DC 02 00 00 96
    byte newID[8] = {0x01, 0x9B, 0xDF, 0x9B, 0x08, 0x00, 0x00, 0x15};
                     
    ibutton.skip();
    ibutton.reset();
    ibutton.write(0xD5);
    for (byte x = 0; x<8; x++){
      writeByte(newID[x]);
      Serial.print('*');
    }
    Serial.print('\n');
    ibutton.reset();
    // send 0xD1
    ibutton.write(0xD1);
    //send logical 1
    digitalWrite(10, LOW); pinMode(10, OUTPUT); delayMicroseconds(10);
    pinMode(10, INPUT); digitalWrite(10, HIGH); delay(10);

  }
} 

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;
}


подключение


Для чтения ключа подключите как на картинке и смотрите монитор порта

Для прошивки кода ввести w в мониторе порта, подключить как на картинке
+
avatar
  • kvolk
  • 26 ноября 2016, 22:04
0
Запихните по спойлер пожалуйста скетч.
+
avatar
  • ns6k
  • 26 ноября 2016, 22:20
0
уже нет «Редактировать» да и спойлер я в коментах не вижу
+
avatar
  • kvolk
  • 26 ноября 2016, 23:49
0
ok :)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.