Вопрос

Получение данных о состоянии ручного тормоза и указателей поворота с помощью OBD II

Я планирую заменить приборную панель своего автомобиля на планшет Android. Поэтому я разрабатываю приложение, которое взаимодействует с устройством ELM327 через Bluetooth. Мне удалось успешно получить такие данные, как частота вращения двигателя, скорость и температура, через OBD II. Но я не могу понять, как получить некоторые специфические данные, которые отображаются на моей оригинальной приборной панели (например, индикатор ручного тормоза и индикатор заднего хода).



Можно ли получить такую информацию с помощью OBD II? Если да, то, полагаю, команды OBD зависят от производителя. Кто-нибудь знает, где можно найти эти коды?



У меня GM Vectra 2007 года выпуска, 2,0 л, 8 В. Спасибо.



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/33309/retrieving-handbrake-status-light-and-reverse-light-from-obd-ii

9 Комментариев

  1. Да, вам просто нужно знать сообщение (PID), в котором содержится информация. Обычно это делается при установке стереосистемы Aftermarket, когда головному устройству нужны сигналы стояночного тормоза и заднего хода. Вы можете приобрести устройства, которые подают эти сигналы. Или вы можете считывать их напрямую с шины CAN.


    Это:
    A211 PBA — переключатель стояночного тормоза
    1697 REV — переключатель реверса коробки передач


    Надеюсь, это поможет.


  1. Эта информация была бы доступна только в том случае, если бы переключатель контролировался модулем Body Controller, который затем отправлял бы данные на ваш прибор через шину связи. Судя по всему, в вашем автомобиле это не так и один провод от переключателя подает питание непосредственно на лампу. Вам нужно будет найти другой способ преобразовать сигнал от переключателя в формат, который сможет считать ваш планшет. В таком случае подойдет GPIO на микроконтроллере, например на упомянутом ранее Pi. Затем микроконтроллер должен подключиться к шине бортовой диагностики и отправить некоторые данные.


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



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


  1. Для начала возьмите копию руководства по эксплуатации вашего автомобиля. Электрические схемы помогут вам понять, откуда поступают различные сигналы. В более старых автомобилях, как правило, доступно меньше данных через ODB II (первоначальное назначение которого состояло в том, чтобы обеспечить возможность мониторинга систем контроля загрязнения окружающей среды).



    Если вы добавите в свой проект что-то вроде Raspberry Pi, то сможете использовать контакты GPIO для считывания сигналов, например с датчика стояночного тормоза.



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


  1. GPIO не будет подключаться к шине CAN, которая отправляет данные с частотой 1 МГц. А шина CAN работает по дифференциальному принципу
  1. Он спрашивает не о считывании напряжения с помощью цифрового ввода-вывода RasPi, а о сообщениях OBD2 CAN. Кроме того, RasPi не понравится напряжение 12 В на линии TTL или CMOS.
  1. Я также считаю, что возможность считывать всю информацию с одной пары кабелей — это именно то, для чего были созданы шины CAN. Другое дело, что эта информация не всегда доступна. Автопроизводители очень неохотно делятся информацией, если только их к этому не принуждают.
  1. @rafaame Если у вас есть усовершенствованный сканер OBD2, вы можете подключаться к компьютерам, отличным от ПКМ.
  1. Если посмотреть на разъем приборной панели на электрической схеме, то можно увидеть, что у него гораздо больше контактов, чем у разъема OBD2. Кроме того, показания скорости, оборотов и индикатора ручного тормоза передаются напрямую по проводу. Я решил, что смогу получить всю необходимую информацию через OBD2, а для получения дополнительной информации (например, индикатора ручного тормоза) мне понадобится Arduino или что-то подобное для подключения. Странно то, что я однажды видел, как кто-то проверял индикаторы на приборной панели (включая и выключая их вручную) с помощью сканера OBD2. Так, может быть, можно задать информацию, но не считывать её?
Вы уже ответили на этот вопрос