Всем привет! Наконец-то дошли руки доделать устройство) Резюмирую.
Lockpick своими руками или как включить режим VES (видеовход на магнитоле) и снять блокировку видео во время движения
Выражаю благодарности пользователям @Gosudar и @asix с chrysler-dodge.ru - без них ничего бы не получилось.
Часть 1. Видео-в-движении
Единственное найденное адекватное решение по разблокировке — это подмена сигнала с коробки передач по пути в магнитолу. Чтобы магнитола думала, что авто на парковке. То же делает и локпик. Так как магнитола управляется по шине, нужен can-фильтр между ней и авто.
Схему фильтра взял у @asix (ссылка), за что ему огромное спасибо. Для реализации нужны Arduino и два can шильда — все продается на алиэкспрессе и стоит копейки. Брал Arduino nano — все собрал в миниатюрном корпусе — его заказал там же.
Отмечу, что быстрее всего все сначала собрать и отладить «на столе» без пайки — погуглите «макетая плата для ардуино», «провода ардуино» (цена вопроса ~300 руб).
Как выяснилось, питание на магнитолу подается постоянно — даже при выключенном авто магнитола «слушает» команды с шины.
С питанием Устройства есть нюанс. Если подключать Устройство к желтому проводу питания магнитолы (Внимание! подключать можно только через DC-DC преобразователь, иначе можно сжечь Ардуино!) — оно будет включено 24х7, чего мне очень не хотелось. Если подключать Устройство к прикуривателю или зажиганию, то при выключении зажигания магнитолу отрубает от шины и она выключается, что очень, как оказалось, напрягает (штатно там установлена длительная задержка). Мне не хотелось нештатного поведения и я добавил в схему еще два реле на 5В. Если нужно, добавлю схему.
На серой фишке магнитолы вынул иголкой два пина - к ним примотал провода на вход Устройства. Выход Устройства припаял к пинам (купил на али фишку Крайслер) и засунул их обратно в фишку магнитолы.
Таким образом, Устройство встало вразрыв шины между авто и магнитолой. Когда Устройство выключено, шина подключена напрямую в магнитолу, а когда на Устройство подается питание, между авто и магнитолой вразрыв подлючается наш фильтр. Питание Устройства — от USB. Сама коробочка удобно легла в пространство под магнитолой. Второй конец USB шнурка вывел в верхнюю часть подлокотника — когда нужно разблокировать видео, просто втыкаем шнур в гнездо для iPod.
Теперь про софт. Как заливать программу (скетч в терминологии Ардуино), описывать здесь не буду — отмечу, что ничего сложного в этом нет. Немного модифицировал скетч от @asix, выкладываю здесь, пояснения в коде.
Смысл простой — отлавливаем и пересылаем в магнитолу все пакеты, но если встречаем сигнал с КПП, то меняем Drive и Neutral на Parking. Пробовал разные комбинации. Если, например, просто не пропускать этот сигнал, то не будет работать камера ЗВ, т.к. магнитола не узнает что включена задняя). Или, например, будет вечная камера ЗВ) В общем, поигрался, но все же лучшее решение у @asix — менять на Parking.
Часть 2. Режим VES
Здесь огромную помощь оказал в поиске и разборе кодов, а также предоставил лог сниффинга @Gosudar — без его реверс-инжиниринга Устройство бы не состоялось.
Подключение видеовхода к магнитоле. Схема ниже. Нам нужен белый разъем. Отмечу, что к нему также подключена камера ЗВ.
Припаял RCA (тюльпаны) к пинам. Неожиданно в фишку с али пины Крайслера от видеокамеры не влезли, поэтому пришлось, наоборот, засовывать все в Крайслеровскую фишку.
Удлинял видеокабелем, который пробросил в подлокотник. Туда же разместил источник видеосигнала — ТВ-стик, питается от прикуривателя. Обращаю внимание - чтобы не было помех лучше брать хороший коаксиальный межблочный провод — с дешевым были сильные помехи. Дополнительно хвост с тюльпаном замотал фольгой и соединил с C11 - Video Shield 2.
Программа. Чтобы активировать видеовход на магнитоле, достаточно пульнуть один раз в нее код 0x3A1. Он сообщит, что на шине присутствует устройство трансляции. Но есть нюанс) Режим VES при этом будет недоступен в меню магнитолы — включить его можно только последовательно нажимая подрулевую кнопку, переключающую с HDD на AUX. Все дело в компе авто — он сообщает магнитоле что опция VES не установлена.
Для того, чтобы VES загорелось в меню, нужно подменять код для 0x21F. Причем, как выяснилось, это нужно делать КАЖДЫЙ раз ДО включения магнитолы (она обнуляет настройку при выходе из сна). То есть либо включаете и оставляете Устройство в прикуривателе, либо пользуетесь только подрулевой кнопкой((
Вот такие дела. Всем спасибо, что дочитали
P.S. Работой очень доволен — в машине полноценный медиаплеер. Можно смотреть ТВ, слушать эфиры и лекции. Дальше можно будет настроить интернет-радио, но пока с этим еще не разбирался.
P.P.S. Буду благодарен если кто-нибудь сможет поделиться OBD адаптером для штатной активации VES в мозгах авто.