#1 04-04-2022 23:10:30

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Наши китайские "друзья", круто обнаглели/пользуются промышленной некоторой слабостью России в данный момент. Китаёзы, дважды утроили ценник на свой низкокачественный товар для нас. Ладно, будем импортозамещать. Со временем, заменим и китайцев.
Пытался недавно купить дубликатор домофонных ключей приятелю. Ценники - конские!!! 100 баксов, за примитивное устройство на элементарном микропроцессоре? Вспомнил свои старые разработки, сделал девайс сам.
http://tabak.aaa22.ru/viewtopic.php?id=74
Раньше, просто не было смысла городить подобные/примитивные устройства самостоятельно в больших количествах. Купить было дешевле. Сделал свой дубликатор, только ради спортивного интереса. Экспериментировал  с Rfid картами/брелками на 125 kHz, тоже всё работало.

Не в сети

#2 04-04-2022 23:20:32

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

У меня, много лет назад, даже до платы устройства, дело дошло.

16490893664441246968740054150603.jpg

16490894224868173491028547196170.jpg

Не в сети

#3 04-04-2022 23:32:56

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Как видим, особого смысла городить плату даже нет. Весь девайс, состоит из четырёх деталей. Можно, всё навесным монтажём сделать и вклеить в любой корпус термоклеем.
Детали нужны такие.
1) Esp8266.
2) резисотор на 6,8К.
Остальные две детали не обязательны.
3)Холдер для батарейки CR2032, в качестве контактов для считывания/записи rw1990.
Такой держатель батарейки, можно выпаять  с любой старой материнки ПК.
4) Бузер на 5В, тоже не обязателен. На Esp8266 есть светодиоды, показывающие режимы работы дубликатора.

Не в сети

#4 04-04-2022 23:44:24

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Где взять держатель батарейки CR2032? На любой старой материнской плате.
16490907975576130995130699228501.jpg
Можно купить в магазине, я выпаял из хлама валяющегося в мастерской.

16490909857271710018606981670654.jpg

Не в сети

#5 05-04-2022 00:18:36

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Самый простой вариант дубликатора, какой я только смог придумать.

16490924549948605617256841572952.jpg

1649092501188343174725817660366.jpg
Пдтягивающий резистор 3К. Делал из говна и палок. На самом деле, резистор должен быть 5..10К.
16490925702987701000667355966954.jpg

Не в сети

#6 05-04-2022 00:21:00

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Старый код.

#include <OneWire.h>
#define pin 14
OneWire ibutton (pin); // Пин D14 для подлючения iButton (Data)
byte addr[8];
//byte ReadID[8] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F }; // "Универсальный" ключ. Прошивается последовательность 01:FF:FF:FF:FF:FF:FF:2F
byte ReadID[8] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x9B };
const int buttonPin = 4;
const int ledPin = 12;//ЗЕЛЁНЫЙ
const int ledPinB = 13;//СИНИЙ
const int ledPinR = 15;//красный
int buttonState = 0;
int writeflag = 0;
int readflag = 0;
int val = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(ledPinB, OUTPUT);
  pinMode(ledPinR, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(115200);
digitalWrite(ledPinB, HIGH);
 digitalWrite(ledPinR, LOW);
}

void loop() {

  buttonState = digitalRead(buttonPin);
  //if (buttonState == HIGH) {
  if (buttonState == LOW) {
    readflag = 1;
    writeflag = 1;
    //digitalWrite(ledPin, HIGH);
    digitalWrite(ledPinR, HIGH);
    val++;
    if (val > 6) val = 6;
    Serial.print(val);
    Serial.print("button1");
   digitalWrite(ledPinB, LOW);
    digitalWrite(ledPinR, HIGH);
  
  
    delay(1000);
  // digitalWrite(ledPinR, LOW);
  }
  else {
    val = 0;
  }
  if (!ibutton.search (addr)) {
    ibutton.reset_search();
    delay(50);
    if (val <= 5) return;
    val = 0;
    Serial.print("button"); 
  }
  digitalWrite(ledPin, HIGH);
  digitalWrite(ledPinB, LOW);
  digitalWrite(ledPinR, LOW);
  delay(500);
 digitalWrite(ledPinB, HIGH);
  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;
  }
  digitalWrite(ledPinB, HIGH);
  tone(12,25,4000);
  return 0;
}

Не в сети

#7 05-04-2022 00:27:00

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Если собрать весь пирог esp8266 вместе с программатором, можно в серийном порту видеть код ключа.

1649093305739529276002735234614.jpg

Не в сети

#8 05-04-2022 00:33:07

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Синий светодиод светится в режиме считывания. Если мы приложили/подключили ключ к прибору, загорается зелёный.
Был зелёный, значит код ключа хранится уже в памяти. Для копирования кода, нажимаем  кнопку на плате, загорается красный.
Красный - режим записи. Прикладываем заготовку. На заготовку записывается ранее считанный код.
Если вы включили прибор и сразу нажали кнопку записи, на заготовку будет записан универсальный код.
В строке 6, мы задаём код универсального ключа.
byte ReadID[8] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x9B };
В моём городе, такой универсальный ключ, самый распространённый.

Не в сети

#9 05-04-2022 00:52:35

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

Универсальный ключ.

16490946610062839972830744332733.jpg

16490947220457602621643477548083.jpg

Не в сети

#10 05-04-2022 00:56:11

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

По сути, 250 руб за дубликатор с моим кодом.
253,65 руб. | ESP8266 ESP-12F последовательный WIFI модуль мини макетная плата для Arduino Nodemcu CH340 Micro USB модуль для Arduino Witty Cloud
https://a.aliexpress.com/_9wwIzJ

Не в сети

#11 05-04-2022 01:08:12

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

В последних фото, участвовал профессиональный дубликатор домофонных ключей KeyMasterPro 4RF. Такой прибор у меня есть уже больше 10 лет, нареканий к нему нет. Но! Ценник - почти 8 тыров!!!
https://www.rmxlabs.ru/products/keymaster_pro_4_rf/
Я понимаю, прибор разрабатывался 15 лет назад и хрен его знает на чём... Думаю, они и сейчас его в том же железе выпускают. Но вот уже появились SoС микропроцессоры... ESP32, имеет 2 ядра на 240 мГц, в три раза круче Пентиум 1. Я бы сделал такой же прибор, в 2..3 раза дешевле и сильно круче. Уже сделал...

Не в сети

#12 08-09-2023 00:05:07

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

16941062544652579456615501723909.jpg

Не в сети

#13 08-09-2023 00:06:01

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,572

Re: Простейший дубликатор домофонных ключей RW1990 на ESP8266/Witty Cloud.

16941063198108392623410197072800.jpg

Не в сети

Подвал раздела

Работает на FluxBB (перевод Laravel.ru)