Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Песочница

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 17.02.2018, 11:06   #1
3230_nokia_92 Меню Пользователя
Гость клуба
 
Регистрация: 17.02.2018
Сообщений: 7
По умолчанию не получается по скетчу для ардуинки...помогиитее))

PHP код:
/// v3
#define rxPin 2 // сюда у нас подключен приемник
#define txPin A3 // а сюда передатчик
#define MAX_DELTA 200 // это максимальное отклонение от длительности Pe при приеме
#define Pe 413
#define Pe2 Pe*2

void setup() {
  
pinMode(rxPinINPUT);
  
pinMode(txPinOUTPUT);
  
Serial.begin(921600);
  
//while (!Serial);
  
Serial.println("AN MOTORS наклонятор запущен");
  
randomSeed(analogRead(0));
  
// запускаем перехват пакетов
  
attachInterrupt(1grabCHANGE); // обратите внимание на первый параметр - если у вас другая ардуина, он может быть не 1, а 0!
  
interrupts();
}

void loop() {
  
//левая кнопка - 2 (в с1 4 символ и в с2 - последний)
  // в с1 последние 4 цифры надо сделать нулями - туда мы воткнем ранодмую составляющую
  
long c1 0x20220000 0x101 random(0xff); // AN-MOTORS хотят рандом - получит рандом ))
  
long c2 0x69F5CE22;
  
SendANMotors(c1c2);
  
Serial.println("ОТПРАВЛЕНО:");
  
Serial.print(c1HEX);
  
Serial.print(" ");
  
Serial.println(c2HEX);
  
Serial.println();
  
delay(5000);
}


void SendANMotors(long c1long c2)
{
  
noInterrupts(); // временно отключаем перехват пакетов, чтобы не перехватывать собственные отправки
  
for (int j 04j++)
  {
    
// отправляем 12 начальных импульсов 0-1
    
for (int i 012i++) {
      
delayMicroseconds(Pe);
      
digitalWrite(txPinHIGH);
      
delayMicroseconds(Pe);
      
digitalWrite(txPinLOW);
    }
    
delayMicroseconds(Pe 10);
    
// отправляем первую половину
    
for (int i 80i--) {
      
SendBit(bitRead(c11));
    }
    
// вторую половину
    
for (int i 80i--) {
      
SendBit(bitRead(c21));
    }
    
// и еще пару ненужных бит, которые означают батарейку и флаг повтора
    
SendBit(1);
    
SendBit(1);
    
delayMicroseconds(Pe 39);
  }
  
interrupts();
}

void SendBit(byte b) {
  if (
== 0) {
    
digitalWrite(txPinHIGH); // 0
    
delayMicroseconds(Pe2);
    
digitalWrite(txPinLOW);
    
delayMicroseconds(Pe);
  }
  else {
    
digitalWrite(txPinHIGH); // 1
    
delayMicroseconds(Pe);
    
digitalWrite(txPinLOW);
    
delayMicroseconds(Pe2);
  }
}

// все что ниже касается приема

volatile unsigned long prevtime;
volatile unsigned int lolenhilenstate;
volatile static byte bcounter 0;    // количество принятых битов
volatile static long code1 0;       // зашифрованная часть
volatile static long code2 0;       // фиксированная часть
boolean CheckValue(unsigned int baseunsigned int value)
{
  return ((
value == base) || ((value base) && ((value base) < MAX_DELTA)) || ((value base) && ((base value) < MAX_DELTA)));
}

