Здравствуйте уважаемые!

Была у меня штатная магнитола, и 8 кнопок на руле(включая хандзфришные), да сплыла.

Купил Pioneer AVH x5800BT, да пригорюнился. Кнопки-то не пашут совсем. Поставил я интернеты на уши, нашлись варианты:
  • acv swi-x1 (и аналоги Incar итп)- программируемый от ИК-пульта ДУ адаптер, хорошее решение, но нет возможности назначить все кнопки хандзфри, ибо просто их нет на пульте.
  • КРУ omega - насторожило, что производитель сказал, что надо обязательно при заказе уточнять что нужна версия под кнопки хандзфри. Непонимаю зачем две прошивки держать. Плюс долго ждать пересылки.
  • Хаки перепайкой резисторов, например тут. Для тех у кого три провода идет с руля, перепайка позволяет задействовать все кнопки. У меня всё по двум проводам (Pajero 4), не катит.


В результате принял решение сделать универсальный конвертер-эмулятор кнопок на Arduino.

Вот результат:
Нажмите на изображение для увеличения
Название: P_20170313_102653_1_p.jpg
Просмотров: 0
Размер:	146.2 Кб
ID:	1115670
Нажмите на изображение для увеличения
Название: P_20170313_102746_1_p.jpg
Просмотров: 0
Размер:	154.8 Кб
ID:	1115672
Нажмите на изображение для увеличения
Название: P_20170313_102638_1_p.jpg
Просмотров: 0
Размер:	122.2 Кб
ID:	1115674

Все кнопки руля работают, даже в двух режимах - короткое и длинное нажатие.

За основу взята схема управления магнитолами пионер по проводам, доработано мной в результате экспериментов:
Нажмите на изображение для увеличения
Название: scematic.jpg
Просмотров: 0
Размер:	54.8 Кб
ID:	1115676

Принцип прост - пионер ожидает замыкания резисторами между концом и общим проводом мини-джека.
Доп функции (указано красным) активируются при одновременном замыкании "кольца" (средний контакт) на общий.

Компоненты:
1) Плата ардуино мини про 5в - 120руб
Нажмите на изображение для увеличения
Название: ProMini%20ATmega328P-600x600.jpg
Просмотров: 0
Размер:	42.5 Кб
ID:	1115678
2) Плата ЦАП/АЦП на чипе PCF8591 - 146р
Нажмите на изображение для увеличения
Название: AD-DA%20на%20PCF8591-600x600.jpg
Просмотров: 0
Размер:	45.3 Кб
ID:	1115680
3) резистор 2Ком
4) стабилизатор на 8вольт (подойдет крен5, 7808 итп) (можно и без него, надеясь что более 16в в бортсети не будет)
5) программа (скетч)
6) разъем мини-джек
7) паяльник 25Вт и прямые руки, или знакомый электрик

Сигнал от кнопок с руля подается на вход A0 ардуины, вход подвешен к +5В через резюк 2ком.
Программа по измеренным на входе напряжениям находит в таблице подстановки желаемую команду (в виде значения конкретного напряжения в вольтах) и скармливает её ЦАПу по I2S
Плата ЦАП выдает на выходе AOUT ожидаемые пионером напряжения.

Повторяемость схемы стопроцентная, регулировок не требует.
Требуется измерить омметром и ввести в прогу матрицу резисторов кнопок на руле, как у меня:
Нажмите на изображение для увеличения
Название: P_20170316_111353_p.jpg
Просмотров: 0
Размер:	105.9 Кб
ID:	1115696
соответственно:
const int inButtons[]={
//resistance kOmhs. To detect volts, you need to consider your pullup resistor and Vcc. I use 1KOhm & 3.3V
// R= V * R0 / (Vcc-V)
280, // MODE
750, // CH UP
1300, // CH DOWN
2120, // VOL UP
3120, // VOL DOWN
4590, // SPEECH
6250, // ON HOOK
8630 // OFF HOOK
};
и потом заполнить таблицу кнопок в соответствия в проге, например у меня такая:
// +10 means that we must add ground to jack ring `
const int maps[8][2]=
{
{ 0, 1 }, // MODE > source/off .off
{ 3,3+10 }, // CH UP > next .fldr up
{ 4,4+10 }, // CH DN > prev .fldr dn
{ 5, 5 }, //VOL UP > vol up .
{ 6, 6 }, //VOL DN > vol dn .att-mute
{ 7+10,0+10}, //SPEECH > voice ctrl .ph.tel menu
//{ 0+10,-1}, //SPEECH > .ph.tel
{ 1+10,1+10 }, //ON HOOk> ph.answer .
{ 2+10,7 } //OFFHOOK> ph.hangup .esc
};
На исследования, проектирование, реализацию и настройку убил несколько дней... Не уверен, что оно того стоило...
Поэтому с удовольствием отвечу на вопросы, дабы результат размножился ...


Полезные темы: