Pull to refresh
0
Rating

Часть 1. Как подключить смартфон к авто или история создания OBD Car Doctor

PNN corporate blogDevelopment of mobile applications
История

Идея подключить смартфон к бортовой системе автомобиля возникла достаточно давно. Спусковым крючком стала прочитанная статья об электронной начинке современных авто и CAN шине, которая позволяет обмениваться данными различным устройствам, подключенным к этой шине.
image
Воображение рисовало радужные картины «робомобиля» полностью управляемого со смартфона, записывающего и оптимизирующего все параметры работы двигателя и систем, предупреждающего о критических параметрах и ошибках в работе. Ну ладно с управлением это, пожалуй, чересчур, ведь кроме цифровых датчиков тут понадобятся и некоторые управляющие контролеры с сервоприводами…

Картина чуть поблекла, но считывать-то доступные параметры мы сможем, а если повезет, то может и центральный замок открыть/закрыть сможем (хотя такая перспектива сулит дыру в системе безопасности Винд… т.е. автомобиля :) ).
И так, пора приступать к практическому исследованию!


Исследование
Исследование
Автомобиль был в наличии, и теперь оставалось разобраться в том, как к нему подключиться. Подключаться нужно к диагностическому разъему (DLC — Data Link Connector). Данный разъем служит для подключения диагностических сканеров (которые «компьютерная диагностика») к бортовой сети авто и опроса/съема данных различных подсистем автомобиля.
Посмотрев на разнообразие марок авто, сканеров, коннекторов возникла легкая паника, как разобраться со всем этим «зоопарком», или хотя бы как найти вариант для своей машины?! К счастью, благодаря одному из экологических ведомств США (а именно California Air Resources Board — CARB), которое стремилось к унифицированному контролю уровней выбросов автомобилей, стандартизация добралась и до этой сферы.

Актуальным на данный момент является свод стандартов OBD-II, который описывает механические (форма и размер разъема), электрические (питание, сигнальные протоколы) и логические (информационные протоколы) уровни совместимости.

Здесь следует обратить внимание, что соответствие одному из параметров еще не гарантирует соответствия остальным. Т.е. Наличие правильного механического разъема в автомобиле не гарантирует соответствия стандарту сигнальных и логических протоколов, то есть не обязательно обеспечивает соответствие OBD-II стандарту.

Теория

Рассмотрим вышеупомянутые уровни совместимости:

  • Механически это трапециевидный разъем фиксированного размера с 16 контактами.
  • На электрическом уровне поддерживаются 5 основных сигнальных протоколов: SAE J1850 PWM, SAE J1850 VPW, ISO 9141-2, ISO 14230 KWP2000, ISO 15765 CAN
  • Логический уровень предполагает отсылку сообщений заданной структуры и соответственно получение структурированного ответа. Пакет состоит из заголовка, тела сообщения, контрольной суммы — .


    Рассмотрим структуру тела запроса:
    Структура представляется как .
    • (1 байт) определяет функциональную группу параметров, например 01 – параметры реального времени, 02 – «снимки» параметров на момент возникновения ошибки и т.д.
    • (1 или 2 байта) — Parameter ID, идентификатор запрашиваемого параметра в контексте группы, например для mode 01 pid 0D отвечает за текущее значение скорости автомобиля.
    Например, 68 6C F1 01 0D A6, где header = 68 6C F1, body = 01 0D, crc = A6.

    Структура тела ответа содержит код возврата:
    • для положительного ответа <mode+0x40>
    • для информации об ошибке 7F<pid | mode>

    • затем собственно возвращаемое значение
    .
    Например, 48 6B 10 41 0D 00 11, где header = 48 6B 10, body = 41 0D 00, crc = 11, т.е. собственно возвращаемое значение 00

    Ну вот, уже почти все готово, прямо «на блюдечке с золотой каемочкой» :-) ! А где же наша волшебная команда «Сим-сим открой центральный замок»?!… Но, к нашему большому разочарованию, стандарт OBD-II такую команду не описывает :-(. Здесь мы вспоминаем, что разрабатывался стандарт по запросу экологического ведомства и естественно им нет никакого дела до того закрыт или открыт у нас центральный замок. Ну что же, придется довольствоваться тем, что есть: список охваченных стандартом команд, например вот здесь, при этом каждая конкретная модель автомобиля обычно поддерживает только небольшую часть полного списка. Нужно также упомянуть, что OBD-II стандарт предусматривает наличие пользовательских команд, специфичных для определённых производителей и моделей, однако публичная информация по этим командам практически отсутствует.

    Что же в сухом остатке:

    • Есть список параметров, которые описаны стандартом и которые, при условии поддержки со стороны вашей машины, можно будет прочитать. Обычно это некоторые динамическим параметры, которые можно мониторить в реальном времени (скорость, обороты, температура, параметры с лямбда датчиков, параметры по которым можно вычислить расход топлива и т.п.); ошибки, приводящие к включению индикатора CheckEngine; некоторые результаты самодиагностики бортовых систем авто. Также может поддерживаться команда сброса информации об ошибках;
    • Есть гипотетическая возможность добраться до пользовательских параметров вашего автомобиля, список которых теоретически на много больше стандартного;

    Подводим итог – мы разобрались с теорией и увидели возможные перспективы ее полезного применения. Осталось самое малое – подобрать инструментарий и реализовать задуманное.

    Об этом и многом другом мы расскажем в следующих заметках, а именно о практических аспектах (см. Часть 2 ): какие авто поддерживаются, какие есть адаптеры для подключения смартфона или компьютера к автомобилю, как запросить и получить значения параметров.

    Спасибо за внимание, до новых встреч!


    П.С.
    Также, читайте продолжение - Часть 2, Часть 3
Tags:авто + смартфонмобильное приложениеавтомобилидиагностикаobd-iiobd2
Hubs: PNN corporate blog Development of mobile applications
Total votes 39: ↑32 and ↓7+25
Views80K

Information

Founded
2001
Location
Украина
Website
pnnsoft.com
Employees
51–100 employees
Registered