Что можно сделать через разъем OBD в автомобиле
Ни для кого не секрет, что в современных автомобилях все системы под завязку забиты различной электроникой, даже простой стеклоподъемник имеет собственный микроконтроллер и адрес в общей сети. Мне, как интересующемуся владельцу, стало интересно, что же можно сделать имея просто доступ к разъему OBD и ничего более.
Все описанное в статье относится к автомобилю 2008 года (Mitsubishi Lancer), но как показала практика, спустя 10 лет у производителя ничего не изменилось и все функции продолжают использоваться и работать на современных авто.
Строение сети в автомобиле изображено на картинке:
В машине имеются 3 CAN шины (скоростная шина двигателя 500kbps, низкоскоростная салонная 83.3 kbps, диагностическая) и одна шина LIN. Связующим звеном между ними является блок ETACS (Electronic Total Automobile Control System), который выступает «шлюзом» и пересылает сообщения из одной шины в другую, по определенным правилам, а также занимается обработкой некоторых из них. Что же можно сделать с CAN шиной? Например, пообщаться с блоками, а может и что-нибудь изменить. Чтобы начать диалог с любым блоком необходимо знать его адрес, а также поддерживаемые функции (PID), которые он сможет обработать и дать ответ.
В открытом доступе лежит ПО для дилерских центров под названием MUT III. Изучив базы данных из него, можно найти всю интересующую нас информацию.
О адресах (запрос-ответ) в CAN сети:
PID’ы запросов, полные расшифровки ответов от всех блоков, включая положение байт в ответе (если за один кадр отправляются несколько значений) и множители с единицами измерений:
Например, хотим мы узнать угол поворота рулевого колеса. Для этого отправим в блок управления ESP команду 2102. В ответ прилетит сообщение 6102 FFEA000008FFF302
Взглянув в таблицу, узнаем, что нужны байты 2 и 3.
Таким образом можно запросить из блоков управления очень много информации, вплоть до того, сколько часов играло радио и сколько дисков было загружено в магнитолу, а также запускать диагностические проверки на всех узлах (можно на приборной панели включать разные лампочки и дергать стрелки, например).
Хорошо, все что хотели мы узнали, а какая от этого польза? Вот если что-нибудь изменить/включить/отключить…
Простой пример. В блоке управления автоматической коробкой передач есть программный счетчик уровня старения масла и при накоплении определенного порогового значения на экране бк появляется сообщение о том, что необходимо произвести обслуживание трансмиссии. Масло поменяли, а сообщение продолжает отображаться на экране, ведь счетчик никто не сбросил и сбросить может только дилерский сканер MUT-III (который стоит около 1000$, не каждый может себе такое позволить) и некоторые программы (тоже не бесплатные). Все в тех же таблицах можно найти команду под говорящим само за себя названием CLEAR_CVT_oil_degradation_level_Start. Можно злобно посмеяться в сторону ОД и самому сбросить этот злополучный счетчик. Отправляем команду 3103 в блок CVT и… получаем в ответ 7F3133.
Небольшое отступление. Почти во всех автомобилях для проведения диагностики и обслуживания используется механизм UDS (он же ISO 14229).
Он упрощает жизнь разработчикам автомобильных диагностических сканеров и является унифицированным для всех автопроизводителей (но это не значит, что некоторые не могут придумывать поверх него свои надстройки).
В итоге имеем расшифрованный ответ от вариатора: 7F — запрос отклонен, 31 — это PID, который мы отправляли и Negative response code 33, а именно Security Access Denied. То есть, у нас нет прав на изменение или запрос этой функции. У кого же она есть?
Отступление 2. В UDS используется механизм разграничения доступа по нескольким уровням — обычная диагностическая сессия, расширенная сессия, сессия программирования и т.п. В каждой сессии присутствуют уровни допуска, которые решают, что вам можно, а что нет. Чтобы получить доступ к ним, необходимо запросить у блока так называемый Seed, обработать его определенным алгоритмом и отправить обратно в блок (Key). Подробнее можно почитать тут.
Попробуем запросить seed. Отправляем в ECU команду 2701 и получаем в ответ 6701 6A43FD3C.
Отправив в ответ любое 4-байтное значение (27 02 DEADBEEF), получим в ответ 7F2735, где 35 это Invalid Key (неверный ключ), т.к. было отправлено значение «с потолка». Где же искать алгоритм вычисления ключа? В прошивке блока управления, больше негде. Достать его достаточно легко (но не на всех блоках, все зависит от используемого микроконтроллера), сначала находим обработчик приема CAN, затем функцию обработки PID 0x27.
Повторив обмен seed-key с алгоритмом из прошивки получим в ответ 6702 34, где 34 это «Доступ разрешен». После этого команда на сброс уровня деградации масла успешно отрабатывает и возвращает не negative response code, а положительный ответ 7103 01 и счетчик успешно сбрасывается.
Таким образом, через OBD разъем можно делать с автомобилем практически все: менять VIN номера в блоках, настраивать кодировку (конфигурацию), менее чем за секунду отключить иммобилайзер, очищать информацию об ошибках, вводить блок в состояние загрузки, когда можно загрузить в RAM контроллера любой код и выполнить его. Система безопасности у японцев слегка хромает.
Управляем электроникой автомобиля через смартфон
Лучше, чем бортовой компьютер: устройство OBD-2 позволяет более тонко осуществлять настройку и управление электроникой машины. Мы расскажем, как помочь автомобилю и смартфону правильно понимать друг друга, а также покажем соответствующие приложения для iOS и Android.
После подключения к автомобильному разъему OBD-2 смартфон превращается в универсальный инструмент: мобильный телефон может служить в качестве бортового компьютера, диагностического прибора и навигационной системы.
OBD-2-разъем в автомобиле
Apple и Google хотят завоевать автомобили с помощью CarPlay и Android. Однако, предпосылкой к этому является либо дорогостоящий апгрейд, либо новенький автомобиль. Тем не менее, необходимым условием это не является, так как на особые затраты идти вам не придется, если вы захотите умно соединить свой смартфон с машиной: даже старые «тележки» располагают всем необходимым для того, чтобы использовать смартфон в качестве, например, бортового компьютера.

