ELM327 — дешевле не бывает

Как и обещал ранее, пора рассмотреть возможности самого популярного и, в тоже время, самого дешевого адаптера для CAN ELM327. Это имя стало нарицательным, адаптеры на базе чипа ELM327 выпускают самые разные производители в самых разных вариантах: USB, Bluetooth, WiFi.

Средняя цена на Aliexpress на подобный адаптер в варианте USB 7$. По истине, дешевле только даром =)

При написании этой заметки я использовал USB версию, но все сказанное справедливо для любого варианта, т.к. система команд у всех ELM327 практически одинаковая. Почему практически? Потому что на самом деле существует три версии самого контроллера:

  1. версия 1.3а;
  2. версия 1.4b;
  3. версия 2.1.

На сайте официального производителя при желании без проблем можно найти информацию о том, в чем отличие версий.

Учитывая что единого производителя здесь нет, то рассматривать общие характеристики не буду. Корпуса, длины кабелей могут быть какими угодно и зависят только от фантазии производителя.

С точки зрения удобства подключения для анализа взаимодействия по CAN, адаптер удобным не назовешь: все-таки OBD разъемчик довольно крупный. С другой стороны можно купить OBD «штаны» или распять свой переходник с проводами для удобства подключения в произвольной точке.

ELM327 изначально разработан для работы с автомобилями, поэтому в контроллере реализована поддержка ряда стандартных протоколов. Описание всех поддерживаемых стандартов есть в документации на контроллер ELM327. Это достаточно объемный материал, поэтому я коротко остановлюсь только на одном их них: SAE J1979. Именно в рамках этого стандарта работают многие популярные программы, в том числе и под Andorid, например, Torque. Стандарт SAE J1979 определяет 10 режимов работы, с помощью которых можно получить информацию о параметрах работы определенных систем, информацию об автомобиле, получить список ошибок и т.д. Здесь есть небольшая статья, в которой можно найти краткое описание всех 10 режимов на русском.

Параметры и режимы, которые оговорены в SAE J1979, можно получить не только на автомобилях группы VAG, они успешно поддерживаются в автомобилях других марок. Однако, каждый производитель, кроме стандартных протоколов, реализует и свои собственные. Очевидно, что ELM3227 не поддерживает внутренние стандарты различных марок, однако это не мешает применять его для доступа к специфичным процедурам и параметрам, т.к. «среда», в любом случае, остается неизменной — это CAN. А ELM327 при взаимодействии с CAN умеет многое…

Я позволю пропустить себе описание работы ELM327 со стандартными протоколами, которые он поддерживает, а сразу перейду к вопросу применения ELM327 в качестве инструмента анализа «нестандартных» протоколов.

Все вопросы, связанные с подключением адаптера к компьютеру, планшету или телефону я оставлю за кадром. Среди производителей нет единого мнения какой конвертор USB<>UART использовать, поэтому для создания VCP (Virtual Com Port) микросхемы применяются самые разные: FTDI DXXX, CP1202, CH340 и т.д.

Работать предлагаю из терминальной программы. Подойдет любая программа, я буду использовать putty. Запускаем программу, указываем COM порт, скорость 38400, открываем соединение. Чтобы убедится, что соединение с адаптермо установлено, можно запросить информацию об адаптере. Для этого достаточно отправить команду [email protected] (регистр значения не имеет). Если все сделано правильно, то можно будет увидеть ответ вида OBDII to RS232 Interpreter.

Приглашение в консоли ELM327
Приглашение в консоли ELM327

Чтобы запустить мониторинг всех сообщений на шине, нужно ввести команду ATMA и, если обмен на шине есть и все подключено правильно, Вы его увидите…

Мониторинг CAN в консоли через ELM327
Мониторинг CAN в консоли через ELM327

Как не трудно заметить, есть некоторые проблемы. В данном логе отсутствуют ID сообщений. Чтобы включить отображение ID, нужно включить вывод заголовков, к которым относятся ID. Команда ATH1 включает вывод, команда ATH0 — отключает.

Здесь, по идее должен был быть скриншот с успешным выполнением команд и списком сообщений с CAN ID, но его не будет. Почему? Потому что китайские адаптеры в большинстве случаев НЕ используют оригинальную микросхему ELM327, а используют программную эмуляцию на базе недорогих микроконтроллеров вроде Atmel Mega или им подобных. В результате, часть оригинальных команд в них не реализована… Этим же объясняется тот факт, что очень часто при покупке указываются версии, отсутствующие у оригинального ELM327 (например, 1.5)

В общем, у меня полноценно мониторить CAN с помощью дешевого ELM327 не получилось. Покупать адаптер на базе оригинального ELM327 или разводить самому нет никакого желания, учитывая, что есть отличный CANUSB от Lawicel.

Тем не менее, у каждого обладателя ELM327 есть возможность построить недорогой CAN monitor, вопрос исключительно в том, поддерживает ли Ваш ELM327 нужные команды…