Запрограммировать реагирование на набор цифровых посылок.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Уважаемые знатоки.
Подскажите по какому пути идти в решении такого вопроса:
есть к примеру девайс, который в порт (один цифровой выход) выдает некие значения, набор 1 и 0 которые нигде не описаны. Выдается один и тот же код при разных например алармах.
это стандартная ситуация.
Так вот - ковыряться и разгадывать код нет ни желания ни времени, смысла особого нет
Подозреваю, что есть решения для Ардуино по записи и последующем "опознании" этой записи как стандартной, и присвоении определенной команды для Ардуино. Например девайс выдает 5 кодов при пяти разных алармах. Как набор из нулей и единиц этой посылки сделать запоминаемым для Ардуино? С последующим четким реагированием на каждый аларм выдаваемый тем девайсом?
Надеюсь описал свои хотелки достаточно понятно, если что задавайте уточняющие вопросы.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Создайте массив, в цикле читаете состояние ноги и записываете в массив, потом все выводите в сериал, увидите повторяющиеся последовательности нулей и едениц, а там уж решайте, что Вам с ними делать.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Реверс инженеринг. Вы случайно не сигнализации вскрывать собрались? С этим шагайте на другие форумы...

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Short Circuit, нужно понимать с каким протоколом передачи вы имеете дело. Сколько бит передаётся, какая длины паузы, какая длина бита единицы/ноля, есть ли служебные биты. Нужен либо осциллограф, либо логический анализатор. Ловить то, не знаю что -это слишком долгий путь.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Gres пишет:
Реверс инженеринг. Вы случайно не сигнализации вскрывать собрались? С этим шагайте на другие форумы...

вы не поняли ни  меня, и не понимаете как сигнализации работают.

мне нужно реагировать на  принятую посылку аларма например  снятого в кофе-автомат.. 

таких приеров кругом валом.

и реверс-инжениринг здесь как бы совсем и не нужен, нет  задачи вскрывать сам код, есть задача - просто на него реагировать, запомнить что вот он был такой и сейчас повторилась эта посылка.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

dimax пишет:

Short Circuit, нужно понимать с каким протоколом передачи вы имеете дело. Сколько бит передаётся, какая длины паузы, какая длина бита единицы/ноля, есть ли служебные биты. Нужен либо осциллограф, либо логический анализатор. Ловить то, не знаю что -это слишком долгий путь.

вот  вот...   это долгий путь, ради отлова  например одного -двух-тех алармов и очень короткий - типа словить "закончился сахар". вскрывать весь протокол как бы абсолютно нелогично и трудозатратно.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

кстати, посмотрите, а здесь не  подобным образом решается прием команд от радиобрелка??

http://letsmakerobots.com/node/35959

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Что может быть проще с одной скоростью записать сигнал, а потом с той же скоростью его выплюнуть один к одному. Не говорю про диалоги. Повторяющиеся последовательности не сложно отследить и плевать на протоколы. Логический анализатор это тоже самое, только с чёткими, видимыми временными, рамками, а не слепая запись черко определённого промежутка времени. Что тут сложного или непонятного?

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Вот вот, я и говорю о сигнашках. Удачи Вам. Не хочу, чтоб какой то студент, вскрыл мою машину, с моей же помощью...

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Gres пишет:
Вот вот, я и говорю о сигнашках. Удачи Вам. Не хочу, чтоб какой то студент, вскрыл мою машину, с моей же помощью...

вы адекватный вообще человек? похоже не совсем. рядом масса тем о работе радиобрелков, мне нужно в итог совсем другое, и "односторонняя связь", а не как вы пишите о "двухсторонней".

мне сигнал никуда не нужно "выплевывать", мне нужно реагировать на его повторение, все.

в общем постарайтесь в этой теме не отвечать. спасибо.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

обьясните,  где берет тайминги для 0 и 1 импульсов именно этот скетч, не совсем пойму.

 

