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

    Всем привет.

    Иногда возникает необходимость управлять каким-либо внешним устройством в автомобиле, к примеру видео регистратором или лебедкой. В этом случае, обычно, устанавливаются дополнительные кнопки. Но иногда хочется сделать скрытую установку, что б интерьер автомобиля остался неизменным. Этим сегодня и займемся, в качестве автомобиля будет 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 шины автомобиля. Управление не ограничивается только кнопками на руле. К примеру, можно задать включение устройства по скорости автомобиля, по открытию окна или двери, по запуску двигателя, по оборотам двигателя, по температуре двигателя и т.д. Можно сделать блокировку дверей при наборе определенной скорости (если завод изготовитель не предусмотрел такой возможности), включение камеры при открытии окна и многие другие варианты.

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

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 23

      0

      Хотел на MB использовать кнопку голосового управления на руле для перехода в спорт-режим и обратно. В нескольких СТО, которые специализируются на программировании новых функций и изменении базового ПО мне сказали, что это невозможно. Как вы считаете, на Мерседесе можно это реализовать?

        0
        Переход в спорт режим как осуществляется в стандартной машине? На кнопки голосового управления у одного из мерседесов вешал внешнюю нагрузку — откидные рамки. Пришлось кан фильтры приделывать (что б каждый раз при активации магнитола не включала голосового ассистента). Для спорт режима, обычно, надо рычаг кпп перевести в другое положение. Вот тут будут проблемы. Если бы это была какая то кнопка, то тут уже можно было бы подумать.
          0
          У меня кнопка голосового управления ничего не активирует — ГУ простое и не поддерживает управление голосом. А переход в спорт-режим — кнопка на консоли. То есть подумать можно и не всё потеряно? Вы в Москве?
            0
            да, Москва. Если кнопка, то ничего особо сложного в этом не вижу. Надо живую машину потрогать, что бы понять, все ли есть для этого. Пишите fokin91@gmail.com, или вк vk.com/fokin_alexey или инста www.instagram.com/fokin91_smart
        0
        Вот тут интересный опыт управления Bluetooth плеером штатными кнопками на руле Opel Astra.
        А вот тут ТГ-сообщество CAN-хакеров семейства авто Opel (Astra, Corsa, Zafira и тд). Там есть и более интересные проекты — с выводом своей инфы на дисплей, изменением логики поведения авто, автозапуском и так далее.
          0
          спасибо, ценные ссылки
            0
            Не получается на ТГ канал зайти. А можете поделиться названием канала, ну или как там его в десктопном Телеграм найти?
              0
              Создатель канала не захотел наплыва пользователей в канал и изменил ссылку(
              Не буду из-за этого давать прямую ссылку, но вот его оригинальная статья на драйве, там внизу есть правильная ссылка на канал: www.drive2.ru/l/485801071864709696
            0
            считываещь код одной кнопки, передаешь код другой, любым контроллером с can
              –2
              ну попробуй включить по кан шине аварийку на поло седане.
                +1
                а что если включить не аварийку, а поворотники и те и те?
                  0
                  скорее всего, включение любого поворотника выключит противоположный (если бы я был программистом мозгов авто, то сделал бы именно так).
                    0

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


                      can_data[][DLC_531] {
                        .ID = 0x531,
                        .Size = 8,
                        .Data = {0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF},
                        .Ready = false
                      }
                            CAN_data[DLC_531].Data[0] = (State.Fog << 4) | (State.Highbeam << 2);
                            CAN_data[DLC_531].Data[2] = (State.TiltLeft << 1) | State.TiltRight;

                    Или это уже под Jetta переписан код, я не уверен насчет номера DLC, но суть та же

                      0
                      Спасибо, проверю. С диагностики у меня получалось только включать или левую сторону или правую, вместе включать мне оборудование не давало. На рапиде уже можно было.
                      На днях попробую, спасибо
                        0

                        Напишите о результатах, а то у меня только приборки, остальных частей VAG авто нет.image

                          0
                          531 ID у меня в потоке нет. Если считать поток во время включения аварийки и проиграть его в авто, то приборка моргает, машина — нет.
                    0
                    с диагностики команды были только на включение или левых поворотников, либо правых. Вместе включать не дает.
                0
                Теперь разберемся с тем, как управлять кнопкой «аварийки». К сожалению, Polo Sedan не может управлять «аварийкой» по CAN шине, поэтому придется управлять ей по аналогу. Для этого придется протянуть провод от бело-синего провода из разъема кнопки «аварийки».

                Цитата из поста. Нет такой возможности на Polo.
                  0

                  Может она на lin

                    0

                    А скорее на другом can, надо схему смотреть

                      0
                      я подключен к 3м канам во всех 3х искал управление — не нашел. Старлайн, пандора и остальные тоже управляют аварийкой по аналогу.
                  0
                  я думаю кнопка на HS CAN(скорость разумеется другая, не как на диагностике), ведь аварийка должна включаться при резком торможении, а на приборку уже по диагностике.Хотя кто их буржуев знает, может и отдельно в мозги завели.
                    0
                    Дмитрий из Тольятти с вами)))

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое