По теме - пока осилил сканирование/выброс статику САМЕ, NACE 12-24, граббер\cканер на attiny13 (с фрикерклуба), прием динамики - заодно попробую вышевыложенный пример (спасибо автору!).
Решил сделать гибридное устройство - автономный модуль на Ардуине с экранчиком от нокии и возможностью смены приемников\передатчиков - так как разная модуляция и частота, и по в ноуте - для более серьезного анализа протоколов. Общение через 232 - так как проще то некуда. Уже думаю, как все это прикрутить к модулю 8266 - чтобы через WiFi подключаться к устройству - так удобнее на практике.
Наиболее стабильно работают приемопередатчики которые на стекло в авто - выше были фотки - с ними и дальность и стабильность повыше. Но и из брелков вполне справляются - у меня все устройство пока смонтировано в брелке от шерифа двухстороннего, со светодиодами (чтобы не палиться при экспериментах). Минус у этих модулей один - очень шумный приемник. Но в принципе ничего страшного - работает ведь!
Можно и родным экранчиком брелка двухстороннего воспользоваться - но тогда attiny13 будет слабовата, нужно получше что-то...
Я в данной теме вообще новичек - вот решил поиграть с ESP8266. Купил приемник с али RX500A и наткнулся на замечательный скэтч от @vlkam, но пришлось малось подправить. Сначало вообще ничего не получил, потом увидел обновленную версию и всеравно ничего... пока не подержал кнопку на брелке подольше - проскользнуло пару считаных кодов - алгоритм считывания неустойчив. Предлагаю попробовать мою подправленную версию от @vlkam
// борд "LOLIN(WEMOS) D1 mini lite"
#define LED_PIN D4
#define HCS_RECIEVER_PIN D3 // пин к которому подключен приемник для брелков
class HCS301 {
public:
unsigned BattaryLow : 1; // На брелке села батарейка
unsigned Repeat : 1; // повторная посылка
unsigned BtnNoSound : 1;
unsigned BtnOpen : 1;
unsigned BtnClose : 1;
unsigned BtnRing : 1;
unsigned long SerialNum;
unsigned long Encript;
void print();
};
volatile boolean HCS_Listening = true;
byte HCS_preamble_count = 0;
uint32_t HCS_last_change = 0;
uint8_t HCS_bit_counter; // счетчик считанных бит данных
uint8_t HCS_bit_array[66]; // массив считанных бит данных
#define HCS_TE 400 // типичная длительность имульса Te
#define HCS_Te2_3 600 // HCS_TE * 3 / 2
bool bPreamble = false;
bool bHeader = false;
bool bData = false;
bool bInv = false;
HCS301 hcs301;
void setup()
{
Serial.begin(9600);
// Брелки
pinMode(HCS_RECIEVER_PIN, INPUT);
attachInterrupt(0, HCS_interrupt, CHANGE);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
Serial.println("Setup OK");
}
void loop()
{
long CurTime = millis();
// проверяем наличие команды брелка
if (HCS_Listening == false) {
HCS301 msg;
memcpy(&msg, &hcs301, sizeof(HCS301));
// включаем слушанье брелков снова
HCS_Listening = true;
//Serial.println(String("KeyFb#") + String(msg.SerialNum));
msg.print();
Serial.println("Data >>>>>>>>>>>>>>>>>>>>>>>");
for (int i = 0; i < 66; i++) {
if ((i - 2) % 8 == 0) {
Serial.print(" ");
}
Serial.print(HCS_bit_array[i]);
}
Serial.println("");
}
}
// Функции класса HCS301 для чтения брелков
void HCS301::print() {
String btn;
if (BtnRing == 1) btn += "Ring";
if (BtnClose == 1) btn += "Close";
if (BtnOpen == 1) btn += "Open";
if (BtnNoSound == 1) btn += "NoSound";
String it2;
it2 += "Encript ";
it2 += Encript;
it2 += " Serial ";
it2 += SerialNum;
it2 += " ";
it2 += btn;
it2 += " BattaryLow=";
it2 += BattaryLow;
it2 += " Rep=";
it2 += Repeat;
Serial.println(it2);
}
void HCS_interrupt() {
if (HCS_Listening == false) {
return;
}
uint32_t cur_timestamp = micros();
uint8_t cur_status = digitalRead(HCS_RECIEVER_PIN);
uint32_t pulse_duration = cur_timestamp - HCS_last_change;
HCS_last_change = cur_timestamp;
if (bPreamble) {
// начало преамбулы обнаружено - ждем заголовок
if (pulse_duration > 3000 && pulse_duration < 6000) {
// обнаружен заголовок
bHeader = true;
HCS_bit_counter = 0;
bPreamble = false;
bInv = cur_status == LOW; // получаем инверсные значения импульсов - заголовок должен быть 0
} else if (pulse_duration < 300 && pulse_duration > 600) {
// упс - уже не преамбула но какой-то мусор - начнем сначала
bPreamble = false;
digitalWrite(LED_PIN, HIGH);
} else {
// иначе ждем заголовок...
}
} else if (bHeader) {
// заголовок найден - читаем данные
if ((pulse_duration > 300) && (pulse_duration < 1100)) { // поставил верхнюю границу 1100 т.к. иногда ESP8266 "неуспевает" обработать прерывание до 200мксек
// ловим переход с высокого в низкий и анализируем длительность импульса
if (cur_status == bInv ? HIGH : LOW) {
HCS_bit_array[65 - HCS_bit_counter] = (pulse_duration > HCS_Te2_3) ? 0 : 1; // импульс больше, чем половина от Те * 3 поймали 0, иначе 1
HCS_bit_counter++;
if (HCS_bit_counter == 66) {
// поймали все биты данных
bHeader = false;
digitalWrite(LED_PIN, HIGH);
HCS_Listening = false; // отключем прослушку приемника, отправляем пойманные данные на обработку
HCS_preamble_count = 0; // сбрасываем счетчик пойманных импульсов преамбулы
hcs301.Repeat = HCS_bit_array[0];
hcs301.BattaryLow = HCS_bit_array[1];
hcs301.BtnNoSound = HCS_bit_array[2];
hcs301.BtnOpen = HCS_bit_array[3];
hcs301.BtnClose = HCS_bit_array[4];
hcs301.BtnRing = HCS_bit_array[5];
hcs301.SerialNum = 0;
for (int i = 6; i < 34; i++) {
hcs301.SerialNum = (hcs301.SerialNum << 1) + HCS_bit_array[i];
};
uint32_t Encript = 0;
for (int i = 34; i < 66; i++) {
Encript = (Encript << 1) + HCS_bit_array[i];
};
hcs301.Encript = Encript;
}
}
} else {
// попался мусор
bHeader = false;
digitalWrite(LED_PIN, HIGH);
}
} else {
// ловим преамбулу
if (pulse_duration > 300 && pulse_duration < 600) {
// поймали импульс преамбулы
if (++HCS_preamble_count > 10) {
// убедились что это преамбула - начинаем искать заголовок около 4000мксек
// анализируем 10 переходов - хочу поймать первый пакет - когда нет несущей, приемник отдает сплошной мусор,
// скорее всего всю длину преамбулы получить не удасться.
bPreamble = true;
digitalWrite(LED_PIN, LOW); // зажгем LED - начало пакета найдено
HCS_preamble_count = 0;
}
} else {
// поймали какую то фигню, неправильная пауза между импульсами
HCS_preamble_count = 0; // сбрасываем счетчик пойманных импульсов преамбулы
}
}
}
it is possible to use a CC1101 radio module as a receiver for this program ?! . than it could be a work of art. many thanks and best regards for people interested!
Брал CC1101 (китай). На прием отлично работал, на передачу - хоть тресни. Не писались регистры.
Для кейлог алгоритм и библиотеки практически в открытом доступе есть - на фрикерклубе. Единственное что закрыто (но в принципе не очень большая проблема найти на многие популярные) - это заводские коды. Без них невозможно имитировать правильный сигнал.
И да - выпендриваться тут не стоит, хочешь поделиться - выкладывай. Жаба душит - помалкивай в тряпочку.
P.S. Мне самому не нужно, есть граббер пандора - мне достаточно.
На exit тоже не выходит из меню. И сигналы не ловит 433 came шлакбаум
На каме нужен другой скетч... этот ждя динамического кода, если я правильно понял...
vlkam, не нашел как здесь в личку писать.
на dreamwait@mail.ru напиши - пообщаемся по теме. Я из Тулы.
По теме - пока осилил сканирование/выброс статику САМЕ, NACE 12-24, граббер\cканер на attiny13 (с фрикерклуба), прием динамики - заодно попробую вышевыложенный пример (спасибо автору!).
Решил сделать гибридное устройство - автономный модуль на Ардуине с экранчиком от нокии и возможностью смены приемников\передатчиков - так как разная модуляция и частота, и по в ноуте - для более серьезного анализа протоколов. Общение через 232 - так как проще то некуда. Уже думаю, как все это прикрутить к модулю 8266 - чтобы через WiFi подключаться к устройству - так удобнее на практике.
Наиболее стабильно работают приемопередатчики которые на стекло в авто - выше были фотки - с ними и дальность и стабильность повыше. Но и из брелков вполне справляются - у меня все устройство пока смонтировано в брелке от шерифа двухстороннего, со светодиодами (чтобы не палиться при экспериментах). Минус у этих модулей один - очень шумный приемник. Но в принципе ничего страшного - работает ведь!
Можно и родным экранчиком брелка двухстороннего воспользоваться - но тогда attiny13 будет слабовата, нужно получше что-то...
Похвастаюсь и я своими наработками на Arduino+Keeloq
https://youtube.com/channel/UCOUCzelLtLYOaGRlZUvxKog
Впечатляет! Сырцы увидим?
Нет. Ящик пандоры не хочу открывать...
Нет. Ящик пандоры не хочу открывать...
Хотя бы прием посмотреть как написан?
Нет. Ящик пандоры не хочу открывать...
Больших секретов там нет :)
Выложите действительно чтение, будет полезно всем. Да и писать код на Arduino и не давать скетч противоречит духу всей платформы и принципам опенсорс.
И к чему весь этот выпендрешь .. не хочеш говорить так и молчи нефиг выпендриваться...
А там нет ничего сложного, всезде уже все написано, главное знать протокол, все остальное дело врмени и желания...
Greetings From Athens Greece !
Thank You for this wonderful software ! it does what it said and execute flawless !
Best Regards !
Dotcat
Автор уж сидит давно, а в Греции-то и не знають...
Я в данной теме вообще новичек - вот решил поиграть с ESP8266. Купил приемник с али RX500A и наткнулся на замечательный скэтч от @vlkam, но пришлось малось подправить. Сначало вообще ничего не получил, потом увидел обновленную версию и всеравно ничего... пока не подержал кнопку на брелке подольше - проскользнуло пару считаных кодов - алгоритм считывания неустойчив. Предлагаю попробовать мою подправленную версию от @vlkam
Hi guys,
it is possible to use a CC1101 radio module as a receiver for this program ?! . than it could be a work of art. many thanks and best regards for people interested!
Брал CC1101 (китай). На прием отлично работал, на передачу - хоть тресни. Не писались регистры.
Для кейлог алгоритм и библиотеки практически в открытом доступе есть - на фрикерклубе. Единственное что закрыто (но в принципе не очень большая проблема найти на многие популярные) - это заводские коды. Без них невозможно имитировать правильный сигнал.
И да - выпендриваться тут не стоит, хочешь поделиться - выкладывай. Жаба душит - помалкивай в тряпочку.
P.S. Мне самому не нужно, есть граббер пандора - мне достаточно.
пандоры ж не выкрываются граббером. что то вы лукавите походу
Если ты не в теме - лучше помолчать. Слабо в гугле набрать - кодграббер пандора?
https://kodgrabber.biz/kodgrabber-pandora/