Бортовой компьютер для Опель Зафира.

viki13viki
Offline
Зарегистрирован: 14.11.2016

Вот что я нашел по KW82  выдержка из этого дока http://www.avt-hq.com/init_03d.pdf

чуток разобрался в прослушке, по идеи это инит - 0 0 55 52 80 7F а это идентификатор (убедился в опкоме)

2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0
     перевол в Hex to ASCII - HT 24419560 1400 4199 1301 042 1 0000000000ð-
ищем дальше. Даааа...... Инфы нет. Видать я первый кто зацепил этот протокол......
Не могу врубится что в этом куске отправлено а что принято
8829ms
02  0 0
03 95ms
04  55
05 98ms
06  52 80 7F
07

89ms

понятно что нули не при делах. а 55 и 52 80 7F , где контрольная сумма? Блин, тупик.

MaksVV
Offline
Зарегистрирован: 06.08.2015

может просто посмотреть на схеме какой провод на панель с датчика уровня топлива идёт? Вместо него подключить потенциометр и имитировать работу датчика уровня. При этом наблюдать какие байты будут меняться.  

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот это будет реально крутой сниффер

MaksVV
Offline
Зарегистрирован: 06.08.2015

ещё вариант выключи зажигание, подключи опком и начинай соединение, сниффер покажет какие сообщения сначала идут от диагностики

MaksVV
Offline
Зарегистрирован: 06.08.2015

подключить два к-лайн адаптера к софт сериалу на 7,8 пинах и 10,11. один к-лайн к опкому, другой - к машине. Вот скетч сниффера 



#include <SoftwareSerial.h>

SoftwareSerial mySerial_10_11 (10, 11); // RX, TX
SoftwareSerial mySerial_7_8 (7, 8); // RX, TX

void setup() {
  
  Serial.begin(9600);
 


  Serial.println("Start Sniff!");

  
  mySerial_10_11.begin(9600);
  mySerial_7_8.begin(9600);
  
}

void loop() { // run over and over
  if (mySerial_7_8.available()) {
    //delay 
    mySerial_10_11.write(mySerial_7_8.read());
    Serial.print (" Device7_8_PIN: "); Serial.println ( mySerial_7_8.read(), HEX);
    
  }
  if (mySerial_10_11.available()) {
    mySerial_7_8.write(mySerial_10_11.read());
    Serial.print ("                                    Device10_11_PIN: "); Serial.println ( mySerial_7_8.read(), HEX);
  }
}

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

ПРИВЕТ :). Рад что отозвался. какой байт меняется найти будет не проблема. На счет двух адаптерова, так и будет, на 12 контакт подцеплю второй и через тотже ардуино хочу подцепить, только на 12 и 13 пины. соответственно для него прописать свой инит и нужный байт выводить на экран. На счет зажигания выключить, завтра попробую и гляну че он посылает на 12 контакт ОБД. Сейчас главное инициализацию запустить, а там будет уже легче, через эмулятор найти байт или как ты предложил , изменяя уровень глянуть меняющийся байт.

viki13viki
Offline
Зарегистрирован: 14.11.2016

да еще , когда запускаю 12 контакт в обкоме, то контакт 7 молчит, проверял раньше. значит они не зависимы

MaksVV
Offline
Зарегистрирован: 06.08.2015

нет, 2 к-лайн адаптера это для сниффера. Т.е. подключаем сниффер в разрыв между опкомом и разъемом ОБД. 

viki13viki
Offline
Зарегистрирован: 14.11.2016

так. если я понял то весь бортовик так и остается. а воторой адаптер цеплять в разрвыв опкома и обд. но в адаптере только одна линия для обд. как в разрыв пустить 7 и 12 контакт? Я чета туплю. в снифере указано что оба идут к ардуино. может ты имел в виду что просто один выход адатера к 7 а второй к 12? и втыкнутым опкомом? 

viki13viki
Offline
Зарегистрирован: 14.11.2016

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

FF

0 0

0 0 и так далее. по ходу обком ничего не шлет а просто делает какую-то инициализация в виде скачков HIGH  LOW, после этого приходит видать 55 а потом 52 80 7F и получает уже данные. или получает 55 а отправляет 52 80 7F и получает данные. или все вместе получает 55 52 80 7F и потом данные.

