Страница 1 из 2

Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 00:15
olegel
После замены штатной аудио системы на двухдиновое радио фирмы Тыква с Android в Volvo XC90, прошло полтора года. Красивые ничего не делающие кнопки на руле не то чтобы мешали спать, но зудели - сделай нас. И парктроники, несмотря на замену их камерой заднего вида, своим молчанием напоминали - мы есть.
Изображение
Радио для работы хочет резистивные кнопки руля.

Volvo XC90 имеет две CAN шины быструю и медленную (low и high speed).
Двигатель, коробка, заслонка работают быстро по быстрой. Климат, сидения, двери, парктроники, кнопки на руле и др. по медленной.
И никаких проводов от кнопок. Так же на радио можно подать сигнал заднего хода, для выключения звука во время движения задом, и сигнал включения подсветки, если в салоне темно.
Плюс нашлось странное поведение сигнала ключа зажигания. Если включить зажигание, то 12 вольт появляется, и радио включается. Заглушил машину - радио выключается. Но если завестись, и через 2-3 минуты или меньше заглушить, сигнал остаётся активен от минуты до 5 минут. Было не очень удобно что уходишь, а радио работает, да, оно потом выключается, но хотелось чтоб сразу.

Для анализа данных на шине были заказаны и собраны два адпатера к Arduino.
Изображение
Изображение
Разницы оказалось нет. Можно использовать любой.
Удобное место для подключения находится в багажнике
Изображение
Вот этот провод, нужны белый и зеленый
Изображение
Большинство программ для анализа на компьютере работают по протоколу Lawicel CAN232/CANUSB.
Соответственно нужна прошивка для Arduino, которая конвертирует CAN сообщения в этот протокол.
Я брал arduino-canbus-monitor. Для одного адаптера правда нужно было поменять частоту кварца в прошивка с 16 на 8 МГц.

Аппаратное обеспечение готово, что с программным? Как обычно все грустно.

Пересмотрел несколько программ для логирования.
Почти все просто лупят сообщения в лог файл. Максимум можно отфильтровать по идентификатору источника. Т.е. все они задуманы для систем, где либо мало сообщений. Либо известны критерии фильтрации по идентификатору отправителя.

А у меня Вольво, ничего не известно, около тысячи сообщений в секунду.
В интернете пишут в файл, потом скриптами обрабатывают. В общем прошлое тысячелетие.
Наиболее известная CanHacker и её клоны.
Изображение
И как тут искать? Никаких масок по данным.
Логи выглядят примерно так:
T0240162A8E0100040070019004337
T0240162A80030004007001900435A
T0240162A84030004007009900437D
T02A074288C1000000000000004380
T012177FC8C10C4800101008004385

Пока я нажимаю и отпускаю кнопку на руле, у меня уже пару тыщ сообщений.
Нашел несколько похожих проектов. Читал шведские Volvo форумы. Искал сообщения от указанных модулей в логе - НИЧЕГО. Еще и у всех разные цифры. Но данные все таки есть.

У обычных машин адреса строго определены - допустим 0x45FE модуль управления сидением пассажира. Он 0x45FE у всех машин этой модели, и другие модули знают о 0x45FE, все же просто. Инженеры же Volvo как обычно оказались.. скажем так - неправильной ориентации, и вот что удумали. В заботе о клиенте они придумали такое - каждый модуль в сети имеет свой адрес и он разный для всех машин. Соответственно модули разных машин одной модели, просто так не переставишь. Оправдывают это они тем, чтобы модули не воровали.
Но! Можно прописать адрес модуля в другие модули машины, чтобы они "увидели" новый модуль.
Это делается только через их онлайн систему за неразумные деньги. Или делают умельцы без их системы для ворованных модулей.
Т.е. чтобы поменять модуль надо во ВСЕ! (те которым надо взаимодействовать) модули системы записать новый адрес.

Ок! Буду искать не знаю что, непонятно где :)
Для этого я написал свою программу логер.
Доступна на Github.
Изображение
Итак в сообщении есть адрес отправителя, я собрал их в левом списке. Рядом количество сообщений от модуля всего и количество уникальных сообщений. Модулю для удобства можно дать имя.
Кликнув на модуль можно посмотреть уникальные события от этого модуля, они по 8 байт.
Новые сообщения появляются снизу.
Теперь стало ясно, все модули машины тупо посылают своё состояние в сеть.
В большинстве сообщений меняются только старшие биты первого байта - похоже циклический код.
Добавил маску по байтам - одну глобальную, и одну для каждого модуля.
Поставил 3F в первом байте, проигнорировав первых 5 бит.
О! стало значительно меньше уникальных сообщений.
Для удобства сделал сброс количества сообщений, и глобально и по модулям.
Теперь стало понятно, ждем пока система успокоится - перестанут расти количества уникальных сообщений. Далее нажимаю кнопку на руле. О! несколько модулей выдали новое сообщение.
Сбрасываю список соотношений в подозрительный модулях, и повторяю нажатие кнопки.
Только один модуль явно посылает одно новое сообщение одновременно с кнопкой. Есть ещё модули которые лупят сообщения, но явно не одновременно с кнопкой.
Для сравнения двух сообщения сделал окно побитного сравнения
Изображение
Вот и кнопки:
Адрес swm 00404066
nav enter
........ ........ ........ ........:........ ........ ..1..... ........
nav back
........ ........ ........ ........:........ ........ ...1.... ........
nav up
........ ........ ........ ........:........ ........ ....1... ........
nav down
........ ........ ........ ........:........ ........ .....1.. ........
nav left
........ ........ ........ ........:........ ........ .......1 ........
nav right
........ ........ ........ ........:........ ........ ......1. ........

