Идея подключить смартфон к бортовой системе машины возникла давно, а своеобразным толчком послужила статья об электронной начинке современных авто и CAN шине, обеспечивающей обмен данными различных устройств, подключенным к этой шине.
Исследование возможных способов подключения к авто показало, что для подключения нужно использовать диагностический разъем DLC — Data Link Connector, который служит для соединения бортовой сети авто с диагностическими сканерами и опроса/съема данных различных подсистем автомобиля. Проблема большого количества и разнообразия марок авто, сканеров, коннекторов была разрешена благодаря одному из экологических ведомств США — California Air Resources Board — CARB, которое отвечает за контроль выбросов автомобилей. Сегодня актуальным является свод стандартов OBD-II, который описывает механические (форма и размер разъема), электрические (питание, сигнальные протоколы) и логические (информационные протоколы) уровни совместимости. Здесь следует обратить внимание, что соответствие одному из параметров еще не гарантирует соответствия остальным. Т.е. Наличие правильного механического разъема в автомобиле не гарантирует соответствия стандарту сигнальных и логических протоколов, то есть не обязательно обеспечивает соответствие OBD-II стандарту. Рассмотрим вышеупомянутые уровни совместимости:
— SAE J1850 PWM
— SAE J1850 VPW
— ISO 9141-2
— ISO 14230 KWP2000
— ISO 15765 CAN
Рассмотрим структуру тела запроса
Структура <body> представляется как <mode><pid>.
Например, 68 6C F1 01 0D A6, где header = 68 6C F1, body = 01 0D, crc = A6.
Структура тела ответа содержит код возврата:
Например, 48 6B 10 41 0D 00 11, где header = 48 6B 10, body = 41 0D 00, crc = 11, т.е. собственно возвращаемое значение 00
В результате, мы получаем набор команд, охваченных стандартом, при этом разные модели машин поддерживают небольшую часть данного списка. Кроме того, OBD-II стандарт предусматривает наличие пользовательских команд, специфичных для определённых производителей и моделей, однако публичная информация по этим командам практически отсутствует.
Подводим итоги. Мы получили список параметров, которые описаны стандартом и которые, при условии поддержки со стороны автомобиля, можно прочитать. Обычно это динамическим параметры, которые можно отслеживать в реальном времени (скорость, обороты, температура, параметры с лямбда датчиков, параметры по которым можно вычислить расход топлива и т.п.); ошибки, приводящие к включению индикатора CheckEngine; некоторые результаты самодиагностики бортовых систем авто. Также может поддерживаться команда сброса информации об ошибках. Также, гипотетически возможно добраться до пользовательских параметров автомобиля, список которых на много больше стандартного. Этой статьей мы начинаем цикл заметок о разработке программ и приложений для автомобилистов.
Подробную статью, а также ее продолжение можно прочитать в блоге нашей компании на ресурсе Хабрахабр.