// RF module receiver code for Arduino.
// The module is connected to the Arduino havin 3 pins: +5, GND and data. The data pin is connected to
//digital pin 11 on the arduino.

int inpin = 11;
 int onoff = 0;
 int i=0;
 String codein="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";

//there are about 100 zeros in the initial codein

unsigned long duration;
 void setup()
 {
 Serial.begin(9600);
 Serial.println("setup");
 }

void loop()
 {

for (i = 0; i < 100; i++) {

duration = pulseIn(inpin, HIGH);
 if (duration > 1000)
 {
 codein.setCharAt(i,'1');
 }
 else {
 codein.setCharAt(i,'0');
 }

}
 Serial.println(codein); //uncomment these two lines to figure out your remote codes
 delay(1000); // this is the second line
 for (i=0; i<75; i++){
 if (codein.substring(i,i+25)=="0010100111000110001010000") // substitute remote codes here
 { Serial.println("lock!!!"); if (onoff == 1){onoff = 0;} else {onoff = 1;} // LED toggle on/off
 break;
 }
 if (codein.substring(i,i+25)=="0010100111000110001001000") // and here
 { Serial.println("unlock!!!");
 break;
 }
 if (codein.substring(i,i+25)=="0010100111000110001000100") //and here
 { Serial.println("mute!!!");
 break;
 }
 if (codein.substring(i,i+25)=="0010100111000110001000010") // you get the idea :)
 { Serial.println("ring!!!");
 break;
 }

if (codein.substring(i,i+25)=="0010010110111101111001000")
 { Serial.println("lock2!!!");
 break;
 }
 if (codein.substring(i,i+25)=="0010010110111111111000100")
 { Serial.println("unlock2!!!");
 break;
 }
 if (codein.substring(i,i+25)=="0010001001011011111111100")
 { Serial.println("mute2!!!");
 break;
 }
 if (codein.substring(i,i+25)=="0010010010110111111111000")
 { Serial.println("ring2!!!");
 break;
 }
 }

// this toggles the 13 pin led on or off
 if (onoff == 1) {
 digitalWrite(13,HIGH);
 delay(1000);
 }
 else { digitalWrite(13,LOW);
 delay(1000);}
 }


 

 

lex2k
Offline
Зарегистрирован: 17.12.2015

а как часто и по какой причине меняются выкидуемые битовые последовательности

lex2k
Offline
Зарегистрирован: 17.12.2015

да и как синхронизацию ловить?????

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

синхронизацию ловить - незнаю как. а как в скетче выше: просто определяется наличие нужной последовательности и все?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Short Circuit, -скетч выше примитивен до неприличия. Любой импульс длиннее 1ms он записывает как приём единицы, любой импульс короче -как приём ноля.  При отсутствии сигнала он забивает массив нолями по одному нолю каждую секунду. При появлении сигнала посореди цикла он начнёт дописывать массив с того места, где он был . Хороший пример как не надо программировать :)

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

да, я понимаю, что он сильно примитивен, все верно.

запустил его у себя - работает - выдает  0000000000000000000000000000000

вопрос - как поменять время вборки 1 мс ?? или оно от скорости пульта работает?

кстати, вот что он только что выдал мне с брелка - 

1100110111100100100000100110011011110010010000010011001101
10010010000010011001101111001001000001001100110111100100100000100110011011110010010000010011001101
11001001000001001100110111100100100000100110011011110010010000010011001101111001001000001001100110
11100100100000100110011011110010010000010011001101111001001000001001100110111100100100000100110011
 
ну и..??  похоже там есть последовательности,  я зажал кнопку и держал несколько секунд.
примитивно, да, но нужно проверить, а вдруг это очень неплохо будет работать?
вот последовательность от брелка - 11001101111001001000001001100110 
dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Short Circuit, мой вам добрый совет -забудьте про этот скетч. Купите логический анализатор, 5 баксов всего, а пользы на все 200. И сейчас и в дальнейшем пригодится.  Снимите картинку импульсов  -тогда разберём как её на ардуине сделать.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

какой анализатор?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013