так при включеном зажигании

02  0 0
03 95ms
04  55
05 98ms
06  52 80 7F

 

интересная штука что без зажигания 0 0 и при зажигании первыми всегда 0 0.

На сколько я понял 55 это 0х55 адрес. Как зайти в 0х33 я нашел это

старт бит 200 мс

400 мс HIGH--------------------------

400 mc LOW                           /

400 мс HIGH                            / это восемь бит

400 mc LOW                           /

стоп бит 200 мс----------------------

и приходит ответ 55, может это самое оно?

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

viki13viki пишет:

так. если я понял то весь бортовик так и остается. а воторой адаптер цеплять в разрвыв опкома и обд. но в адаптере только одна линия для обд. как в разрыв пустить 7 и 12 контакт? Я чета туплю. в снифере указано что оба идут к ардуино. может ты имел в виду что просто один выход адатера к 7 а второй к 12? и втыкнутым опкомом? 

да тут 7 контакт не причем, подключить надо один к-лайн адаптер к опкому, второй - к 12 контакту. 

viki13viki
Offline
Зарегистрирован: 14.11.2016

блин, дошло. просто одним слушать че отправляет опком а вторым че отправляет 12 контакт, так? но я уже прослушал без зажигания и знаю что появляется в порту FF и потом 0 0 и дальше так по два нуля. и при зажигании 0 0 и потом 55 а потом 52 80 7F и получает уже данные. есть смысл делать такую прослушку? конечно выглядит круто. такоя прослушка в начале бы очень помогла. я думаю в моем случае получим одинаковый результат с обоих сторон , обкома и 12 контакта

MaksVV
Offline
Зарегистрирован: 06.08.2015

а ты уверен, что после 52 80 7F, всё остальное панель шлёт, может тут и опком чёто посылает, типа запрос опком  - ответ ECU

MaksVV
Offline
Зарегистрирован: 06.08.2015

инит можно попробовать так

mySerial.begin (5);

mySerial.write (0x55);

viki13viki
Offline
Зарегистрирован: 14.11.2016

Уверен. Я перевёл из hex и получил данные идентификации. Проверил в опком. Все чётко. Инит завтра попробую. Читал что при обращении к 33 адресу получают ответ 55. Может нужно как я писал выше к 33 адресу

MaksVV
Offline
Зарегистрирован: 06.08.2015

только нужно сразу на 10400 перключаться после запроса вроде или 9600 т.е. так 

mySerial.begin (5);
mySerial.write (0x55);
mySerial.end ();
mySerial.begin (10400);


 

viki13viki
Offline
Зарегистрирован: 14.11.2016

Завтра проверим.

MaksVV
Offline
Зарегистрирован: 06.08.2015

привел сообщения снифа к более читабельному виду. Жирным это контрольная сумма - последние два байта в сообщениях.

Сначала опком на скорости 5бод посылает адрес панели приборов, мы его этим сниффером не увидели,а увидели нули . Потом панель отвечает (уже на скорости 9600) синхробайтом 0х55, далее идет байт keyword#1 (0х52), далее keyword#2 (0х80), и опком отвечает на keyword#2 (0х80), своим keyword#2 в инвертированном виде (0х7F) видимо тут инит закончен, далее полшла инфа.

 
55 52 80 это шлет панель в ответ на запрос адреса,
 
7F  это отвечает ОПКОМ получив KEYWORD#2, и инвертирует 80 в 7F. тут вроде как инит закончен. 
 
2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0  - скоре всего это шлет панель
 
2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0- скоре всего это шлет панель
 
2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 - скоре всего это шлет панель
 
2 B0 0 B2 скоре всего это шлет ОПКОМ
6 F0 AA 10 14 10 1 D4 - скоре всего это шлет панель
6 F0 AA 10 14 10 1 D4 - скоре всего это шлет панель
6 F0 AA 10 14 10 1 D4 - скоре всего это шлет панель
 6 F0 AA 10 14 10 1 D4 - скоре всего это шлет панель
