Управление внешним устройством в автомобиле с помощью кнопок на руле

Всем привет.

Иногда возникает необходимость управлять каким-либо внешним устройством в автомобиле, к примеру видео регистратором или лебедкой. В этом случае, обычно, устанавливаются дополнительные кнопки. Но иногда хочется сделать скрытую установку, что б интерьер автомобиля остался неизменным. Этим сегодня и займемся, в качестве автомобиля будет VW Polo Sedan с установленным блоком мониторинга Vega MTX, а в качестве нагрузки будет кнопка «аварийки». Сделаем так, что б при удержании кнопки «ok» на руле 3 раза моргала «аварийка».

Под катом большое количество картинок и видео.


Один раз меня попросили сделать кнопку «спасибо» на автомобиле Renault Kaptur 2012 года выпуска. Нажимая на эту кнопку автомобиль должен 3 раза моргнуть «аварийкой». У этого автомобиля был аналоговый подрулевой джойстик. Одну из кнопок на подрулевом джойстике подключил к реле времени, которое подавало импульс, длинной в 3 секунды на кнопку «аварийки». Позже владелец очень хорошо отзывался о новой функции своего автомобиля и я решил попробовать повторить это на своем Polo Sedan.

В отличии от Renault Kaptur у меня нет аналоговых кнопок, но сигнал со всех кнопок на руле можно найти в CAN шине. В качестве кнопки была выбрана кнопка «ok» на руле автомобиля. В моей комплектации эта кнопка, почти нигде не используется. Пока я нашел что с помощью него можно выставлять срабатывание «лимитера», когда приборка пищит при превышении заданной скорости. В любых других случаях нажатие на эту кнопку ничего не делает.

Можно было реализовать задуманное с помощью самодельной электроники, но у меня в автомобиле уже стоял блок телематики Vega MTX, потому было принято решение попробовать реализовать данный функционал с помощью него.

Нажатие этой кнопки можно найти в CAN шине, которая находится за магнитолой. Подробно поиск подобных датчиков я описывал в своей предыдущей статье про расшифровку CAN шины.

В нашем случае данные нашлись по адресу 5BF. При нажатии на кнопку «ok» в нулевом байте появляется цифра 40 в десятичном формате. Когда кнопки не нажаты, в нулевом байте будет 0. Надо будет сделать датчик, в котором будут отображаться эти изменения. В моем случае это датчик «Кнопки на руле».



Теперь разберемся с тем, как управлять кнопкой «аварийки». К сожалению, Polo Sedan не может управлять «аварийкой» по CAN шине, поэтому придется управлять ей по аналогу. Для этого придется протянуть провод от бело-синего провода из разъема кнопки «аварийки». Если на этот провод кратковременным импульсом подать «землю», то аварийка включается. Аналогичным образом она выключается.
Подавать «землю» будем с помощью цифрового выхода Vega MTX. Тут мы имеет 4 цифровых выхода, использовать будем третий выход (синий провод).



Теперь нужно задать алгоритмы, по которым будет работать кнопка.
Во-первых, я не хочу, что б аварийка включалась сразу по нажатию на кнопку «ok», я хочу, что б она включалась после секундного удержания кнопки. Делаю я это для защиты от случайного нажатия и для того, что б сохранить функционал данной кнопки.
Во-вторых, нужно выключать аварийку спустя 3 вспышки. 3 вспышки «аварийка» делает за 2 секунды.

Что бы ввести все эти алгоритмы надо перейти в настройки Vega MTX, далее перейти на вкладку «Сценарии». Тут можно задать условия, при которых совершаются какие-либо действия. Для реализации мне пришлось использовать 3 сценария.
Вообще сценарии не предназначены для таких операций, поэтому пришлось долго экспериментировать до получения нужного результата.



Первый сценарий служит для создания задержки в секунду, после нажатия на кнопку «ok». Он срабатывает, если в CAN датчике значение станет равно 40, а внешний цифровой выход 1 будет равен 0.



Тут поясню про внешние цифровые выходы. Если для задачи требуется больше, чем 4 цифровых выхода, то к Vega MTX можно подключить дополнительный внешний модуль, в котором будет 15 цифровых выходов и еще множество других входов и выходов. Так как у нас этого внешнего блока нет, то мы можем использовать эти выходы, как переменные, помещая туда 0 или 1 (включено или выключено). По умолчанию все выходы выключены. Внешний цифровой выход 1 будет переменной, которая показывает, что с момента нажатия на кнопку «ok» прошла одна секунда.

Наш сценарий следует читать так: сейчас нажата кнопка «ok», и нажата она менее одной секунды. Если эти условия совпадают, то выполняется действие: выключается внешний цифровой выход 1 на 1 секунду. Значит он переходи в состояние «выкл», но через секунду он перейдет в состояние «вкл».



Теперь перейдем ко второму сценарию.


В отличии от первого сценария он сработает при датчике «Кнопки на руле» равном 40 и при внешнем цифровом входе, равному 1. То есть, нажата кнопка «ok» и внешний цифровой выход 1 равен 1. А внешний цифровой выход станет 1 только спустя секунду после срабатывания первого сценария.
Теперь разберем, что произойдет после срабатывания второго сценария.



Тут дается импульс длинной 1 секунду на цифровой выход 3, к которому подключен вывод с кнопки «аварийки», тем самым мы ее включаем.
После этого нам надо сбросить 0 внешний цифровой выход 1. Поэтому мы включаем внешний цифровой выход 1 на 1 секунду. То есть спустя 1 секунду после срабатывания сценария внешний цифровой выход 1 станет 0.
Последним пунктом мы переводим на 2 секунды 15 в положение 0. Спустя 2 секунды после срабатывания скрипта внешний цифровой выход 15 станет 1. Внешний цифровой выход 15 используется в качестве переменной, что «аварийка» была включена с помощью кнопки на руле. 2 секунды – это то время, за которое машина моргнет «аварийкой» 3 раза.

Теперь последний сценарий, который должен послать импульс, на выключение «аварийки».



Этот сценарий сработает, когда внешний цифровой выход 15 станет равным 1, то есть через 2 секунды после срабатывания второго сценария.



После срабатывания третьего скрипта мы посылаем импульс на выключение «аварийки», и сбрасываем в ноль (выключено) внешний цифровой выход 15.
На этом работа со сценариями заканчивается, сохраняем результат в Vega MTX и проверяем работу устройства.

Таким образом можно сделать управление любым устройством с помощью CAN шины автомобиля. Управление не ограничивается только кнопками на руле. К примеру, можно задать включение устройства по скорости автомобиля, по открытию окна или двери, по запуску двигателя, по оборотам двигателя, по температуре двигателя и т.д. Можно сделать блокировку дверей при наборе определенной скорости (если завод изготовитель не предусмотрел такой возможности), включение камеры при открытии окна и многие другие варианты.

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

Источник: habr.ru