CanHacker на базе Adruino (без глюков)
- пятница, 21 февраля 2025 г. в 00:00:14
Приветствую всех!
Хочу поделиться своим опытом решения проблемы с включением электроусилителем руля (ЭУР) на Volkswagen Tiguan 2008 года «на столе».
Предыстория. Периодически на панели приборов появлялись индикаторы желтого и красного руля, что указывало на неполадки с ЭУР.
Диагностика показала, что на 30-й клемме (постоянный плюс от аккумулятора) пропадает питание.
Казалось бы, что может быть проще — проверить жгут проводов и найти причину. Однако жгут оказался целым, окислений на контактах не было, и питание присутствовало даже при возникновении ошибки.
В итоге я пришел к выводу, что проблема кроется в блоке управления ЭУР, который расположен на самой рулевой рейке. Добраться до него без подъемника крайне сложно, поэтому я решил заменить рейку на контрактную б/у.
После замены проблема исчезла, но осталась старая рейка, которую нельзя было продать в таком состоянии, так как причина ошибки оставалась неясной. Кроме того, без подключения к автомобилю проверить или починить ее было невозможно.
Так возникла задача: подключить рулевую рейку Tiguan «на столе» без подключения к машине. Для этого нужно было имитировать активность в CAN‑шине.
Для решения задачи потребовался адаптер, совместимый с программой CanHacker, и трейс CAN‑пакетов с автомобиля.
В этой статье я расскажу о первом этапе — создании адаптера, совместимого с CanHacker.
CanHacker работает с адаптерами по протоколу Lawicel. Для создания адаптера мне понадобились микроконтроллер Arduino, CAN‑трансивер и модуль MCP2515 с трансивером TJA1050.
Схема подключения проста: необходимо соединить питание и SPI‑интерфейс. На модуле MCP2515 есть джампер J1, который подключает резистор 120 Ом на шине. Для работы с автомобилем этот резистор обычно не нужен, но для тестирования на столе его лучше установить.
Джампер J1 на модуле MCP2515 подключает резистор 120 Ом на шине. Для подключения к шине автомобиля он обычно не нужен, а вот для подключения устройства к модулю на столе его лучше установить.
После сборки модуля оставалось найти подходящую прошивку.
Изначально я использовал проект arduino‑canhacker, но он оказался нестабильным — зависал даже на скорости 125 Кб/с. В итоге я нашел более надежное решение — библиотеку Seeed_Arduino_CAN. В ней есть пример canbus‑monitor, который после прошивки работает стабильно на скорости 500 Кб/с и совместим с CanHacker.
Теперь, когда адаптер готов, можно проверить его работу. Подключаемся к CAN‑шине автомобиля (в моем случае — к блоку парковочного ассистента, так как на Volkswagen используется Gateway, разделяющий сети). Запускаем CanHacker, выбираем COM‑порт, скорость 115 200 для адаптера и 500 Кб/с для CAN‑шины.
После подключения видим, что связь установлена, и версия прошивки отображается.
Следующий шаг — запись трейса CAN‑пакетов. Включаем зажигание, запускаем двигатель, глушим его и останавливаем запись. Теперь у нас есть трейс, который можно использовать для имитации работы автомобиля и включения рулевой рейки. Конечно, не все пакеты из трейса понадобятся, но они помогут определить, какие CAN ID и сообщения отвечают за активацию ЭУР.
Это моя первая статья на Хабре, и если она окажется полезной, я с удовольствием поделюсь другими техническими решениями и опытом!