CAN-bus Arduino адаптер руля Citroen C4B7. Подключаем 2din к шине CAN. Часть 1.


Електроніка
2 вересня 2021
zouonrails
власник Citroen C4 II

та

Mazda 3 BL Чернівці

Значит делать было нечего и решил я заменить китайское незнамо что хорошей 2din магнитолой (JVC KW-M560BT). За время использования Teyes я понял что это невообразимой глубины бездна багов, лагов и пользоваться этой отрыжкой it-индустрии я больше не могу. Тем более основное что мне надо от этой штуки, как оказалось, это музыка и навигация через CarPlay.

Как я подключил 2din, наверное, в другой раз опишу и работает она идеально — музыка льется как мед для ушей, а CarPlay работает лучше самого телефона. Но сейчас вкратце и по верхам поделюсь как сделать так что бы кнопки руля которые работают по can-шине доходили до магнитолы в виде "резистивных сигналов".

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

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

Например если кнопка громкости не нажата, то в определенных пакетах данных каждые 100 миллисекунд приходит значение 0, а если нажата то те же 100 миллисекунд приходит значение 64.

Больше инфы и деталей по CAN Citroen C4 тут. Там же достаточно информации что бы собрать свой CanHacker для исследования сообщений на шине.

Теперь задача состоит в том что бы отловить эти пакеты данных, проверить что в них, перевести это в понятный для магнитолы язык и отправить ей. Магнитолы обычно имеют несколько проводов для резистивного управления с руля — GND, KEY1, KEY2. Меняя сопротивление между KEY1/KEY2 и GND мы говорим магнитоле что нажата определенная кнопка.

Для тестирования на столе пришлось собрать 12 физических кнопок что бы имитировать машину и еще одно can устройство которое бы имитировало активность в кан-шине.

Выглядит это конечно всё колхозно и не очень, но работает стабильно )
Выглядит это конечно всё колхозно и не очень, но работает стабильно )


Какие материалы нужны:

1️⃣ Arduino Nano / ATMEGA 328p — мозг этого всего устройства.

2️⃣ mcp2515 tja1050 модуль — модуль которые переводит в понятный для ардуино язык сигналы canbus.

3️⃣ ULN2803APG — микросхема которая в этом устройстве работает как реле, виртуально нажимая резистивные кнопки, то есть посылает сигналы в магнитолу что нажата некая кнопка на руле.

4️⃣ Набор резисторов (220, 470, 680… и другие, но кажется это должно подбираться индивидуально под магнитолу, каждые резистор — другая виртуальная кнопка)

5️⃣ Паяльник, припой, макетки, куча проводов и все остальное что бы превратить квартиру в гараж и мастерскую )

Использовал такой модуль, брал несколько штук, работает как часики.
Использовал такой модуль, брал несколько штук, работает как часики.


Схему я рисовал впервые, поэтому вышло как вышло, по крайней мере пару таких устройств по ней я собрал и всё работает ) Использовал юзерфрендли прогу Fritzing, интуитивно понятная, легко разобраться.

Схема
Схема


Схема нарисована для голого чипа Atmega328p, но по ней легко понять как заменить микросхему на готовую Arduino Nano. Предполагается что питание каким-то модулем конвертируется из 12 в 5, модулей разных огромная куча.

Суть работы устройства: mcp2515 переводит сигналы кан-шины в понятный для atmega328p/arduino язык, на atmega328p/arduino мы пишем код который отлавливает нужные нам сигналы и передает их в ULN2803APG.

ULN2803APG — это такое себе, если сильно грубо сказать — реле, на одну ногу мы подаем +5в, а на другой открывается канал к которому и подключен нужный резистор и KEY1/KEY2 магнитолы. Дальше магнитола определяет сопротивление и считает что нажата кнопка руля.

Всего в ULN2803APG есть 8 транзисторных пар, но кнопок магнитола может захотеть и 10 и 12 (как в моем случае) с этим проблем нет — просто открываем сразу несколько транзисторных пар и получаем новое сопротивление.

К машине это подключается через quadlock разъем. Он продается в любых авто- и радио- магазинах, через него и питание и CAN-шина.

Болванка
Болванка

Распиновка
Распиновка

Публікація


Текста получилось очень много, поэтому продолжу в другой раз, если дойдут руки ))

Citroen C4 II