Как и обещал ранее, пора рассмотреть возможности самого популярного и, в тоже время, самого дешевого адаптера для CAN ELM327. Это имя стало нарицательным, адаптеры на базе чипа ELM327 выпускают самые разные производители в самых разных вариантах: USB, Bluetooth, WiFi.
Средняя цена на Aliexpress на подобный адаптер в варианте USB 7$. По истине, дешевле только даром =)
При написании этой заметки я использовал USB версию, но все сказанное справедливо для любого варианта, т.к. система команд у всех ELM327 практически одинаковая. Почему практически? Потому что на самом деле существует три версии самого контроллера:
На сайте официального производителя при желании без проблем можно найти информацию о том, в чем отличие версий.
Учитывая что единого производителя здесь нет, то рассматривать общие характеристики не буду. Корпуса, длины кабелей могут быть какими угодно и зависят только от фантазии производителя.
С точки зрения удобства подключения для анализа взаимодействия по 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, открываем соединение. Чтобы убедится, что соединение с адаптермо установлено, можно запросить информацию об адаптере. Для этого достаточно отправить команду AT@1 (регистр значения не имеет). Если все сделано правильно, то можно будет увидеть ответ вида OBDII to RS232 Interpreter.
Чтобы запустить мониторинг всех сообщений на шине, нужно ввести команду ATMA и, если обмен на шине есть и все подключено правильно, Вы его увидите…
Как не трудно заметить, есть некоторые проблемы. В данном логе отсутствуют ID сообщений. Чтобы включить отображение ID, нужно включить вывод заголовков, к которым относятся ID. Команда ATH1 включает вывод, команда ATH0 – отключает.
Здесь, по идее должен был быть скриншот с успешным выполнением команд и списком сообщений с CAN ID, но его не будет. Почему? Потому что китайские адаптеры в большинстве случаев НЕ используют оригинальную микросхему ELM327, а используют программную эмуляцию на базе недорогих микроконтроллеров вроде Atmel Mega или им подобных. В результате, часть оригинальных команд в них не реализована… Этим же объясняется тот факт, что очень часто при покупке указываются версии, отсутствующие у оригинального ELM327 (например, 1.5)
В общем, у меня полноценно мониторить CAN с помощью дешевого ELM327 не получилось. Покупать адаптер на базе оригинального ELM327 или разводить самому нет никакого желания, учитывая, что есть отличный CANUSB от Lawicel.
Тем не менее, у каждого обладателя ELM327 есть возможность построить недорогой CAN monitor, вопрос исключительно в том, поддерживает ли Ваш ELM327 нужные команды…