6 F0 AA 10 14 10 1 D4 - скоре всего это шлет панель
6 F0 AA 10 14 10 1 D4 - скоре всего это шлет панель
2 11 0 13  скоре всего это шлет ОПКОМ
23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 B8 0 FF 60 42 42 1A 47 0 0 0 16 10 9C AE 3 4 49 CE 1 6 57 - это шлет панель
 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 B5 0 FF 61 42 42 1A 47 0 0 0 16 10 9C AE 3 4 49 CE 1 6 55- это шлет панель
 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 B9 0 FF 60 43 42 1A 47 0 0 0 16 10 9C AE 3 4 49 CE 1 6 59- это шлет панель
 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 B6 0 FF 60 42 42 1A 47 0 0 0 16 10 9C AE 3 4 49 CE 1 6 55- это шлет панель
 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 B9 0 FF 60 43 42 1A 47 0 0 0 16 10 9C AE 3 4 49 CE 1 6 59 - это шлет панель
 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 B8 0 FF 61 42 42 1A 47 0 0 0 16 10 9C AE 3 4 49 CE 1 6 58 - это шлет панель
 2 B2 0 B4  скоре всего это шлет ОПКОМ
6 F0 AA 10 14 10 1 D4 - это шлет панель

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

viki13viki пишет:
на контакт 12 приходит только это

FF

0 0

0 0 и так далее.

потому что ОПКОМ в начале работает на 5 baud. Попробуй таким сниффером. Так мы хоть адрес панели узнаем.  

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
unsigned long prevTimedelay = 0; 
int Delay = 0;
void setup() {
 Serial.begin (115200);
mySerial.begin (5);
}

