Elm327 работает только при заведенном двигателе - Авто Сфера №76
Avtosfera76.ru

Авто Сфера №76
43 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Elm327 работает только при заведенном двигателе

Разработка Android приложения для работы с OBDII протоколом

Почему это нужно для вашего автомобиля?

Необходимые материалы


Прежде всего нам нужен OBDII адаптер способный работать с вашим автомобилем. Существует множество таких адаптеров. Некоторые из них имеют COM интерфейс, некоторые — USB интерфейс, а некоторые — Bluetooth интерфейс. Теоретически любой может быть использован для нашего приложения, но на практике лучшим вариантом все-же будет Bluetooth. Также адаптеры могут отличатся поддерживаемыми OBDII протоколами (т.е. фактически поддерживаемыми автомобилями). Так что если у вас под рукой есть автомобиль и подходящий OBDII адаптер, мы можем начать разработку нашего приложения.

Подождите — у вас действительно есть автомобиль достаточно близко к среде разработки? На самом деле мы могли бы использовать симулятор на первых порах. Один из вариантов, работающий у меня — это приложение OBDSim. Это открытый проект доступный для многих платформ. Но поскольку Bluetooth не поддерживается в Windows, то приложение нужно будет собрать из исходных кодов в Linux. Также обратите внимание, что скорее всего вам нужно будет внести изменения в исходный код для того чтоб изменить RFCOMM канал на первый доступный вместо предлагаемого канала 1.

Второй вариант — это аппаратный симулятор, который можно использовать вместо автомобиля. Я использовал ECUsim 2000 standard с включенным протоколом ISO 15765 (CAN). А OBDII адаптер я использовал ELM327 v.1.5

Разработка приложения

Давайте начнем с описания протокола, используемого для связи между Android устройством и OBDII адаптером/автомобилем. Это текстовый polling протокол. Это значит что все что вам нужно — это послать команду для того чтоб получить ответ. И знание какие команды можно посылать является ключевым.

Читать еще:  Двигатель avf какое масло лить

Мы будем подключатся к адаптеру через Bluetooth. Похоже что Bluetooth Low Energy API был бы хорошим вариантом. Но поскольку он поддерживается всего несколькими устройствами, то сейчас слишком рано использовать его.

Протокол поддерживает некоторые AT комманды например выключение эха и управление возвратом каретки. Вторая часть протокола — это непосредственно протокол управления OBDII.

Общая схема работы приложения следующая:

  • подключится в OBDII адаптеру через Bluetooth
  • инициализировать OBDII адаптер с помощью AT комманд
  • непрерывно получать требуемые данные с автомобиля путем отправки соответствующих PID кодов

Подключение к OBDII адаптеру достаточно стандартное. Но одна вещь которую нужно сделать перед подключением — это выбор Bluetooth устройства. Отображение alert диалога со списком устройств вполне подойдет:

Не забудьте где нибудь сохранить адрес выбранного устройства. Теперь мы можем подключится к выбранному устройству:

UUID в коде выше представляет «последовательный» интерфейс через Bluetooth. Конечно этот код должен быть исполнен в не UI потоке. Также я бы рекомендовал посмотреть здесь за деталями и решением ошибки в Android которая может приводить к невозможности подключения в некоторых случаях.

Теперь мы можем обмениваться данными. Для этого мы будем использовать OBD-Java-API библиотеку. Библиотека достаточно простая. Она имеет несколько классов, которые соответствуют разным OBD командам. Не забудьте инициализировать OBDII адаптер путем посылки конфигурационных команд:

Теперь мы готовы посылать другие команды:

Здесь я хочу отметить что библиотека имеет некоторые проблемы с парсингом и часто падает из-за недостаточно хорошей обработки ошибок. Первая проблема это метод performCalculations, который присутствует во всех классах команд. Было бы хорошо проверять размер буфера перед доступом к нему потому что в некоторых случаях ответ может быть короче чем нужно. Само собой проблема короткого ответа лежит на стороне OBDII адаптера/автомобиля, но библиотека должна быть готова к таким проблемам.

Читать еще:  Датчик температуры для двигателя универсальный

Кроме прочего там есть еще некоторые проблемы, так что эта библиотека все еще требует улучшений или просто может быть использована как источник информации.

Полученные данные могут быть сохранены где-нибудь для дальнейшего анализа, например в ElasticSearch.

А сейчас мы работаем над приложением Hours of Service для водителей грузовиков и продолжаем делится опытом в нашем блоге. Stay tuned!

Возможности

ВНИМАНИЕ! Список возможностей может отличаться в зависимости от года выпуска автомобиля, версии адаптера и установленного программного обеспечения.

  • Текущий расход топлива и воздуха.
  • Диагностика ошибок.
  • Отображение данных приборной панели.
  • Обороты двигателя – но только при заведенном автомобиле.
  • Давление топливной системы.
  • Положение дроссельной заслонки.
  • Настройка складывающихся зеркал.
  • Перенастройка автоматического закрывания дверей.
  • Считывание датчиков в реальном времени – иногда работает только при включенном двигателе.

Заключение

Что можно сказать?

За сумму около 500 рублей можно приобрести полезное устройство, которое пригодиться большинству автовладельцев. Даже если вы не занимаетесь ремонтом самостоятельно, можете установить причину ошибки ЭБУ или дополнительного оборудования. В результате уже примерно можете понять, во сколько обойдётся ремонт.

Что касается совместимости, то здесь могу сказать только за ВАЗ-21074i, поскольку сканер тестировал только на этой модели. Тут главное перед покупкой убедиться, что у вас на автомобиле установлен 16-контактный трапециевидный разъём стандарта OBD2, а не 12-контактный OBD1. Возможные проблемы с софтом для диагностики решаемы. Адаптер OBD2 поддерживает различные протоколы (ISO 15765-4, ISO 9141-2, ISO 14230-4, J1850 PWM), по которым работают контроллеры различных моделей автомобилей практически всех мировых производителей.

Мне вполне хватило бесплатного приложения OpenDiagFree 1.4. С его помощью можно проверить основные показатели, установить ошибки и сбросить их после устранения проблем. Этих возможностей вполне хватит большинству автовладельцев, а за более серьёзными работами (перепрошивка, изменение параметров работы двигателя) всё равно придётся обращаться к специалистам. Автосканер имеет ELM327 имеет отличное соотношение цены и качества и может быть рекомендован к покупке.

Ссылка на основную публикацию
ВсеИнструменты