Так потихоньку собрал, то что мне нужно:
Состояние кнопок на руле, дистанцию парктроников, уровень освещенности, позицию ключа зажигания, позицию коробки передач P,R,N,D, кнопка включения/отключения парктроников.
Заодно и другая инфа попадалась.

На основе собранной информации за долгие новогодние выходные родился Volvo Can Adapter. Адаптер выложен на Github. Arduino, CAN адаптер, цифровой резистор для эмуляции нажатий кнопок.
Изображение
Пригодился модуль телефона из машины, он стал донором зеленого разъема, как раз на него в машине приходит CAN low-speed шина
Изображение
Изображение
Поскольку на него шли еще несколько проводов от SIM карты ICM модуля я их обрезал (уж точно SIM карта никому в машине не понадобится), и через них подключил модуль к питанию. А так пока ни один провод машины не поврежден, и можно все модули вернуть назад.


Итак:
Модуль отслеживает положение ключа зажигания, и через реле дает питание на радио.
Модуль отслеживает положения переключателя передач, и выдает сигнал заднего хода на радио, радио выключает звук (как было в штатной системе).
Одновременно пищит через центральный динамик около монитора навигации, с разными интервалами в зависимости от расстояния (штатная система использовала динамик в правой задней двери, что было как-то странно). Кнопкой парктроника в блоке климата можно отключить звук и включить обратно.
При падении освещенности ниже определенного уровня (взял пасмурный день) модуль выдает сигнал на радио, и радио включает подсветку.
Модуль отслеживает 12 кнопок управления на руле, и эмулирует резистивные кнопки для радио. В радио можно запрограммировать их на любое поведение.

Настроил регулировать громкость, переключать треки, принимать, отклонять звонки, Back, Home в Androide, запуск Waze, включение видео с регистратора, переключение на радио.

Есть еще длинное нажатие кнопки, я было настроил по долгому нажатию Volume down - выключить звук. Но китайцы подвели, радио не запоминают эту настройку после выключения.

Заодно поменял прикуриватель на USB зарядку.
Изображение

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 13:02
oliv2
Красавчег! МОЛОДЦА :good: +к карме :wink:
Ношу эту мысль уже полгода, все руки боятся :D
Буду тоже кулибина изображать........если что могу за консультацией обратиться?
p.s. спасибо за отличный отчет!!!!

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 13:07
stark
Молодец! :good: Информация очень востребованная.

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 13:12
olegel
oliv2 писал(а):Буду тоже кулибина изображать........если что могу за консультацией обратиться?

Конечно!

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 13:23
oliv2
С подсветкой кнопок, тоже смотрю поработал! Что вставил, led или как? Если светодиоды то какие ставил, где брал расскажи если не затруднит. И про USB розетки.... тянут ли быструю зарядку и сколько "А" выдают?
заранее спасибо!

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 14:06
olegel
Зарядка обычная, такая https://www.aliexpress.com/item/Dual-USB-Port-Car-Charger-5V-3-1A-Cigarette-Lighter-Socket-Plug-LED-Light-Waterproof-Motorcycle/32860524400.html
Оказалась чуть великовата, пришлось рассверлить чуть. Лучше многоступенчатым сверлом делать.
Токи не тестировал, у меня беспроводная зарядка к ней подключена, ей 1А достаточно.

Да, лампочки заменил на диоды. Правда слишком зеленое все стало. Зато блок климата теперь холодный, его лампы некисло грели.
Брал такие https://www.aliexpress.com/snapshot/0.html?spm=a2g0s.9042647.6.2.4d0b4c4dUVAe1y&orderId=88303080481228&productId=32830594555
Изображение
Заказывал T4.2 Green для климата и T3 Green для кнопок.

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 15:11
oliv2
olegel писал(а):Да, лампочки заменил на диоды. Правда слишком зеленое все стало. Зато блок климата теперь холодный, его лампы некисло грели.
Брал такие https://www.aliexpress.com/snapshot/0.html?spm=a2g0s.9042647.6.2.4d0b4c4dUVAe1y&orderId=88303080481228&productId=32830594555
Изображение
Заказывал T4.2 Green для климата и T3 Green для кнопок.


Спасибо!
По диодам - я так понимаю, ошибок нет, как с потолочными?

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 16:01
olegel
oliv2 писал(а):По диодам - я так понимаю, ошибок нет, как с потолочными?


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

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 17:57
olegel
Проверил. 3.3кОм резистор говорит машине, что с лампочкой все в порядке. Ошибок нет.
Лечится так(по клику большая картинка):
Изображение

Re: Кнопки для Тыквы или адaптер CAN шины для Volvo XC90

СообщениеДобавлено: 13.01.2019, 20:16
oliv2
olegel писал(а):Проверил. 3.3кОм резистор говорит машине, что с лампочкой все в порядке. Ошибок нет.
Лечится так(по клику большая картинка):
Изображение

СПАСИБО!!!! С передом все ок. Попробую так с задними и багажником. Диоды "can bus" я покупал на алишке. Но ошибка и остаточное свечение присутствуют.