CanHacker на базе Adruino (без глюков)

в 7:16, , рубрики: arduino, CAN, canhacker, автомобили

Приветствую всех!

Хочу поделиться своим опытом решения проблемы с включением электроусилителем руля (ЭУР) на Volkswagen Tiguan 2008 года «на столе».

Предыстория. Периодически на панели приборов появлялись индикаторы желтого и красного руля, что указывало на неполадки с ЭУР.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

Красный руль на щитке приборов

Диагностика показала, что на 30-й клемме (постоянный плюс от аккумулятора) пропадает питание.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

Ошибка в блоке ЭУР

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

В итоге я пришел к выводу, что проблема кроется в блоке управления ЭУР, который расположен на самой рулевой рейке. Добраться до него без подъемника крайне сложно, поэтому я решил заменить рейку на контрактную б/у.

После замены проблема исчезла, но осталась старая рейка, которую нельзя было продать в таком состоянии, так как причина ошибки оставалась неясной. Кроме того, без подключения к автомобилю проверить или починить ее было невозможно.

Так возникла задача: подключить рулевую рейку Tiguan «на столе» без подключения к машине. Для этого нужно было имитировать активность в CAN‑шине.

Для решения задачи потребовался адаптер, совместимый с программой CanHacker, и трейс CAN‑пакетов с автомобиля.

В этой статье я расскажу о первом этапе — создании адаптера, совместимого с CanHacker.

CanHacker работает с адаптерами по протоколу Lawicel. Для создания адаптера мне понадобились микроконтроллер Arduino, CAN‑трансивер и модуль MCP2515 с трансивером TJA1050.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост
Модуль MCP2515

Схема подключения проста: необходимо соединить питание и SPI‑интерфейс. На модуле MCP2515 есть джампер J1, который подключает резистор 120 Ом на шине. Для работы с автомобилем этот резистор обычно не нужен, но для тестирования на столе его лучше установить.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

Схема подключения CAN модуля к Arduino

Джампер J1 на модуле MCP2515 подключает резистор 120 Ом на шине. Для подключения к шине автомобиля он обычно не нужен, а вот для подключения устройства к модулю на столе его лучше установить.

После сборки модуля оставалось найти подходящую прошивку.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

Собранное "устройство" в корпусе, печатал когда-то на 3D принтере - завалялось...

Изначально я использовал проект arduino‑canhacker, но он оказался нестабильным — зависал даже на скорости 125 Кб/с. В итоге я нашел более надежное решение — библиотеку Seeed_Arduino_CAN. В ней есть пример canbus‑monitor, который после прошивки работает стабильно на скорости 500 Кб/с и совместим с CanHacker.

Теперь, когда адаптер готов, можно проверить его работу. Подключаемся к CAN‑шине автомобиля (в моем случае — к блоку парковочного ассистента, так как на Volkswagen используется Gateway, разделяющий сети). Запускаем CanHacker, выбираем COM‑порт, скорость 115 200 для адаптера и 500 Кб/с для CAN‑шины.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

Настройки подключения

После подключения видим, что связь установлена, и версия прошивки отображается.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

CanHacker подключился к адаптеру

Следующий шаг — запись трейса CAN‑пакетов. Включаем зажигание, запускаем двигатель, глушим его и останавливаем запись. Теперь у нас есть трейс, который можно использовать для имитации работы автомобиля и включения рулевой рейки. Конечно, не все пакеты из трейса понадобятся, но они помогут определить, какие CAN ID и сообщения отвечают за активацию ЭУР.

CanHacker на базе Adruino (без глюков) Arduino, Can, Машина, Радиоэлектроника, Программа, Длиннопост

трейс, полученный с рабочего автомобиля

Это моя первая статья на Хабре, и если она окажется полезной, я с удовольствием поделюсь другими техническими решениями и опытом!

Автор: rsgrinko

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js