void loop() {

if (mySerial.available()) {
delay (51);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}

viki13viki пишет:
по ходу обком ничего не шлет а просто делает какую-то инициализация в виде скачков HIGH  LOW, после этого приходит видать 55 а потом 52 80 7F и получает уже данные.

нет, это опком сначала адрес панели шлет. только мы его не видим, т.к. ты сниффером подключался на 10400 baud, а надо на 5baud, вот при 5 бод увидим, как эти HIGH и LOW превратятся в адрес, который ОПКОМ посылает, с которого и начинается инит. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

по всем параметрам больше всего вот это подходит 

MaksVV
Offline
Зарегистрирован: 06.08.2015

viki13viki пишет:

интересная штука что без зажигания 0 0 и при зажигании первыми всегда 0 0.

На сколько я понял 55 это 0х55 адрес. Как зайти в 0х33 я нашел это

старт бит 200 мс

400 мс HIGH--------------------------

400 mc LOW                           /

400 мс HIGH                            / это восемь бит

400 mc LOW                           /

стоп бит 200 мс----------------------

и приходит ответ 55, может это самое оно?

0 0 это я уже объяснил, на скорости 10400 он не улавливает правильно начало инита, которе идёт на 5 бод. 0х55 это не адрес, это положительный ответ эбу на запрос адреса. Синхробайт называется.  0х55 - потому как в бинарном виде это сочетание 0 и 1 - 01010101, а вот 0х33 это адрес, который на 5 бод посылается диганостикой. Просто это расписано сочетанием HIGH и LOW и задержками. только 0х33 это похоже не панель приборов, а двигло, нам не подходит. наш адрес вроде либо 0хЕ0, либо 0хЕ1, либо 0хB8, либо 0хB9, либо 0хBA

viki13viki
Offline
Зарегистрирован: 14.11.2016

Твой снифер на 5 baud молчит. поставил на 9600 , результат тот что и старом снифере. В остольном ты скорее всего прав. Я предполагал что это два ключа и инвертированый байт. Щас буду пробовать что-то, иниты или еше чето. вопрос только что слать для соединения.

MaksVV
Offline
Зарегистрирован: 06.08.2015

попробуй так, и поиграй задержкой , может вообще её закоментировать

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
unsigned long prevTimedelay = 0; 

void setup() {
 Serial.begin (115200);
mySerial.begin (5);
}

void loop() {

if (mySerial.available()) {
delay (2000);
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

посмотри в опкоме keyword#2 там показывает, какое там значение? и слева вверху скорость показывает. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

вообще я разобрался как слать байты с помощью определенного baud rate HIGH LOW и делай 

viki13viki
Offline
Зарегистрирован: 14.11.2016

Не выходит. минимальное это 9600 на чем принимается. 5 бауд молчит . сейчас гляну....

viki13viki
Offline
Зарегистрирован: 14.11.2016

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

Попробуй в опкоме зайти не через зафиру, а черех общее подключение, там выбирается протокол, инит и т.д. заходишь кузов -> приборы. Но там в скобках указан адрес. Дак вот на каком у тебя установится соединение, тот нам и нужен. А я потом скажу как это через high low отправить

MaksVV
Offline
Зарегистрирован: 06.08.2015

поправил сообщение 819. Теперь более понятно. и контрольная сумма теперь сходится. Кстати, если скорость всё же 9600, то вот этот протокол у нас, походу :

viki13viki
Offline
Зарегистрирован: 14.11.2016

в опкоме есть только автоматическое опредиление авто. после этого открывается кнопка kwp2000 и CAN. на kwp2000 он конектися на 7 контакт . других функций нигде нет

viki13viki
Offline
Зарегистрирован: 14.11.2016

там еще есть кнопка total vehicle readout(полные данные авто) но она не активна.  Стоп, минутку...

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот на этой программе OP-COM все есть https://yadi.sk/d/xiq5rZ4g3MjnKN

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

MaksVV
Offline
Зарегистрирован: 06.08.2015

.

viki13viki
Offline
Зарегистрирован: 14.11.2016

проблема в том что он у меня висит ка usb serial converter а не на порту. программка суппер, но увы... как ее подцепить

MaksVV
Offline
Зарегистрирован: 06.08.2015

ну дак у юсб сериал конвертер это и есть виртуальный ком порт по идее. С диспетчере оборудования Windows нажми на нём свойства, и вроде как ком порт там можно посмотреть ну или поменять на нужный

viki13viki
Offline
Зарегистрирован: 14.11.2016

нет там порта . это FTDI и есть еще такое написано Port_#0001.Hub_#0002. и все. в нем встроен корвертер юсби по этому он его так видит. щас попробую на вертуальный порт посадить

MaksVV
Offline
Зарегистрирован: 06.08.2015

тогда можно tx и rx твоего клайн адаптера посадить на 0 и 1 ардуины, замкнуть rst на gnd и будеть тебе usb k-line адаптер на виртуальном порте (ардуины). При этом никакой скетч загружать не нужно, получается сквозное подключение 

viki13viki
Offline
Зарегистрирован: 14.11.2016

это уже проблемно. все встроено в авто, в панель. я тока не понял причем тут адаптер и ардуино если идет речь об опкоме с компом?

viki13viki
Offline
Зарегистрирован: 14.11.2016

нужно было ардуино цеплять вместо опкома?

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

давно бы уж ещё пару дунек заказал. пригодятся

viki13viki
Offline
Зарегистрирован: 14.11.2016

закажу. короче пишет адаптер не найде. нужно чтото залить в дуню для 10 и 11 пинов. чтобы заработало как адаптер

MaksVV
Offline
Зарегистрирован: 06.08.2015

дак конечно с 10 11 не будет работать, без скетча будет работать толлько хард сериал, а он на 0 и 1 пине

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

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

viki13viki
Offline
Зарегистрирован: 14.11.2016

нет пробег нет. слушай там всего пять адресов B8 B9 BA E0 E1, может методом тыка вычислить инициализацию? а потом в сообщении там тоже не много байтов, подставлять байт и следить или на бортовике таже цифра что и в опкоме. инит бы вычеслить

viki13viki
Offline
Зарегистрирован: 14.11.2016

хотя пробег щас гляну

viki13viki
Offline
Зарегистрирован: 14.11.2016

есть значение пробега сбрасываемого на панели и он тоже на 12 контакте. может прикинешь например инит на B8 скетчик. я попробую остальные четыре адрес сам подставлять. если конечно разберусь как это HIGH LOW превратить