Так мобильный телефон превращается в бортовой компьютер
Чтобы получить возможность использовать мобильный телефон в качестве бортового компьютера и диагностического прибора, вы должны подключить его через Bluetooth или WLAN к разъему OBD-2.
После этого с помощью соответствующего приложения вы сможете наблюдать за расходом топлива, и использовать смартфон для отображения не только скорости, но и температуры охлаждающей жидкости, крутящего момента, ускорения и многих других параметров.
Для заездов по пересеченной местности и гоночных покатушек будет полезна информация о тормозном пути, времени прохождения круга и угле наклона кузова.
Кроме того, вы сможете получить данные о содержащихся в системе кодах ошибок, чтобы своевременно вмешаться при возможных неполадках.
Примечание: из-за ограничений, которые имеют Bluetooth-протоколы под iOS, с iPhone совместимы только OBD-2-модули с WLAN-связью.
OBD-2-приложения для Android и iOS
Смартфон должен обладать способностью правильно обмениваться информацией с автомобилем, то есть с модулем, подключенным к разъему OBD-2 — и для этого необходимо соответствующее приложение.
Несколько интересных программ, которые могут предложить что-то действительно стоящее, мы собрали для вас воедино в нижеприведенной таблице для Android (Google Play) и iOS (Appstore).
| Приложение | ссылка на онлайн-магазин | цена |
| Torque Lite (OBD2 & Car) | для Android, для iOS | бесплатно |
| Smart Control Lite | для Android, для iOS | бесплатно |
| DashCommand | для Android, для iOS | бесплатно |
| EOBD Facile | для Android, для iOS | бесплатно |
| DashCommand | для Android, для iOS | бесплатно |
| OBD Car Doctor | для Android, для iOS | бесплатно |
Фото: компании-производители
OBD2 reader — диагностика автомобиля
Выбор подключения
Изначально необходимо пояснить что для подключения к авто будет использоваться ELM327 адаптер. ELM327 – это микросхема, которая позволяет преобразовать протоколы, используемые в диагностических шинах автомобилей в протокол RS232, которым мы и будем передавать данные. За счет того что передача данных по протоколу RS232 происходит последовательно возникает первая проблема – скорости передачи данных, которую мы постараемся обойти в одном из следующих пунктов.
Существует несколько вариаций адаптера ELM327, которые классифицируются по способу передачи данных – Bluetooth, WIFI, USB. Исходя из того что целью разработки является мобильное устройство под операционной системой Android можно подобрать две наиболее подходящие версии ELM327, такие как Bluetooth и WIFI. Так как способ получения и обработки данных один, а отличаются они всего лишь вариантами подключения к адаптеру, то можно выбрать всего один, организовать при помощи него диалог, а после добавить остальные варианты подключения.
ELM327 1.5 vs ELM327 2.1
Одной из первых проблем, с которыми можно столкнуться стала проблема выбора непосредственно адаптера, в нашем случае Bluetooth. Оказывается если вам необходимо поддерживать все (по крайней мере большинство) автомобилей необходимо выбирать версию v1.5 вместо v2.1, что на самом то деле необходимо несколько раз уточнить при покупке адаптера, потому как продавцы пытаются выдать версию адаптера не за ту, которая есть на самом деле, т.к. они особо ничем не отличаются. На деле же в версии v2.1 отсутствует поддержка протоколов J1850 PWM и J1850 VPW, что говорит о том, что у вас не получится подключиться к автомобилям, которые используют эти протоколы.
Подключение
Подключение к адаптеру происходит в несколько этапов:
AT Z [reset all]
Сброс настроек адаптера до заводского состояния.
AT L1-0
Включить/Отключить символы перевода строки.
AT E1-0
Echo on – off
AT H1-0
Headers on – off
AT AT0-1-2
Adaptive Timing Off — adaptive Timing Auto1 — adaptive Timing Auto2
AT ST FF
Установить таймаут на максимум.
AT D [set all to Default]
Сброс настроек в исходное, настроенное пользователем состояние.
AT DP [Describe the current Protocol]
Сканер способен самостоятельно определять протокол автомобиля, к которому он подключен.
AT IB10 [set the ISO Baud rate to 10400]
Команда устанавливает скорость обмена данных для ISO 9141-2 и
ISO 14230-4 10400
AT IB96 [ set the ISO Baud rate to 9600]
Команда устанавливает скорость обмена данных для ISO 9141-2 и
ISO 14230-4 9600 для протоколов 3,4,5.
AT SP h [ Set Protocol h]
Команда выбора протокола h, где h:
0 – Automatic;
1 — SAE J1850 PWM (41.6 Kbaud);
2 — SAE J1850 VPW (10.4 Kbaud);
3 — ISO 9141-2 (5 baud init, 10.4 Kbaud);
4 — ISO 14230-4 KWP (5 baud init, 10.4 Kbaud);
5 — ISO 14230-4 KWP (fast init, 10.4 Kbaud);
6 — ISO 15765-4 CAN (11 bit ID, 500 Kbaud);
7 — ISO 15765-4 CAN (29 bit ID, 500 Kbaud);
8 — ISO 15765-4 CAN (11 bit ID, 250 Kbaud);
9 — ISO 15765-4 CAN (29 bit ID, 250 Kbaud);
AT SP Ah [Set Protocol h with Auto]
Команда устанавливает по умолчанию протокол h, если подключение по протоколу h не удалось, тогда адаптер начинает автоматический подбор протокола.
Исходя из описанных выше команд, формируем инициализационную строку.
Желательно давать возможность пользователю сменять инициализационные команды, потому как для того чтобы подобрать «ключ» к некоторым авто необходимо выбрать более подходящие настройки адаптера. В нашем же случае используются настройки, которые походят для большинства стандартных протоколов.
Так же желательно обратить внимание на команду APSP0, таким образом мы устанавливаем по умолчанию автоматический подбор протокола, это может занять некоторое время.
Соответственно если пользователь знает какой у его авто протокол, то используя возможность смены протокола подключения он может поменять 0 на номер его протокола.
Считывание диагностических данных
Для считывания диагностических данных используются специальные команды PID’s.
PID (Parameter id’s — Бортовые диагностические идентификаторы параметров) – коды, которые используются для запроса показателей определенных датчиков автомобиля.
Основные пиды можно найти в Википедии, там полный набор основных команд, которые должны поддерживать все автомобили. Так же есть наборы команд для определенных марок и типов автомобилей, эти наборы предоставляются за отдельную плату. В нашем случае приложение заточено на базовую диагностику автомобилей соответственно мы используем базовый набор команд.
Также есть возможность получать текущие данные от автомобиля при этом команда получения данных от авто будет иметь вначале 01, указывая на то что мы хотим получить real data. Если же мы хотим получить сохраненные данные автомобиля, то вначале команды необходимо указать 02. Например, команда для получения текущей скорости автомобиля – 010D, а для получения сохраненной скорости – 020D.
Если внимательно посмотреть на то количество команд, которое предоставляется открытыми ресурсами, то можно как раз и заметить ту проблему, о которой я писал в самом начале, а именно проблема скорости ответа адаптера. Так как отправка и получение команд идет последовательно, то для того чтобы получить показания датчика на текущий момент времени необходимо дождаться ответа на все предыдущие команды. Соответственно если запрашивать на получение все команды, то большая вероятность того что обновление реальных данных будет происходить очень медленно. Но и эту проблему можно решить, если воспользоваться командами, которые отобразят только те команды, что существуют в автомобиле. Например:
0100 – PIDs supported [01 — 20]
0120 – PIDs supported [21 — 40]
0140 – PIDs supported [41 — 60]
0160 – PIDs supported [61 — 80]
0180 – PIDs supported [81 – A0]
01A0 – PIDs supported [A1 — C0]
Я продемонстрирую как определить какие датчики присутствуют в автомобиле при помощи одного из пидов. Например:
Используя следующую табличку можем определить какие пиды поддерживаются нашим автомобилем, начиная от 01 до 20:
Исходя из получившихся данных можем определить, что наш автомобиль поддерживает следующие пиды:
Теперь вместо отправки всех 32 команд и ожидания ответа на них, несмотря на то, что некоторые могут отсутствовать, мы будем использовать всего 15 команд. Но и это не предел так называемой оптимизации. Для того чтобы данные обновлялись еще быстрее советую запрашивать только данные о тех датчиках, которые отображаются на экране. Хотя это ограничивает некоторый функционал приложения. Например, запись истории.
Считывание и расшифровка ошибок автомобиля
Ошибки автомобиля тоже могут быть различными и для них тоже существуют отдельные команды. Например:
А теперь пояснение.
Исходя из полученного ответа мы можем получить код ошибки, для этого декодируем полученное сообщение используя следующие таблички.
3, 4, 5 символы формируются по этой таблице:
Исходя из этого можем попробовать разобрать следующий ответ 0001000000111110
Эпилог
На данном этапе мы разобрались в том, каким образом организовать диалог с адаптером, посылать ему команды, получать и расшифровывать его ответы. Это большая часть работы, если считать то, сколько времени уходит на изучение материала, но в то же время довольно таки интересная. За пределами этой статьи осталось множество проблем связанных с визуальным интерфейсом, а также множество дополнительных функций, таких как добавление новых пидов из файла, стандартный и расширенный способ подключения к адаптеру и построения графиков.
Как пользоваться автосканером ELM327
OBD (On-Board Diagnostic) обозначает диагностику и контроль основных узлов автотранспортного средства (шасси, двигателя и некоторых вспомогательных устройств). Для проведения самостоятельной проверки систем чаще всего используется диагностический адаптер ELM327 – компактный прибор, который передает данные о работе авто в режиме реального времени. Все что необходимо для использования ЕЛМ – это ПК, работающий на ОС Windows, телефон или планшет на Андройд или iOS. Если говорить о том, как пользоваться ELM327, то справиться с подключением девайса сможет даже начинающий автовладелец.
Однако прежде чем приступить к эксплуатации устройства, необходимо уточнить совместимость сканера для диагностики с вашим автомобилем.
С какими автомобилями совместим сканер
Чтобы определить какой автосканер подходит для личного авто, достаточно определить протоколы обмена данными. Для этого необходимо взглянуть на колодку OBD-2 и уточнить, какие контакты на ней присутствуют:
Наличие контакта 7 (K-Line) говорит о том, что для диагностики используется протокол ISO 9141-2. Такие диагностические разъемы используются в автомобилях азиатского и европейского производства.
Выводы 4, 5, 7, 15 и 16 свидетельствуют о протоколе ISO14230-4KWP2000, который обычно используется на машинах Daewoo, KIA, Hyundai, Subaru STi и на некоторых моделях Mercedes.
Во всех описанных выше случаях можно смело пользоваться сканером ELM327. Кроме этого, он будет беспрепятственно работать с протоколами:
SAE J1850 PWM/VPW;
ISO 15765-4 CAN 29/11 bit 250/500 Kbaud;
SAE J1939.
Как правило, автосканер ELM327 без проблем устанавливается и подключается на любой автомобиль.
Как подключить на Android
Для подключения сканера ELM327 используется специальное гнездо, которое расположено под рулевой колодкой автомобиля (в салоне).
Полезно! Если сканер устанавливается на ВАЗ и прочие отечественные авто до 2006 года выпуска, то, скорее всего, потребуется воспользоваться переходником или адаптером.
Скачать в Google Play небольшую утилиту Torque. Это приложение считается самым лучшим, так как оно позволяет дополнительно считывать ошибки систем авто.
Подключить ELM327 в соответствующий разъем.
Завести двигатель авто.
Активировать блютуз на мобильном устройстве.
Зайти в настройки смартфона и перейти в «Беспроводные сети Bluetooth».
Нажать на «Поиск нового оборудования».
Дождаться, пока на экране телефона не отобразится список доступных устройств.
Выбрать из них OBD 2 и соединиться с ним. Для этого требуется указать специальный код сопряжения, чаще всего это 1234 или 0000.
Когда подключение ELM 327 bluetooth будет завершено, можно переходить к настройкам. Для этого заходим в Torque и выбираем «OBD 2 настройки адаптера».
Далее, необходимо выбрать устройство Bluetooth, то есть сам сканер ELM 327.
Через некоторое время установится соединение, и можно будет приступать к диагностике систем автомобиля.
Интерфейс программы
Если говорить про ELM 327 interface OBD 2, то он интуитивно понятен. После установки подключения необходимо дождаться, пока мигающая иконка с изображением автомобиля не перестанет моргать. Если все было правильно, то, устройство сразу начнет работать.
Разберемся, как пользоваться автосканером, а точнее, какие из иконок программы Torque нас будут больше всего интересовать:
OBD Check Fault Code – позволяет считать и расшифровать возможные ошибки автомобиля.
Realtime Information – счетчики, отображающие показатели параметров двигателя в реальном времени. Пользователь может самостоятельно выбирать и добавлять счетчики, которые ему нужны. Для этого необходимо нажать «Добавить экран».
Map View – отображает маршрут передвижения.
Во время движения автомобиля водитель может смотреть за показателями датчиков давления, скорости, расхода топлива и многого другого.
Если же вы хотите получать более развернутые данные о системах авто, то рекомендуется подключиться к сканеру ЭЛМ через ПК.
Как подключить на Windows
Чтобы разобраться, как подключить сканер к компьютеру необходимо скачать программу ScanMaster.
Полезно! Перед использованием программы, скачанной из сети, ее нужно правильно установить. Для этого, сначала найдите файл с названием «Key» или «Keygen» и сгенерируйте ключ доступа. После этого можно запускать установочный файл с расширением «.exe».
После этого необходимо:
Подключить сканер в разъем в автомобиле.
Завести двигатель машины.
Зайти в панель управления компьютера и перейдите в раздел «Устройства Bluetooth».
Нажать «Добавить устройство» и установить галочку рядом с «Устройство готово к обнаружению» и выбрать «Далее».
Некоторое время будет осуществляться поиск доступных устройств, после чего автосканер подключится к ноутбуку.
Повторно нажать «Далее».
В появившемся окне необходимо вбить один из стандартных кодов: 0000, 1111, 1234 или 6789.
Снова нажать «Далее».
Дождаться автоматической интеграции устройства с ПК и нажать «Готово».
На этом установка ПО для сканера завершена.
Если вы являетесь ярым поклонником яблочной продукции, и вариант подключения к ПК или смартфону Android вас не устраивает, то стоит приобрести специальную модель ELM 327 Wi-Fi, которую можно подключить к любому iOS устройству.
Как подключить к iPhone или iPad
Чтобы заполучить свой собственный диагностический центр для проверки работы автотранспортного средства не обязательно подключаться к сканеру через блютуз. Более современные модели ЕЛМ оснащены Wi-Fi модулем, который позволяет использовать для получения данных практически любое портативное устройство.
Рассмотрим, как установить такое соединение:
Подключить сканер к разъему в авто.
Зайти в раздел, отвечающий за настройки беспроводного соединения и выбрать сеть «CLKDevices».
Справа будет синяя стрелка, на которую необходимо нажать.
В появившемся окне нужно ввести данные адреса IP и маршрутизатора: 192.168.0.11. Также нужно указать стандартную маску подсети: 255.255.255.0.
Чуть ниже необходимо указать порт 35000.
На этом настройка заключена. Зная, как пользоваться сканером ELM 327, достаточно установить любое приложение для быстрой диагностики и прописать в ее настройках те же самые параметры IP и порта.
Однако стоит учитывать, что при настройке частных сканеров могут возникнуть трудности.
Наиболее частые ошибки при подключении
Проблемы, которые могут возникнуть при соединении:
Сканер не подключается к ЭБУ. Такое может случиться по нескольким причинам: прибор не подходит для марки/модели авто, неверно подобран переходник или программа. Иногда водитель забывает пройти инициализацию. Реже подключения не происходит из-за банальной механической поломки – вышел из строя предохранитель, который отвечает за работу разъема OBD II.
ELM327 не показывает данные в реальном времени (например, расход топлива). Дело в том, что данная функция доступна только во время движения автомобиля.
Автосканер не считывает или не сбрасывает ошибки. Часто для активации устройства нужен работающий двигатель, поэтому достаточно просто запустить мотор. Некоторые дешевые модели ELM327 не умеют обнулять ошибки ABS, это решаемо, но требуется модификация прибора.
В заключении
ELM327 – это компактный девайс, который позволит значительно сэкономить на диагностике автомобиля, он прост в использовании и позволяет выводить данные почти на любой ПК или телефон. Тем не менее, перед тем, как самостоятельно подключать автосканер, стоит изучить видео, в котором наглядно показан процесс использования ЕЛМ.
























