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

История Идея подключить смартфон к бортовой системе автомобиля возникла достаточно давно. Спусковым крючком стала прочитанная статья об электронной начинке современных авто и CAN шине, которая позволяет обмениваться данными различным устройствам, подключенным к этой шине.image Воображение рисовало радужные картины «робомобиля» полностью управляемого со смартфона, записывающего и оптимизирующего все параметры работы двигателя и систем, предупреждающего о критических параметрах и ошибках в работе. Ну ладно с управлением это, пожалуй, чересчур, ведь кроме цифровых датчиков тут понадобятся и некоторые управляющие контролеры с сервоприводами… Картина чуть поблекла, но считывать-то доступные параметры мы сможем, а если повезет, то может и центральный замок открыть/закрыть сможем (хотя такая перспектива сулит дыру с системе безопасности Винд… т.е. автомобиля :)). И так, пора приступать к практическому исследованию! ИсследованиеИсследование Автомобиль был в наличии, и теперь оставалось разобраться в том, как к нему подключиться. Подключаться нужно к диагностическому разъему (DLC — Data Link Connector). Данный разъем служит для подключения диагностических сканеров (которые «компьютерная диагностика») к бортовой сети авто и опроса/съема данных различных подсистем автомобиля. Посмотрев на разнообразие марок авто, сканеров, коннекторов возникла легкая паника, как разобраться со всем этим «зоопарком», или хотя бы как найти вариант для своей машины?! К счастью, благодаря одному из экологических ведомств США (а именно California Air Resources Board — CARB), которое стремилось к унифицированному контролю уровней выбросов автомобилей, стандартизация добралась и до этой сферы. Актуальным на данный момент является свод стандартов OBD-II, который описывает механические (форма и размер разъема), электрические (питание, сигнальные протоколы) и логические (информационные протоколы) уровни совместимости.Здесь следует обратить внимание, что соответствие одному из параметров еще не гарантирует соответствия остальным. Т.е. Наличие правильного механического разъема в автомобиле не гарантирует соответствия стандарту сигнальных и логических протоколов, то есть не обязательно обеспечивает соответствие OBD-II стандарту. ТеорияРассмотрим вышеупомянутые уровни совместимости: 79582171ec6934097a6816469abc7b01.pngМеханически это трапециевидный разъем фиксированного размера с 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.Структура тела ответа содержит код возврата: • для положительного ответа < pid > • для информации об ошибке 7F • затем собственно возвращаемое значение. Например, 48 6B 10 41 0D 00 11, где header = 48 6B 10, body = 41 0D 00, crc = 11, т.е. собственно возвращаемое значение 00 Ну вот, уже почти все готово, прямо «на блюдечке с золотой каемочкой» :-)! А где же наша волшебная команда «Сим-сим открой центральный замок»?! … Но, к нашему большому разочарованию, стандарт OBD-II такую команду не описывает :-(. Здесь мы вспоминаем, что разрабатывался стандарт по запросу экологического ведомства и естественно им нет никакого дела до того закрыт или открыт у нас центральный замок. Ну что же, придется довольствоваться тем, что есть: список охваченных стандартом команд, например вот здесь, при этом каждая конкретная модель автомобиля обычно поддерживает только небольшую часть полного списка. Нужно также упомянуть, что OBD-II стандарт предусматривает наличие пользовательских команд, специфичных для определённых производителей и моделей, однако публичная информация по этим командам практически отсутствует. Что же в сухом остатке: Есть список параметров, которые описаны стандартом и которые, при условии поддержки со стороны вашей машины, можно будет прочитать. Обычно это некоторые динамическим параметры, которые можно мониторить в реальном времени (скорость, обороты, температура, параметры с лямбда датчиков, параметры по которым можно вычислить расход топлива и т.п.); ошибки, приводящие к включению индикатора CheckEngine; некоторые результаты самодиагностики бортовых систем авто. Также может поддерживаться команда сброса информации об ошибках; Есть гипотетическая возможность добраться до пользовательских параметров вашего автомобиля, список которых теоретически на много больше стандартного; Подводим итог — мы разобрались с теорией и увидели возможные перспективы ее полезного применения. Осталось самое малое — подобрать инструментарий и реализовать задуманное. Об этом и многом другом мы расскажем в следующих заметках, а именно о практических аспектах: какие авто поддерживаются, какие есть адаптеры для подключения смартфона или компьютера к автомобилю, как запросить и получить значения параметров. Спасибо за внимание, до новых встреч!

© Habrahabr.ru