void grab() {
  
state digitalRead(rxPin);
  if (
state == HIGH)
    
lolen micros() - prevtime;
  else
    
hilen micros() - prevtime;
  
prevtime micros();

  if (
state == HIGH)
  {
    
// последовательность закончилась
    
if (CheckValue(Pehilen) && CheckValue(Pe2lolen)) // valid 1
    
{
      if (
bcounter 32)
        
code1 = (code1 << 1) | 1;
      else if (
bcounter 64)
        
code2 = (code2 << 1) | 1;
      
bcounter++;
    }
    else if (
CheckValue(Pe2hilen) && CheckValue(Pelolen)) // valid 0
    
{
      if (
bcounter 32)
        
code1 = (code1 << 1) | 0;
      else if (
bcounter 64)
        
code2 = (code2 << 1) | 0bcounter++;
    }
    else
      
bcounter 0;
  }
  if (
bcounter >= 65)
  {
    
Serial.print("Перехвачено: ");
    
Serial.print(code1HEX);
    
Serial.print(" ");
    
Serial.println(code2HEX);

    
bcounter 0;
    
code1 0;
    
code2 0;
  }


вот нашел такой скетч, один код отправляет, от одной кнопки точнее, но хотелось бы сделать так, чтоб коды от 5 шлакбаумов постоянно перебирались. не хочется с собой возить пульт, хочу в панель спрятать ардуино и при подъезде к шлакбаумам - сами открывались... птался по разному вставлять - начинаются какие то ошибки при компиляции((((( помогите плиииз))
3230_nokia_92 вне форума   Ответить с цитированием
Старый 17.02.2018, 16:41   #2
ArduinoS Меню Пользователя
Вступил в клуб
 
Регистрация: 24.01.2018
Сообщений: 41
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

У тебя только под анмоторс.

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

Код:
//Поддерживает: CAME, NICE, AM MOTORS
//Версия 2.0

#define wt 150000                   //Задержка между посылками

#define Pe 413                      //AN MOTORS
#define Pe2 Pe*2                    //AN MOTORS

#define rxPin 2                     //Приемник
#define rxOn 5                      //Включение приёмника
#define txPin 3                     //Передатчик

#define btsendPin 7                 //кнопка, ОТПРАВКА
#define btglushPin 8                //кнопка, ГЛУШИЛКА

#define ledglPin 10                 //индикатор режима глушилка
#define ledcashPin 11               //индикатор сигнала в cashcame
#define ledpwrPin 12                //индикатор режима power


//Прием
#define MAX_DELTA 200                   //Максимальное отклонение от длительности при приеме
volatile unsigned long prevtime;
volatile unsigned int lolen, hilen, state;
//AN Motors
volatile static byte bcounter = 0;      // количество принятых битов
volatile static long code1 = 0;         // зашифрованная часть
volatile static long code2 = 0;         // фиксированная часть
volatile long c1 = 0;                   // переменная для отправки
volatile long c2 = 0;                   // переменная для отправки
volatile long Cash1 = 0;                // кеш переменная для отправки
volatile long Cash2 = 0;                // кеш переменная для отправки
//Came
volatile static byte cameCounter = 0;   // хранит количество бит
volatile static long cameCode = 0;      // сам код кнопки
volatile long cashcame = 0;             // кеш переменная для отправки
//NICE
volatile static byte niceCounter = 0;   // count of bits stored
volatile static long niceCode = 0;      // code itself
volatile long cashnice = 0;             // кеш переменная для отправки

int flag = 0;                           // флаг для обработки кнопки


void setup() {
  pinMode(rxPin, INPUT);
  pinMode(rxOn, OUTPUT);
  pinMode(txPin, OUTPUT);

  pinMode(ledcashPin, OUTPUT);
  pinMode(ledglPin, OUTPUT);
  pinMode(ledpwrPin, OUTPUT);

  pinMode(btsendPin, INPUT);
  pinMode(btglushPin, INPUT);

  digitalWrite(ledpwrPin, HIGH);

  Serial.begin(9600);
  Serial.println("Scaner RUN");

  randomSeed(analogRead(0));              //Генерация рандомного числа для AN Motors

  attachInterrupt(0, grab, CHANGE);       //перехват пакетов
  digitalWrite(rxOn, HIGH);
}


void loop() {
  //обработка кнопки отправки кодов
  if (digitalRead(btsendPin) == HIGH) {
    noInterrupts();                       //Выкл перехват
    digitalWrite(rxOn, LOW);
    digitalWrite(ledglPin, LOW);          //Выкл индикатор глушилки
    flag = 1;
  }
  //обработка кнопки глушилки
  if (digitalRead(btglushPin) == HIGH) {
    noInterrupts();                       //Выкл перехват
    digitalWrite(rxOn, LOW);
    digitalWrite(ledglPin, HIGH);         //Вкл индикатор глушилки
    flag = 2;
  }

  switch (flag) {
    case 1:
      anmcode();                          //AN MOTORS
      ccode();                            //CAME
      ncode();                            //NICE
      interrupts();                       //Вкл перехват
      digitalWrite(rxOn, HIGH);
      flag = 0;
      break;
    case 2:                               //Глушилка
      digitalWrite(txPin, HIGH);
      delayMicroseconds(500);
      digitalWrite(txPin, LOW);
      delayMicroseconds(499);
      break;
  }
}


// ******************************************************
//Коды AN MOTORS
void anmcode() {
  //КОД последий принятый от AN MOTORS
  if (Cash1 > 0 && Cash2 > 0) {
    c1 = Cash1 + random(0xff);
    c2 = Cash2;
    SendANMotors(c1, c2);
  }

  //Пример
  //c1 = 0x20220000 + random(0xff);
  //c2 = 0x2A3B4CE52;
  //SendANMotors(c1, c2);
}

//Коды CAME
void ccode() {
  //Отправка последнего принятого кода со сканера
  if (cashcame > 0) {
    SendCame(cashcame);
  }

  //Пример
  //SendCame(2345);
}

//Коды NICE
void ncode() {
  //Отправка последнего принятого кода со сканера
  if (cashnice > 0) {
    SendNice(cashnice);
  }

  //Пример
  //SendNice(1234);
}


// ******************************************************
//Отправка ANMotors
void SendANMotors(long c1, long c2) {
  for (int j = 0; j < 4; j++)  {
    digitalWrite(ledcashPin, !digitalRead(ledcashPin));
    //отправляем 12 начальных импульсов 0-1
    for (int i = 0; i < 12; i++) {
      delayMicroseconds(Pe);
      digitalWrite(txPin, HIGH);
      delayMicroseconds(Pe);
      digitalWrite(txPin, LOW);
    }
    delayMicroseconds(Pe * 10);
    //отправляем первую половину
    for (int i = 4 * 8; i > 0; i--) {
      SendBit(bitRead(c1, i - 1));
    }
    //вторую половину
    for (int i = 4 * 8; i > 0; i--) {
      SendBit(bitRead(c2, i - 1));
    }
    //и еще пару ненужных бит, которые означают батарейку и флаг повтора
    SendBit(1);
    SendBit(1);
    delayMicroseconds(Pe * 39);
  }
  delay(wt);
}

//Отправка ANMotors
void SendBit(byte b) {
  if (b == 0) {
    digitalWrite(txPin, HIGH);        // 0
    delayMicroseconds(Pe2);
    digitalWrite(txPin, LOW);
    delayMicroseconds(Pe);
  }
  else {
    digitalWrite(txPin, HIGH);        // 1
    delayMicroseconds(Pe);
    digitalWrite(txPin, LOW);
    delayMicroseconds(Pe2);
  }
}

//Отправка CAME
void SendCame(long Code) {
  for (int j = 0; j < 4; j++) {     // посылку посылаем несколько раз подряд.
    digitalWrite(ledcashPin, !digitalRead(ledcashPin));
    // время стартового импульса
    digitalWrite(txPin, HIGH);
    delayMicroseconds(320);
    digitalWrite(txPin, LOW);
    for (int i = 12; i > 0; i--) {
      byte b = bitRead(Code, i - 1);  // побитово перебираем и посылаем код
      if (b) {
        digitalWrite(txPin, LOW);     // 1
        delayMicroseconds(640);
        digitalWrite(txPin, HIGH);
        delayMicroseconds(320);
      }
      else {
        digitalWrite(txPin, LOW);     // 0
        delayMicroseconds(320);
        digitalWrite(txPin, HIGH);
        delayMicroseconds(640);
      }
    }
    digitalWrite(txPin, LOW);
    delayMicroseconds(11520);
  }
  delay(wt);
}

//Отправка NICE
void SendNice(long Code) {
  for (int j = 0; j < 4; j++) { // посылку посылаем 4 раза подряд.
    digitalWrite(ledcashPin, !digitalRead(ledcashPin));
    // время стартового импульса
    digitalWrite(txPin, HIGH);
    delayMicroseconds(700);
    digitalWrite(txPin, LOW);
    for (int i = 12; i > 0; i--) {
      byte b = bitRead(Code, i - 1); // побитово перебираем и посылаем код
      if (b) {
        digitalWrite(txPin, LOW); // 1
        delayMicroseconds(1400);
        digitalWrite(txPin, HIGH);
        delayMicroseconds(700);
      }
      else {
        digitalWrite(txPin, LOW); // 0
        delayMicroseconds(700);
        digitalWrite(txPin, HIGH);
        delayMicroseconds(1400);
      }
    }
    digitalWrite(txPin, LOW);
    delayMicroseconds(25200);
  }
  delay(wt);
}


// ******************************************************
//ПРИЁМ
boolean CheckValue(unsigned int base, unsigned int value) {
  return ((value == base) || ((value > base) && ((value - base) < MAX_DELTA)) || ((value < base) && ((base - value) < MAX_DELTA)));
}

void grab() {
  state = digitalRead(rxPin);
  if (state == HIGH)
    lolen = micros() - prevtime;
  else
    hilen = micros() - prevtime;
  prevtime = micros();

  //AN MOTORS
  if (state == HIGH)  {
    // последовательность закончилась
    if (CheckValue(Pe, hilen) && CheckValue(Pe2, lolen)) {        // valid 1
      if (bcounter < 32)
        code1 = (code1 << 1) | 1;
      else if (bcounter < 64)
        code2 = (code2 << 1) | 1;
      bcounter++;
    }
    else if (CheckValue(Pe2, hilen) && CheckValue(Pe, lolen)) {   // valid 0
      if (bcounter < 32)
        code1 = (code1 << 1) | 0;
      else if (bcounter < 64)
        code2 = (code2 << 1) | 0; bcounter++;
    }
    else
      bcounter = 0;
    //Вывод в терминал
    if (bcounter >= 65)  {
      Serial.print("AN MOTORS: ");
      Serial.print(code1, HEX);
      Serial.print("  ");
      Serial.println(code2, HEX);
      digitalWrite(ledcashPin, HIGH);
      Cash1 = code1;
      Cash2 = code2;
      bcounter = 0;
      code1 = 0;
      code2 = 0;
    }
  }

  //CAME
  if (state == LOW)  {
    // последовательность закончилась
    if (CheckValue(320, hilen) && CheckValue(640, lolen)) {        // valid 1
      cameCode = (cameCode << 1) | 1;
      cameCounter++;
    }
    else if (CheckValue(640, hilen) && CheckValue(320, lolen)) {   // valid 0
      cameCode = (cameCode << 1) | 0;
      cameCounter++;
    }
    else cameCounter = 0;
  } else if (lolen > 1000 && (cameCounter == 12 || cameCounter == 13) && ((cameCode & 0xfff) != 0xfff)) {
    Serial.print("CAME: ");
    Serial.println(cameCode & 0xfff);
    cashcame = cameCode & 0xfff;
    cameCounter = 0;
    cameCode = 0;
    digitalWrite(ledcashPin, HIGH);
  }

  //NICE
  if (state == LOW)
  {
    // последовательность закончилась
    if (CheckValue(700, hilen) && CheckValue(1400, lolen)) // valid 1
    {
      niceCode = (niceCode << 1) | 1;
      niceCounter++;
    }
    else if (CheckValue(1400, hilen) && CheckValue(700, lolen)) // valid 0
    {
      niceCode = (niceCode << 1) | 0;
      niceCounter++;
    }
    else niceCounter = 0;
  } else if (lolen > 2200 && (niceCounter == 12 || niceCounter == 13) && ((niceCode & 0xfff) != 0xfff)) {
    Serial.print("NICE: ");
    Serial.println(niceCode & 0xfff);
    cashnice = niceCode & 0xfff;
    niceCounter = 0;
    niceCode = 0;
    digitalWrite(ledcashPin, HIGH);
  }

}
А ты написал - непонятно. Хоть бы написал что за ошибки
ArduinoS вне форума   Ответить с цитированием
Старый 19.02.2018, 09:30   #3
Waik Меню Пользователя
Вступил в клуб
 
Регистрация: 15.07.2015
Сообщений: 37
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

ArduinoS, вы бы уточнили для ТСа, а если сами не знаете то не советовали бы.
Код работает только с 12битными came/nice. Какие шлаги у ТСа - неизвестно. Судя по его скетчу - у него an-motors, но это только наши с вами догадки

3230_nokia_92
Цитата:
чтоб коды от 5 шлакбаумов постоянно перебирались. не хочется с собой возить пульт,

Зачем вам ардуинка? Купите китайски брел с памятью на несколько ячеек и запишите на него все свои брелоки.


Цитата:
начинаются какие то ошибки при компиляции((((( помогите плиииз))

Советую вам сделать какие-то исправления в коде.
Waik вне форума   Ответить с цитированием
Старый 19.02.2018, 15:16   #4
ArduinoS Меню Пользователя
Вступил в клуб
 
Регистрация: 24.01.2018
Сообщений: 41
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Цитата:
Сообщение от Waik
ArduinoS, вы бы уточнили для ТСа, а если сами не знаете то не советовали бы.
Код работает только с 12битными came/nice. Какие шлаги у ТСа - неизвестно. Судя по его скетчу - у него an-motors, но это только наши с вами догадки

Зачем уточнять? Скетч у него чисто под Ан моторс, которая статика с рандомными битами. Типа аля улю супер шифрование, 300 млрд лет на расшифровку.

Я ему тоже самое дал только в добавок еще и кейм найс статику.

Но тс сюда походу больше не придет, с головой погрузился в код и вылезти не может
ArduinoS вне форума   Ответить с цитированием
Старый 24.02.2018, 15:56   #5
3230_nokia_92 Меню Пользователя
Гость клуба
 
Регистрация: 17.02.2018
Сообщений: 7
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Цитата:
Сообщение от Waik
ArduinoS, вы бы уточнили для ТСа, а если сами не знаете то не советовали бы.
Код работает только с 12битными came/nice. Какие шлаги у ТСа - неизвестно. Судя по его скетчу - у него an-motors, но это только наши с вами догадки

3230_nokia_92

Зачем вам ардуинка? Купите китайски брел с памятью на несколько ячеек и запишите на него все свои брелоки.



Советую вам сделать какие-то исправления в коде.

Да, ан-моторс. по китайским брелокам - они запоминают статический код, верно? т.е. есл с первого раза шлакбаум не откроется - въезд будт закрыт для меня - выход один - на вторую кнопку еще один код для шлакбаума вешать две кнопки чередовать. теперь собственно сама проблема - на моей территории проживания - 6 шлакбаумов с разных сторон, и иногда нужно через 4 каждый день проехать. по нескольку раз - собственно почему это нужно - с одного въехал - с него если выезжать - придется объезжать почти 4 км, т.е. нужно будет проехать100 метров чтоб выехать через второй шлакбаум и сразу на разворот попасть.зачастую пробки на той улице и приходится с другой стороны так же проезжать. в общем 5 из 6 шлакбаумов мне интересны, а это три китайских пульта юзать не в кайф. собственно что я хочу - записать коды от 5 шлакбаумов, чтоб они по очереди через секунду отправлялись. всё это дело спрятать впанель автомобиля...и по приезду к любому из шлакбаумов - они автоматически открывались, не нажимая никаких кнопок и не придется искать где именно скопированы коды от шлакбаума. т.к. получается что три пульта надо, и от шлакбаумов 12 кнопок...хочу сделать перебор пяти паролей - ну вы поняли)) а то я тут расписал капец просто))
3230_nokia_92 вне форума   Ответить с цитированием
Старый 26.02.2018, 07:39   #6
Waik Меню Пользователя
Вступил в клуб
 
Регистрация: 15.07.2015
Сообщений: 37
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Цитата:
Сообщение от 3230_nokia_92
Да, ан-моторс. по китайским брелокам - они запоминают статический код, верно? т.е. есл с первого раза шлакбаум не откроется - въезд будт закрыт для меня - выход один - на вторую кнопку еще один код для шлакбаума вешать две кнопки чередовать. теперь собственно сама проблема - на моей территории проживания - 6 шлакбаумов с разных сторон, и иногда нужно через 4 каждый день проехать. по нескольку раз - собственно почему это нужно - с одного въехал - с него если выезжать - придется объезжать почти 4 км, т.е. нужно будет проехать100 метров чтоб выехать через второй шлакбаум и сразу на разворот попасть.зачастую пробки на той улице и приходится с другой стороны так же проезжать. в общем 5 из 6 шлакбаумов мне интересны, а это три китайских пульта юзать не в кайф. собственно что я хочу - записать коды от 5 шлакбаумов, чтоб они по очереди через секунду отправлялись. всё это дело спрятать впанель автомобиля...и по приезду к любому из шлакбаумов - они автоматически открывались, не нажимая никаких кнопок и не придется искать где именно скопированы коды от шлакбаума. т.к. получается что три пульта надо, и от шлакбаумов 12 кнопок...хочу сделать перебор пяти паролей - ну вы поняли)) а то я тут расписал капец просто))

