надо сейчас написать скетч на прерываниях . хочу сделать примерно так. на внешн прерывание посадить синию линию (это RX будет для эмулятора GSM как только увидит спад, садим красную линию в 0 (для эмулятора это Тх) и начинаем прерывание на таймере 1 с периодом 100мкс, 80 прерываний. в обработчике меняем состояние Тх на противоположное и тут же читаем состояние Rx, это и будет очередной бит кадра .
Не стоит читать сразу, лучше на полубите. Та сторона может быть тормознее, чем твой МК.
Тебе же сниффер нужен. Значит надо слушать обе линии и записывать и запросы и ответы, в зависимости от того какая линия опустилась первой…
Ждём пока обе линии не встанут на долго в 1.
Ждём пока одна из линий опустится в 0.
Запускаем INT или PCINT на противоположной линии и записываем 80 бит данных (может 81 или 82 - старт стоп) с первой линии при прерывании со второй.
Таймер это уже когда будешь знать как отвечать …
да , так и сделаю. Но пока визуально осмотрел осцилки команд . 3 раза снял, 3 раза поставил на охрану . Чуда не произошло - естественно что команды что ответы от сигналки разные ((
ну я хотел так. Выставляя следующее изменение на линии тактирования, сразу тут в обработчике читаем линию данных, получается читаем предыдущий бит, установленный на линии данных, т.е. последнее прерывание на тактировании мы не меняем линию (оставляем в “1”), но бит на данных читаем. получается надо 81 прерывание сделать или 82 надо пощитать. Ну это уже эмулятор когда делать. А сейачас сниффер надо на внешних прерываниях написать, работаем
Дак там плавающий код, правильно, что оне разные
ну да, для современных систем вполне ожидаемое поведение
Главное проверить - как отреагирует на “старую” посылку.
теперь понятно, что плавающий.
вот так намереваюсь читать линию данных . Во время вертикальных тонких линий будет считывание бит
написал такой код
#define RX 3
#define TX 2
bool data[80] = {0};
enum states {WAIT, GSMtoSTARL, STARLtoGSM};
volatile byte state = WAIT ;
volatile byte bitNumber = 0 ;
enum statesPrint {GSMtoSTARL_P, STARLtoGSM_P};
volatile bool printFlag = 0;
volatile bool statePrint = 0;
void setup()
{
Serial.begin (115200);
pinMode (TX, INPUT_PULLUP);
pinMode (RX, INPUT_PULLUP);
attachInterrupt(0, GSM_TX, FALLING);
attachInterrupt(1, GSM_RX, FALLING);
}
void loop() {
if (Serial.available()){
Serial.println();
byte inbyte = Serial.read();
if (inbyte == 'z') {Serial.println (F(" Send SMS Zapros Sostoyanya: ")); }
else if (inbyte == 'o') {Serial.println (F(" Ignition OFF"));}
else if (inbyte == 'i') {Serial.println(F(" Ignition ON"));}
else if (inbyte == '1') {Serial.println (F(" Send SMS Ohrana ON: ")); }
else if (inbyte == '0') {Serial.println (F(" Send SMS Ohrana OFF: ")); }
}
if (printFlag){
if (statePrint==GSMtoSTARL_P) {Serial.print ("GSM to Starline: ");}
else {Serial.print (" Starline to GSM: ");}
for (int i=0; i<80; i++) {Serial.print (data[i]);}Serial.println();
for (int i=1; i<11; i++) {
byte A= 0;
for (int b = 0 ; b<8; b++){bitWrite(A, b, data[b*i]);}
if (A<=0xF)Serial.print("0"); Serial.print(A, HEX); Serial.print(" ");
}
Serial.println(); printFlag = 0 ;
}
}
void GSM_TX () {
if (state == STARLtoGSM){
bitNumber++;
if (bitNumber > 1) {data[bitNumber-2]= digitalRead(RX);}
if (bitNumber==81)
{
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, FALLING);
attachInterrupt(1, GSM_RX, FALLING);
bitNumber=0; state = WAIT; printFlag = 1; statePrint=STARLtoGSM_P;}
}
else if (state == WAIT)
{if (!digitalRead(RX)) {state = STARLtoGSM;
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, CHANGE);
attachInterrupt(1, GSM_RX, CHANGE);}}
}
void GSM_RX () {
if (state == GSMtoSTARL){
bitNumber++;
if (bitNumber > 1) {data[bitNumber-2]= digitalRead(TX);}
if (bitNumber==81)
{
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, FALLING);
attachInterrupt(1, GSM_RX, FALLING);
bitNumber=0; state = WAIT; printFlag = 1; statePrint=GSMtoSTARL_P;}
}
else if (state == WAIT)
{if (!digitalRead(TX)) {state = GSMtoSTARL;
detachInterrupt(0);detachInterrupt(1);
attachInterrupt(0, GSM_TX, CHANGE);
attachInterrupt(1, GSM_RX, CHANGE);}}
}
и вот получилось снять такой лог:
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
0A 00 02 00 80 40 20 10 18 00
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
0A 00 22 00 88 40 20 10 18 00
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
0A 00 22 00 88 40 20 10 10 00
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 02 00 80 40 20 10 10 00
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
0A 00 02 00 80 40 20 10 18 00
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
0A 00 22 00 88 40 20 10 18 00
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
0A 00 22 00 88 40 20 10 10 00
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 02 00 80 40 20 10 10 00
Send SMS Ohrana ON:
GSM to Starline: 00010000100000011001100100000101111111110000000000000000000000000000000011100011
08 10 22 34 98 40 20 16 10 04
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
08 70 DA 6C D4 7C 28 1A 16 0E
GSM to Starline: 00010000111011000011111110000011111111110000000000000000000000000000000011111100
08 70 DA 6C D4 7C 28 1A 16 0E
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 80 02 00 80 40 24 10 10 00
Send SMS Ohrana OFF:
GSM to Starline: 00010000100101111000111001000011111111110000000000000000000000000000000011100101
08 90 A2 34 F8 60 2C 16 10 0C
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 60 5A 28 94 5C 20 18 1E 06
GSM to Starline: 01010000011110000110101011110100111111100000000000000000000000000000000000110111
0A 60 5A 68 B4 5C 20 18 1E 06
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 02 00 80 40 20 10 10 00
Send SMS Ohrana ON:
GSM to Starline: 00010000101010101111001001101100111111100000000000000000000000000000000011000100
08 F0 52 9C A4 4C 34 16 14 02
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
08 20 22 90 CC 60 30 14 18 0A
GSM to Starline: 00010000001100011000001100111111111111110000000000000000000000000000000001001010
08 20 22 90 CC 60 30 14 18 0A
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 80 02 00 80 40 24 10 10 00
Send SMS Ohrana OFF:
GSM to Starline: 00010000000000100101001111000111111111110000000000000000000000000000000001100001
08 80 02 40 E0 70 24 18 10 08
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
08 C0 3A 68 B8 54 24 18 12 04
GSM to Starline: 00010000010011110101100111000001111111110000000000000000000000000000000000011000
08 C0 3A 68 B8 54 24 18 12 04
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 02 00 80 40 20 10 10 00
Send SMS Ohrana ON:
GSM to Starline: 00010000000100000100110011000000111111110000000000000000000000000000000001100110
08 00 82 60 B0 50 28 18 10 04
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
02 70 50 2C 94 4C 20 12 1C 06
GSM to Starline: 01000000101110000010100000110100111111110000000000000000000000000000000011000001
02 70 50 2C 94 4C 20 12 1C 06
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
0A 80 02 00 80 40 24 10 10 00
Send SMS Ohrana OFF:
GSM to Starline: 01010000001010010110000111101001111111100000000000000000000000000000000000000111
0A 60 72 C8 AC 5C 30 18 14 02
Starline to GSM: 01010000000001100000000000000000111111110000000000000000000000000000000010010110
08 80 22 C0 88 50 34 18 18 00
GSM to Starline: 00010000000100110000000110011001111111100000000000000000000000000000000001010000
08 80 22 C0 88 50 34 18 18 00
GSM to Starline: 00010000010010110101100111000101000000000000000000000000000000000000000000010000
08 C0 3A 68 38 14 04 08 02 04
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 02 00 80 40 20 10 10 00
Ignition ON
Starline to GSM: 01010000000000000000000000010000111111110000000000000000000000000000000010001000
0A 00 02 00 80 40 20 10 18 00
Starline to GSM: 01010000000000010000000000010000111111110000000000000000000000000000000010001001
0A 00 22 00 88 40 20 10 18 00
Ignition OFF
Starline to GSM: 01010000000000010000000000000000111111110000000000000000000000000000000010010001
0A 00 22 00 88 40 20 10 10 00
Starline to GSM: 01010000000000000000000000000000111111110000000000000000000000000000000010010000
0A 00 02 00 80 40 20 10 10 00
69 и 71 - как то на фоне всех 08 от GSM - 02 смотрится не очень
короче корявый скетч. Не соответствует осциллкам. Надо что то править.
видимо для сниффера реально надо на полубитах читать
интереcно , а зачем Вам это нужно ?
, какой уникальный код .какая привязка ?. этож связь между гсм модулем и блоком сигналки а не между гсм и пультом… здесь привязывать бесмысленно … ибо чужой абонент не может быть по оределению!!!.. На гсм модуле есть пик , в него прошита спецыфичная программа именно для старлинковкого блока… и общаются они между собой по своим законом… по сути там просто сигналка передает код команды… а команды соответствующие этому коду в пике на гсм модуле… т.е сама сигналка отправляет просто что-то типа того… охрана - отправить 1 ,снять отправить 2 ,наорать на водилу отправить 3 … (ну в упрощенном виде) , а пик в модуле уже всю делает остальную работу и если надо присылает ответ блоку… ну типа включить реле зажигания и т.д , все довольно просто и никаких особых ухищрений т.к без ориг прошивки в пике , гсм модуль просто железка… Поэтому и непонятно на кой это нужно , поэтому и я забросил эту хрень… если расшифровывать для управления , то расшифровывать надо гсм канал , ибо там все основное … а между блоком и гсм — для ремонта особо не нужно , делать дубликат - без прошивки - яйца выеденого не стоит…
мертвый сезон, безработица. надо же как то время убивать. а вообще :
Ну да , засканите посылки ответы сделаете таблицы - и что … вы только сможете отправлять данные контроллеру , а вот точно он в эфир шлет – это надо между пиком и передатчиком разгадывать - там SIM800 вроде вот и надо разгадывать как пик отправляет и что отправляет этому симу… они там по уарт работали причем расширеному, хотя в последних версиях возможно и юсб перешли - сим все это держит
если его разгадать , тогда можно с первым мучаться, а так … предыдущее мое сообщение прочтите я там дополнил - яйца выеденого не стоит
НУ если только это … то да , разминка так сказать это всегда похвально.(ИМХО)
неверное утверждение. В старлайне A93 при установке GSM модуля нужно выполнить процедуру привязки (производится также как и брелков). А нужно это чтобы с охраны систему не сняли , когда даже нет GSM модуля. Как это было в предыдущем протоколе . Вот читайте, мы его хакнули на старом форуме. Мой скетч снимет с охраны старые системы Starline без проблем, подключившись к TX и RX предназначенные для GSM модуля.
НУ может усложнили , хотя посмотрите код привязки - много там инфы ? так,… передал уникальный код запомнил его в пике ( а может сравнил с тем что в пике)и все пользуйся , да и то если честно я думаю не ради защиты от клонирования, а с целью дальнейшего расширения системы , чтобы потом модули не путались…Или может он передает код по которому буден выбран протокол для формирования плавуещего кода для гсм посылки …(имеет смысл так как гсм модуль на разные модели сигналки у них ставиться)
вся защита имеет смысл в цепочки пик-сим- передача...
в блоке сигналки центральный проц пик. Ну и в GSM модуле тоже пик стоит. Зачем мне снифить обмен канала связи SIM800 и пика который на GSM модуле?
мне нужно сымитировать по сути работу пика, который стоит в GSM