Когда я решил поменять магнитолу в своей машине, я встал перед выбором — потерять штатное управление звуком кнопками на руле, или же покупать специальный (достаточно дорогой) адаптер.
Потом я подумал, почему бы не сделать такой адаптер самому?
Обзор для тех, кто дружит с паяльником.
Сначала суть проблемы.
Во многих машинах есть штатно установленное управление магнитолой на руле. Кнопки эти работают по принципу резистивной клавиатуры, что позволяет передавать сигнал всего по двум проводам.
Например, нажимаем кнопку увеличения громкости — в цепи появляется сопротивление 130 Ом.
Нажимаем уменьшение громкости — появляется сопротивление 240 Ом и т.п.
На многих современных магнитолах также есть возможность подключения проводного пульта дистанционного управления. Но проблема в том, что стандарты у всех производителей автомобилей и автомагнитол разные. Например, у магнитол Pioneer для увеличения громкости надо «подать» сопротивление 16 кОм.
Поэтому, между рулем и магнитолой нужен специальный адаптер, который будет конвертировать значения сопротивлений в понятные магнитоле.
Когда я поискал такой адаптер для своей машины, оказалось, что он стоит больше 50$. Учитывая, что сама магнитола мне досталась за какие-то смешные 30-35$, я решил попробовать сколхозить адаптер самостоятельно на ардуине. Готовой схемы на тот момент в интернетете не было, пришлось изобретать самому.
Заранее хочу извиниться за возможные неточности и ошибки — я плохо разбираюсь в электронике. Всю информацию по крупицам собирал из гугля. :)
В своем проекте использовал следующие компоненты:
1. Автомобиль Suzuki Swift
2. Автомагнитола Pioneer MVH-X165UI (купил в оффлайне)
3. Arduino Nano, можно и Mini (купил на ebay за 2.5$)
4. MCP4131, цифровой потенциометр на 100k (купил в оффлайне за 1$, почему-то на ebay они
достаточно дорогие)
5. Резистор 10k
6. Макетная плата
7. Понижающий конвертер (
step down buck converter за 1.5$), чтобы из 12V сделать 5V
Принцип простой — на входе измеряем сопротивление с кнопок на руле. Если сопротивление соответствует нажатию какой-то кнопки, то на выходе на потенциометре выставляем соответствующее сопротивление, требуемое магнитоле.
Первым делом я раздобыл сервисное руководство на свою машину, где указаны значения сопротивлений для всех кнопок. Впрочем, их можно просто измерить мультиметром.
Также в сети обнаружилась следующая схема проводного пульта для магнитолы Pioneer (используется 3.5mm штеккер):
Кнопок Preset Up/Down у меня на руле нет, поэтому я использовал только два контакта на штеккере — Tip и Sleeve.
Т.к. диапазон требуемых магнитоле сопротивлений от 1К до 62К, то я купил микросхему MCP4131 — это цифровой потенциометр на 100К с 129 шагами регулировки. 129 шагов достаточно, т.к. нам не нужна супер точность, магнитола понимает сопротивления с разбросом где-то в 10-20%.
Ну и не обязательно покупать именно MCP4131, думаю, подойдет любой другой digipot с подобными характеристиками.
В интернете есть инструкции по использованию цифрового потенциометра с ардуиной, мне понравилось
вот это видео, очень подробно и доступно.
Я не буду объяснять азы работы с ардуиной, есть куча других специализированных ресурсов, где гораздо лучше все описано.
Схема подключения получилась такая:
Сопротивление измеряется на пине A5 с помощью делителя напряжения с резистором 10К.
Потенциометр подключен по следующей схеме:
4, 7 — GND
8 — +5V
1 — arduino pin 4 (можно выбрать другой)
2 — arduino pin 13
3 — arduino pin 11
6 — к магнитоле, контакт «Tip» на штеккере
Скетч под спойлером
#include <SPI.h>
// библиотека SPI должна быть в стандартном софте, ну или её можно скачать.
// Коды имеющихся на руле кнопок
const int VOL_UP=1;
const int VOL_DN=2;
const int PREV_TR=3;
const int NEXT_TR=4;
const int MODE=5;
const int MUTE=6;
int csPin=4; // CS на цифровом потенциометре
int wheelPin=A5; // аналоговый пин, на котором мы считываем сопротивление нажатой на руле кнопки
int i=0;
int prevButton=0;
void setup() {
pinMode(csPin, OUTPUT);
delay(50);
SPI.begin();
delay(50);
SPI.transfer(0); // команда
SPI.transfer(0); // значение
pinMode(wheelPin, INPUT);
delay(100);
//Serial.begin(9600);
}
int getR() { // Эта функция читает сопротивление с кнопок на руле и возвращает код нажатой кнопки, либо 0
// читаем сопротивление (на самом деле напряжение, конечно) на аналоговом пине
int r=analogRead(wheelPin);
//Serial.println®;
// Ищем, какая кнопка соответствует этому сопротивлению.
// Данные значения сопротивлений подходят для Suzuki Swift, для других автомобилей числа будут другие.
if (r>=9 && r<=15) return(VOL_UP);
if (r>=18 && r<=26) return(VOL_DN);
if (r>=120 && r<=156) return(PREV_TR);
if (r>=60 && r<=80) return(NEXT_TR);
if (r>=33 && r<=47) return(MODE);
if (r>=2 && r<=6) return(MUTE);
// если ни одна из кнопок не нажата, возвращаем 0
return (0);
}
// ОСНОВНОЙ ЦИКЛ
void loop() {
int currButton=getR(); // заносим в переменную currButton код нажатой кнопки
if (currButton!=prevButton) { // если значение поменялось с прошлого раза
delay(10);
currButton=getR(); // ждем 10ms и читаем еще раз, чтобы исключить "дребезг" кнопки
if (currButton!=prevButton) { // если код кнопки точно поменялся с прошлого раза
//Serial.println(currButton);
prevButton=currButton; // сохраняем новое значение в переменную prevButton
// Выставляем сопротивление на потенциометре, тем самым посылаем команду на магнитолу.
// Значения сопротивлений даны для Pioneer, для магнитол других марок числа будут другие.
SPI.transfer(0);
switch(currButton) {
case VOL_UP: SPI.transfer(21); break; // 16k
case VOL_DN: SPI.transfer(31); break; // 24k
case PREV_TR: SPI.transfer(14); break; // 11k
case NEXT_TR: SPI.transfer(10); break; // 8k
case MODE: SPI.transfer(2); break; // 1.6k
case MUTE: SPI.transfer(4); break; // 3k
default: SPI.transfer(0); break; // 0k
}
}
}
delay(5);
}
Фото готовой платы.
С обратной стороны фотографий не сохранилось, т.к. это было год назад и я не планировал писать обзор. Ну и там ничего интересного — куча перемычек и плохая пайка :)
Ардуина может работать от 12V, но я решил поставить понижающий до 5V конвертор. Во-первых, я от него же запитал видеорегистратор, тем самым освободил гнездо прикуривателя. Во-вторых, я читал, что напряжение в автомобильной сети грязное и нестабильное, может плавать на несколько вольт, как вниз, так и вверх. Конвертер такие скачки выдержит, а ардуина может и погореть. Чтобы еще «почистить» питание я добавил несколько защитных элементов — диод, стабилитрон, конденсатор. Схему подсмотрел
вот тут. Насчет её необходимости у меня некоторые сомнения, но решил — пусть будет.
На этом все.
Устройство нормально работает в машине уже около года.
А я сэкономил некоторую сумму денег и получил ценный опыт.
Особый почет и уважение у нас занимают DIY (сделай сам, сделано руками) — обзоры, где автор описывает свои знания и доработки по использованию заказанного товара.
Причем, мануалы курить приучен, ибо линуксовод.
Ну и к тому же, где-то в комментариях я встречал, как кто-то жаловался, что не может поменять в машине штатную кассетную (!) магнитолу, т.к. привык к управлению на руле. Это и сподвигло на написание этого поста.
А недовольным я рекомендую просто проходить мимо того, что Вам не интересно. Лично я игнорирую около 80% обзоров. Из неинтересных тем захожу только в волкодружественные лосины поржать по традиции ))). И Вам рекомендую относиться с юмором ко всему, чего не можете понять. Чаще улыбайтесь ☺
Соберитесь уже что ли все вместе и устройте между собой драку стенка на стенку)))
Проблема распространенная, человек видит решение, делает покупку товара, применяет его — и вопрос решен.
Если слаб в электронике, на профессиональный сайт с подобной мелочью не сунешься, «гуру» заклюют, да и просто не в курсе, что так сделать можно.
Подушка? Сними клемму с аккума и снимай. Подушки стреляют только от замыкания сигнального провода. В противном случае если ты и так ее боишься, то как ты тогда сидишь за рулем?
А вообще есть прекрасная поговорка: «Зубов бояться — в рот не давать» )
Ну и так я могу запросто воткнуть на место старую штатную магнитолу, скажем, при продаже.
Там именно 2 информационных провода, метод передачи сигнала — дифференциальный (похож на RS485)
По одному информационному проводу работает например K-Line
Так достигается очень хорошая защита от помех и наводок. Так же работает и витая пара в езернете, и RS485, и LVDS-сигналы в разных применениях (к примеру в интерфейса SATA), и даже USB :)
Запросто можно мою схему переделать под них.
автору + конечно, отличное творчество
на доля истины есть — чуть больше бы предмету обзора — вот например цифровой потенциометр интересная вещь — думаю обзор бы не вызвал подобных вопросов
За рукоблудство(в хорошем смысле) +
Кстати, дополнительные команды получаются нажатием нескольких кнопок (общее сопротивление уменьшается), поэтому если снопок на дистанционке меньше, чем нужно, то можно выбрать, которые нужны очень, а которые будут через дублирование выполняться.
Ну и, кроме того, я не придумал, какие еще мне кнопки нужны. Точнее мне очень не хватает одной кнопки — Паузы, но она в интерфейсе проводного пульта не предусмотрена вообще.
А у меня в качестве ГУ — телефон. Поэтому сделал почти то же самое, но на конце провода — WiFi. Теперь бы еще в качестве WiFi использовать ESP8266 — и будет просто пестня!
Отвечу за автора — резисторы добавить нельзя — кнопки на руле в Сузуки (да и во многих других) устроены по типу пульта дистанционки.
плата и резинки.
А схемка цепляется непосредственно возле штекера магнитолки и не требует особых танцев с бубном…
контакты управляют цепью которая проходит через улитку на рулевой колонке, там же и висит аирбэг итп.
да и кнопки дороже… жалко испортить, захочешь обратно поменять — че перепаивать?
а тут выходит универсальная схема, легко подстраиваемая под любую «голову».
«мастер берет деньги не за перемычку, а за то что знает куда ее поставить» ©
Edit: А, вон ниже в комментариях написали.
Городил такой огород по той же причине — не хотел лезть в руль и перепаивать сопротивления.
Результатом очень доволен, т.к. повесил еще и длинные нажатия на клавиши на руле на другие действия.
Самая первая схема (впоследствии переделал на оптроны):
Вживую выглядело это так, часть компонентов под платой ардуины:
1. на многих машинах надо снимать руль, это геморрой
2. Машина может быть гарантийной
3. Я поставил себе штатную магнитолу от более новой модели, там другие сопротивления кнопок. И задействовано 3 провода, кнопки управления громкой связью разнесены, а в рулевой улитке два провода, свободных нет, нужно менять улитку (купить от более новой модели) стоит 30000 рублей на мою машину!
4. Кнопок штатных может нехватить и придётся делать комбинации
Автор большой молодец! И удовольствие получил в конструировании и сделал гибкую систему и вопрос решил не стандартно, жму руку!
Ещё и наработками воспользуюсь, с позволения автора.
2. Установка магнитолы — уже слет гарантии на многое что, если не на всю электрику, а если машина с can, то вообще вся электрика с ЭБУ и прочим, и тогда слетит гарантия и на все остальные узлы.
2.1. Установка сей приблуды в случае обнаружения на сервисе так же ведет к потери гарантии.
3. зачем 3 провода для управления магнитолой? Вообще по факту надо один. — сигнальный. Земля — корпус машины. У тебя скорее всего что-то еще на руле было, не только магнитола. Но даже если и она, то можно было переделать, найти общий, его использовать как сигнальный, а землю на корпус. Хотя могу предположить что мерили они «плюсом». Я так не делаю в своих поделках, плюс всегда на резюке (от кз), а земля дальше на резистрах от большего (общая, что бы ацп не гнал ересть) и дальше на убывание. Хотя инженеры они такие… могут тебе завести по 3-м проводам и землю и плюс и сигнальный, когда все можно было реализовать это в магнитоле.
4. У меня 5 кнопок. ±, следующий трек, источник, mute. Немного не хватает предыдущий трек, но и то не существенно. На навесить на руль 100500 кнопок… вон бумеры убрали все с центральной консоли, зато под руль столько переключателей навешали, ужасть.
Я перепял уже не один десяток рулей. Кому-то просто замена на штатной плате. Кому травили дабы в случае чего он быстро воткнул родную, а эту потом продал кому-то, а то и тому кому свою машину продал. Ни где не возникало трудностей. Даже простые многопроводные переделывали на резистивный, просто делали уже перед самой магнитолой.
немного вклинюсь в чужой разговор… у меня на руле тоже 3 провода идет под кнопки
Расскажу — есть разные производители, кто-то измеряет по земле (так правильно), кто-то по + (так можно, но не есть хорошо). От проблем с этим пускают общий отдельный. Но у тебя уже конкретика, поэтому можно и проверить. У знакомого с завода шел только один ремокон и проводов 2. Он захотел второй ремокон, но что бы он просто расширял возможности первого. Посему просто перепаяли на обоих резистры и второй подключили к первому паралельно. Потом приехал другой знакомый на такой же машине. Он захотел хендсфри, но у него с завода тоже только 2 проводка. Т.к. контактная группа на 3 провода стоит не малых денег, то убедившись что управление идет по земле, перекинули один проводок на втоорй ремокон, а землю на корпус (Вон у тебя общий — 17-й).
На субаре надо снимать руль, чтобы снять кнопки. В 2011г появились новые головы с громкой связью, там на руле появился доп пульт с 3 кнопками. Там один общий провод идет в магнитолу и 2 раздельных в разные разъемы, это не земля, это конкретно отдельные провода (так помниться мне), завтра на снятой голове прозвонб. При установке магнитолы/сигнализации в сервисе, с гарантии не снимают, при наличии нужных бумаг. Верней снимают, тех, кто закон плохо знает. Перепаивать кнопки руля, это двойной гемор, даже тройной )) Поедешь по гарантии к дилеру, надо возвращать все, а это опять снимать руль, продать машину, снимешь новую голову, ставишь обратно старую, опять переделывать кнопки. Мне например не хочется покупать улитку и доппульт и на комбинации текущих кнопок с цифровым потенциометром+ардуино я это сделаю легко, надо только подумать как запилить третий провод без второго потенциометра.
А на выходе на магнитолу по-прежнему будет один потенциометр (если магнитоле достаточно 2 провода).
Заявить, что «гарантия на дворники не действует потому что Вы самостоятельно установили магнитолу» никто не вправе без заключения экспертизы, которое показывает что дворники действительно вышли из строя из-за магнитолы или из-за каких-либо действий в процессе ее установки :)
1. крики сразу в сервисе.
2. Хождение там же по начальникам.
3. Заявление в суд.
4. Независимый эксперт
5. Слушанье
и потом не факт что тебе при ремонте не насрут в коробку.
Я тебе даже более скажу, есть лохи который отдают деньги за машину, подписывают договор без печатей, потом ждут пол года, а потом оказывается что их машина пришла, но вот ПТС будет только через пол года, хочешь раньше — 50к и завтра будет ПТС. Челавек включает заднюю, а договор то подписан только одной стороной… покупашкой… Так что без лоха и жизнь плоха.
Нет, ну если лишних денег много, то можно и не настаивать на своих правах, оставаться лохом, без которого жизнь плоха :) Только людей в заблуждение не вводите своими утверждениями.
И идея с оптронами тоже неплоха: из плюсов — полная отвязка по напряжению (на цифровом резисторе напряжение не может выходить за пределы напряжения питания), из минусов — некая громоздкость стада оптронов…
Ну а раз пошла такая пьянка, вот еще идея в тему: два резистора и конденсатор. Первый резистор — измерительный, стоит последовательно, с двух концов подключен на два входа АЦП в ардуино. Знаем его номинал, знаем падение напряжения — следовательно знаем ток.
Второй резистор и конденсатор образуют интегрирующую RC-цепочку. Конденсатор «подразряжаем» при помощи аппаратного ШИМ в ардуино, а заряжается он через измерительный резистор от управляемой цепи.
Итого: зная номинал измерительного резистора и напряжения с его концов, знаем ток через него. Зная напряжение на цепи управления (первый вход АЦП) и ток — знаем «эквивалентное» сопротивление, которым «прикидывается» в настоящий момент наша схема. Меняя скважность ШИМ, изменяем ток, а следовательно и эквивалентное сопротивление цепи.
В принципе, если эту конструкцию заранее откалибровать, то может хватить и одного входа АЦП.
Вот такая вот идея :)
А с оптронами всё ок, не особо громоздкие. Поставил линейку из семи ну совсем очень китайских 817. Отлично работает пока. Плюс есть варианты с несколькими оптронами в одном корпусе. Вход магнитолы подтянут к +3.3 вольта, удобно оптронами на землю замыкать через сопротивления.
В итоге: берем Attiny85 в корпусе SO8, тут же на муське находим как программировать ее из среды Ардуино, два резистора, конденсатор, ну и стабилизатор питания на 5 В — учитывая мизерный ток, в корпусе SOT23 подойдет, ну и конденсатор по питанию. Вся конструкция уместится, при желании, прямо в корпусе разъема получившегося переходного шнурка :)
я в свое время делал пару таких адаптеров, но собираль на тиньке. там по деталям себестоимость вообще нулевая получается.
Китайская магнитола, которую я поставил вместо родной, ловит по CAN и рулевые кнопки и показания парктроника.
У меня китайская бубнитола CAN слушать отказалась. Пришлось кидать проводок напрямую от руля
Вот такая: aliexpress.com/item/can-bus-docoder-for-Hyundai-IX35/32255850596.html
А вот если всё же влезть в руль и перепаять, то с ардуиной напару можно вообще сделать клавишу «shift» и, соответственно, нажатия других через шифт :))
Я думал про комбинации кнопок и длинные нажатия, но в этой модели магнитолы как-то очень мало команд у проводного пульта. Получается, что особо и нечего вешать на эти комбинации.
DIY в массы )
Например, там для некоторых пионеров висят answer call, reject call, вызов меню набора номера, другой поиск радиостанций (есть как минимум 3 варианта: переход на следующий пресет, поиск вверх-вниз перебирая частоты автоматом, шаговое изменение частоты на 50-100 килогерц). Так же там находится перемотка внутри песни.
Мне вот единственное, чего не хватает — кнопки pause…
Я себе делал аналогичную вещь но для магнитолы у которой не было такого входа. Подключил к ИК приемнику магнитолы, а там команд значительно больше. Схема на Tiny13 + пара резисторов и конденсаторов. Кнопки теперь имеют по 2 функции каждая — короткое нажатие и длительное.
И все же, я в своем случае пытаюсь использовать данную схему для Toyota, где используется чуть другая схема. Не могли бы вы мне помочь? Я б отправил диаграмы вам. Спасибо.
Поставил оптореле на выходе цифрового потенциометра, запитал его от 7 го пина, немного дополнил скетч. Стал тестировать, подключаю тестер — все нормально, выдаёт нужные сопротивления. Подключаю магнитолу — работать не хочет, какие то кнопки работают, и то не всегда, а при нажатии других магнитола выключалась. Надеюсь что решил данную проблему отпаяв 7й выход цифрового потенциометра от земли, т.е. Общей земли сейчас у меня нет, на управление магнитолой идут два провода с 6го и 7го выхода потенциометра через оптореле. Подключил пока дома — все работает, надеюсь и в машине проблем не появится. Мне непонятно как у автора все работало при такой схеме?