Я пропущу вопросы целесообразности. Задача теперь ясна, давайте по делу.
Приём и отправка an-motors дело несложное на самом деле.
Выкладывайте полностью свой проект(схему сборки, код) и рассказывайте какие ошибки. Будем помогать.
Waik вне форума   Ответить с цитированием
Старый 19.02.2018, 10:39   #7
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,220
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

3230_nokia_92 : начинаются какие то ошибки при компиляции((((( помогите плиииз))

Надо логи ошибок выкладывать на обозрение, а то Waik и ArduinoS не пророки, дар истолкователя на зачаточном уровне ? Нет пророков в моем отечестве, кроме меня. (Mr. Codegrabургер)

Добавлено через 28 минут
Serial.begin(921600); -чё-то скорость шибко большая,
На ардуинке преоразователь usb-uart наверное в ВАХе и в ППЦ. Сделай максимум 115200
EPA вне форума   Ответить с цитированием
Старый 24.02.2018, 15:57   #8
3230_nokia_92 Меню Пользователя
Гость клуба
 
Регистрация: 17.02.2018
Сообщений: 7
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

ну тот скетч я встречал, но он не работал почему то у меня
3230_nokia_92 вне форума   Ответить с цитированием
Старый 25.02.2018, 08:26   #9
gendos76 Меню Пользователя
Вступил в клуб
 
Аватар для gendos76
 
Регистрация: 11.01.2015
Сообщений: 67
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Как твой авто определит ,что ты к своим шлагам подъехал?
Будешь ходячей помехой.
Выкупят и по башке дадут.
gendos76 вне форума   Ответить с цитированием
Старый 25.02.2018, 09:09   #10
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,220
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Это понятно, что такой финт с ушами не прокатит. Ты ему и нам по полочкам разьясни чо по чём. Так сказать, пендаль дай в правильное направление... а народец сам уж потом выбор сделает, кататься ему с хучей брелков или всётаки грызть гранит науки для раздупления Ани Мotots, Насти Фло или для экстремалов Коли Me. Мы здеся и для этого и собрались в натуре...

Последний раз редактировалось EPA; 25.02.2018 в 09:23.
EPA вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 22:41. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика