You CAN. Превращаем телефон в панель приборов автомобиля

На смену классическим автомобильным приборам приходят цифровые панели. Наверное, самая популярная машина с такой панелью — это Tesla с ее внушительным сенсорным дисплеем. На нем можно следить за маршрутом, управлять музыкой и видеть диагностическую информацию. А знаешь ли ты, что в бюджетных авто используются те же электронные блоки? Информацию с них можно считать и показать. Давай попробуем это сделать.
Семнадцатидюймовый сенсорный дисплей Tesla

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

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

Электронные блоки

Чем дороже машина, тем больше полезной информации отображается на штатном бортовом компьютере.

Изучение возможностей

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

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


Чтобы получить информацию о работе систем автомобиля, нужно подключиться к CAN. Есть несколько способов подключения.

  1. Подключиться непосредственно к проводам внутри машины. Этот способ требует частичной разборки авто.
  2. Подключиться в диагностический разъем OBD2.

В автомобилях группы VAG (Volkswagen, Audi, Škoda, Seat) разъем OBD2 подключен к шине CAN через шлюз: прямого доступа к ней нет. Это означает, что если попытаться послушать команды в разъеме OBD2, то ничего не получится. Шлюз не пропускает команды из основной сети в диагностический разъем. Но есть официальный диагностический комплекс VCDS, который позволяет через OBD2 видеть все датчики, читать ошибки и настраивать оборудование.

Работает он просто: VCDS для каждого датчика запрашивает у шлюза информацию о его состоянии; когда шлюз получает ее, он передает информацию в OBD2.


Итак, если подслушать, что запрашивает VCDS, можно будет получить список команд для опроса датчиков.

Сниффер шины CAN

На основе Arduino Uno и модуля TJA1050 Niren с CAN-контроллером MCP2515 я собрал сниффер, который подключается в любое место в шине CAN и слушает пролетающий трафик. При этом сниффер никак не мешает работе систем. Чтобы подслушать, что отправляет VCDS, нужно подпаяться в сам диагностический кабель к пинам CAN-High и CAN-Low.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

"Виталий Юркин : Инженер-программист умного дома."

Комментарии (3)

  • Хотя б словечко вставили про LIN, Flex-Ray, FastEth ...
    А в целом, интересно, спс!

  • Молодчина!Можешь для Мазды написать такое приложение? И во сколько оценишь свою работу?

    • Оценю в стоимость автомобиля ;)
      Свою машину я несколько лет изучал, сейчас, конечно, с полученным опытом, работа идет гораздо быстрее. Была бы у меня мазда, я бы возможно и написал такое же приложение.