Адаптер для резистивных кнопок своими руками

Адаптер для резистивных кнопок своими руками

Выкладываю свою версию адаптера рулевых кнопок.
На данный момент устройство работает — спасибо Дмитрию (Demon083)!
Я не претендую на гениальность.
Развивать данный адаптер дальше не буду, так как это временная мера.
Адаптер изготавливался под определенный руль и определенную магнитолу, но это не исключает возможность переделки и использования для других комплектов руль-магнитола.

Итак, поехали!
После установки руля с медиа-кнопками возник естественный вопрос: «А как его «подружить» с магнитолой?» Конечно, существует великое множество всевозможных адаптеров на любой вкус и кошелёк, но это не для нас.
Поскольку моя магнитола (Kwnwood KDC-6051U) понимает только протокол NEC, была использована имеющаяся Arduino Nano, немножко резисторов, стабилизатор 7812, пара кондеров и кусок монтажной платы. Всё это хозяйство было собрано на монтажке.

Для снятия кодов был использован самый обычный ИК-фотодиод, купленный с известного всем сайта, и родной пульт от магнитолы.
В скетче использовал специально заточенную под это дело библиотеку IRremote.h. На сколько я понял описание этой библиотеки, выход только D3. Его можно даже не прописывать, всё и так работает.

Достоинства:
Дёшево, быстро.

Недостатки:
Подходит только для магнитол с импульсным управлением. Настроить можно только на месте и только с ноутбуком, Нужна модифицированная библиотека: IRremote.zip.

#include
IRsend irsend ;
const int read1 = A0 ; //левый блок кнопок
const int read2 = A1 ; //правый блок кнопок
float val1 = 0 ;
float val2 = 0 ;
float lastval1 = 0 ;
float lastval2 = 0 ;
int pause1 = 180 ; //Задержка после нажатия кнопок
int pause2 = 200 ; //Задержка после нажатия кнопrи SRC
// Коды сняты с пульта
//[Влево] 9D6250AF
//[Вправо] 9D62D02F
//[Громкость +] 9D6228D7
//[Громкость –] 9D62A857
//[ + ] 9D62B04F
//[ – ] 9D6230CF
//[SRC] 9D62C837

//Расположение кнопок на блоках и значения
//Громкость + правый 843
//Громкость — правый 894
//Следующий правый 305
//Предыдущий правый 540
//Источник правый 696
//Громковсть + левый 540
//Громкость — левый 843
//+ левый 305
//- левый 696

void setup ()
<
pinMode ( read1 , INPUT );
pinMode ( read2 , INPUT );
Serial . begin ( 9600 );
>
void loop ()
<
val1 = analogRead ( read1 );
val2 = analogRead ( read2 );
/////////////////// Обработка правого блока кнопок //////////////////////
if ( val1 > 10 && val1 1000 ) //фильтр от помех
<
if ( val1 != lastval1 ) //если значение изменилось
// Serial.print(«Right «);
// Serial.println(val1);
<
delay ( pause1 ); //задержку подбирал на свой вкус
if ( val1 > 794 && val1 860 ) //Громкость +
<
Serial . println ( » R. Vol +» ); //Контроль
irsend . sendNEC ( 0x9D6228D7 , 32 );
lastval1 = val1 ;
>
if ( val1 > 877 && val1 910 ) //Громкость —
<
Serial . println ( » R. Vol -» ); //Контроль
irsend . sendNEC ( 0x9D62A857 , 32 );
lastval1 = val1 ;
>
if ( val1 > 644 && val1 745 ) //Выбор источника
<
Serial . println ( » R. SRC» ); //Контроль
irsend . sendNEC ( 0x9D62C837 , 32 );
lastval1 = val1 ;
delay ( pause2 ); //дополительная задержка
>
if ( val1 > 225 && val1 383 ) //Вправо
<
Serial . println ( » R. >>» ); //Контроль
irsend . sendNEC ( 0x9D62D02F , 32 );
lastval1 = val1 ;
>
if ( val1 > 462 && val1 592 ) //Влево
<
Serial . println ( » R. ); //Контроль
irsend . sendNEC ( 0x9D6250AF , 32 );
lastval1 = val1 ;
>
>
>
/////////////////// Обработка левого блока кнопок //////////////////////
if ( val2 > 10 && val2 1000 ) //фильтр от помех
<
if ( val2 != lastval2 ) //если значение изменилось
<
// Serial.print(«Left «);
// Serial.println(val2);
delay ( pause1 ); //задержку подбирал на свой вкус
if ( val2 > 462 && val2 644 ) //Громкость +
<
Serial . println ( » L. Vol +» ); //Контроль
irsend . sendNEC ( 0x9D6228D7 , 32 );
lastval2 = val2 ;
>
if ( val2 > 794 && val2 910 ) //Громкость —
<
Serial . println ( » L. Vol -» ); //Контроль
irsend . sendNEC ( 0x9D62A857 , 32 );
lastval2 = val2 ;
>
>
if ( val2 > 225 && val2 383 ) //Вверх
<
Serial . println ( » L. +» ); //Контроль
irsend . sendNEC ( 0x9D62B04F , 32 );
lastval2 = val2 ;
>
if ( val2 > 644 && val2 745 ) //Вниз
<
Serial . println ( » L. -» ); //Контроль
irsend . sendNEC ( 0x9D6230CF , 32 );
lastval2 = val2 ;
>
>
>

const int analogPin1 = A0 ; // Для левого
const int analogPin2 = A1 ; // Для правого
float val1 = 0 ;
float val2 = 0 ;

void setup ()
<
pinMode ( analogPin1 , INPUT );
Serial . begin ( 9600 );
>

void loop ()
<
val1 = analogRead ( analogPin1 );
val2 = analogRead ( analogPin2 );
delay ( 200 );
if ( val1 1000 )
<
Serial .print( «Lefr » );
Serial . println ( val1 );
>
if ( val2 1000 )
<
Serial .print( «Right » );
Serial . println ( val2 );
>
>

int RECV_PIN = 10 ;

IRrecv irrecv ( RECV_PIN );

void setup ()
<
Serial . begin ( 9600 );
irrecv . enableIRIn (); // Start the receiver
>

// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) <
// decode_results *results = (decode_results *)v
void dump ( decode_results * results ) <
int count = results -> rawlen ;
if ( results -> decode_type == UNKNOWN ) <
Serial .print( «Unknown encoding: » );
>
else if ( results -> decode_type == NEC ) <
Serial .print( «Decoded NEC: » );
>
else if ( results -> decode_type == SONY ) <
Serial .print( «Decoded SONY: » );
>
else if ( results -> decode_type == RC5 ) <
Serial .print( «Decoded RC5: » );
>
else if ( results -> decode_type == RC6 ) <
Serial .print( «Decoded RC6: » );
>
else if ( results -> decode_type == PANASONIC ) <
Serial .print( «Decoded PANASONIC — Address: » );
Serial .print( results -> panasonicAddress , HEX );
Serial .print( » Value: » );
>
else if ( results -> decode_type == JVC ) <
Serial .print( «Decoded JVC: » );
>
Serial .print( results -> value , HEX );
Serial .print( » (» );
Serial .print( results -> bits , DEC );
Serial . println ( » bits)» );
Serial .print( «Raw (» );
Serial .print( count , DEC );
Serial .print( «): » );

Читайте также:  Как сделать ножницы для кукол своими руками

for ( int i = 0 ; i count ; i ++) <
if (( i % 2 ) == 1 ) <
Serial .print( results -> rawbuf [ i ]* USECPERTICK , DEC );
>
else <
Serial .print(-(int) results -> rawbuf [ i ]* USECPERTICK , DEC );
>
Serial .print( » » );
>
Serial . println ( «» );
>

При изготовлении своего адаптера рулевых кнопок мне стало интересно, почему полученные с пульта у библиотеки IRemote.h (протокол NEC) данные отличаются? Стал копать данную тему и вот что я накопал. Для примера рассмотрим адрес/команду кнопки [Vol+] стандартного пульта автомагнитолы Kenwood. В Ардуине это выглядит так: 9D6228D7, а вот в официальном описании так: адрес:46B9 команда:14. (HEX)
Нужна была программа, которая умеет конвертировать между собой, шестнадцатеричные, десятичные и двоичные числа и первая, которая пришла мне на ум была калькулятор из винды в расширенном виде и обратил внимание на двоичный код и пришло прозрение!
Возьмем наш код из ардуины 9D6228D7, где 9D62-является адресов, а 28D7-командой.
Теперь представим 9D62 в двоичном виде и получим 1101100101100010. А теперь самое интересное. Надо прочитать с конца данный двоичный код 0100011010011011 и преобразовать обратно в HEX. Получаем 469B. Это уже знакомые нам цифры, не так ли?
Теперь команда. С ней немножко сложнее. Её надо разбить на 2 части 28 и D7. Получаем
28 00101000
D7 11010111
Как видим, одно значение инверсно другому. Читаем 28 наоборот и получаем 14.

Теперь обратное преобразование
Возьмем адрес:46B9 и команду:15 [Vol-] и переведем это на язык ардуины.
46B9 -> 0100 0110 1011 1001 ->1001 1101 0110 0010 -> 9D62
15-> 0001 0101 -> 1010 1000 -> A8 (читаем наоборот)

1010 1000
0101 0111 -> 57 (инвертируем)
Складываем всё в кучу и получаем 9D62A857.
Надеюсь кому-нибудь пригодится.

Источник

Резистивное управление магнитолой pioneer

Джойстик управления магнитолой подрулевой – весьма полезное устройство, которое по мере возможности должно быть в каждом автомобиле. В чем заключается его суть, а также как выбрать подходящую модель и установить ее – ниже.

Предназначение пульта на руль

Пульт на руль для автомагнитолы потому высоко ценится, что водитель во время езды не отвлекается от дороги. Поэтому риск попасть в аварию значительно снижается. Теперь водителю не нужно крутить головой по сторонам – кнопки управления магнитолой находятся на руле. Таким образом можно быстро переключить песню или другие опции, которые включает в себя девайс.

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

Параметры выбора

Выбирать из моделей различных автомагнитол – та еще задача. Особенно учитывая то, что у каждой из них есть как минусы, так и плюсы. Учитывать также нужно цену, ведь эта «игрушка» стоит немало денег.
При покупке девайса стоит присмотреться к интересной модели Varta V-DV05D. Учитывая то, что стандарт магнитолы 1 DIN, она позволяет водителя авто и пассажиров получить наслаждение от качественного звука и удобного управления, ведь пульт устанавливается на руль. Вариант удобен тем, что воспроизводит все популярные форматы, в том числе и диски, а также имеет аудиокодек AC3. Выходная мощность данного устройства 4х50 Вт.

Автомагнитола Pioneer DEH-1600UB имеет доступную цену и стандарт 1 DIN. В отличие от предыдущей модели, здесь есть возможность считывать информацию с USB-носителя, смартфона или плеера, благодаря разъемам AUX/USB. У модели монохромный экран, на который поступает информация о композиции. Значительным плюсом является то, что автомагнитола имеет оригинальные эффекты звука, которые превращают музыку в единое целое в DJ-сете.

Pioneer DEH-1600UB

Учитывая то, что данная модель имеет графический эквалайзер, выставить нужное качество звука не составит труда. Еще одним плюсом является возможность подключить проводной пульт для автомагнитолы. Для этого имеется специальный разъем. Модель Pioneer DEH-Р3600МР позволяет вмонтировать подрулевой переключатель магнитолы, что довольно удобно, потому что исключает потерю универсального пульта ДО.

Alpine CDE-180R. Этот девайс, как и предыдущий, имеет стандарт 1 DIN. Поддерживает функции подключения iPhone и iPad. Кроме этого, имеет возможность воспроизводить музыкальные композиции с дисков и других носителей. Вариант этой магнитолы имеет, как и предыдущие, съемную панель, что убережет девайс от лишнего внимания грабителей. В комплекте есть пульт на руль для автомагнитолы (автор видео Avtozvuk.ua).

Читайте также:  Греющий кабель для скважины монтаж своими руками

Автомагнитола JVC KD-R90BTEY имеет более высокую цену, по сравнению с предыдущими моделями. Управлять этим девайсом очень удобно, учитывая еще тот факт, что за безопасную езду отвечает Bluetooth модуль, который позволяет активировать функцию «езда без рук». Данный вариант поддерживает множество популярных форматов, поддержку CD и MP3 дисков. Как и в предыдущих гаджетах есть усилитель и графический эквалайзер.

Alpine CDE-W235BT имеет стандарт 2 DIN. Автомагнитола дороже, чем предыдущие модели. Она имеет 2-стройчный дисплей, несколько вариантов подсветки кнопок, которую можно настроить в соответствии с приборной панелью. Подключение к девайсу осуществляется посредством USB, а также через аудиовыход, через который можно подключить MP3-плеер, iPad и смартфон. В системе находится цифровой радиотюнер с возможностью автопоиска станций, и 3-х полосной эквалайзер. В комплекте для автомагнитолы находится универсальный пульт на руль.

Phantom DV-100 – хороший вариант. Гаджет получил стандарт 2 DIN, имеет среднюю цену, а также хорошую систему навигации. Девайс в состоянии поддерживать разные музыкальные и видео форматы, в том числе и формат JPEG, а также проигрывать CD, DVD и MP3 диски. Поддерживает различные цветовые форматы, а также форматы FM, SW и RDS. Помимо прочего, данная магнитола идет на операционной системе Windows.
Все перечисленные выше варианты могут быть установлены собственноручно на свой автомобиль.

Инструкция по установке джойстика на руль своими руками

  1. Снять кожух рулевого колеса.
  2. Сделать по выштамповке на внутренней стороне рулевой колонки небольшое отверстие для того, чтобы установить джойстик.
  3. Теперь нужно подготовить проводку от разъема головного устройства до джойстика.
  4. Разъем примотать изолирующей лентой к контактам рядом с местом монтажа детали.
  5. Перекинуть провода через отверстие и собрать конструкцию кожуха колонки руля.
  6. Джойстик встает на свое место и фиксируется защелками.

Установка подрулевого джойстика

Разумеется, после подключения нужно настроить гаджет. Это несложное действие, и оно описывается в инструкции, которая идет в комплекте с покупкой.

Цена вопроса

Фотографии, которые показывают ниже разные виды магнитол, также дадут представление о цене девайса.

Видео «Обзор универсального пульта»

Больше интересной информации можно узнать в ролике от канала Shopping Online.

Благодарим за Ваш выбор продукции ACV.
Эксклюзивный представитель на территории РФ и СНГ – компания MVA-Group, г.Санкт-Петербург.

оптовый отдел: (812) 408-72-25
розничный отдел: (812) 331-30-31
эл. почта: russia@acv-auto.com

Универсальный программируемый адаптер управления штатными кнопками на руле

Удобный и универсальный интерфейс, позволяющий с кнопок руля управлять новым штатным головным устройством. Он не только сохраняет весь функционал резистивных кнопок, но и значительно его расширяет за счет возможности программирования на одну кнопку сразу двух функций. SWI-X1 отличается простотой подключения и настройки, к нему в комплекте прилагается подробная инструкция по установке. Даже при последующей смене магнитолы интерфейс останется столь же функциональным, нужно будет лишь переподключить провода.

Это компактный модуль в герметичном корпусе с проводами, которые присоединяются к колодке ШГУ согласно приведенным схемам.

Интерфейс имеет два варианта подключения. Первым является проводной способ черед разъем mini-jack, вторым – беспроводной через ИК-порт. Последний будет актуален при отсутствии у магнитолы mini-jack-разъема.

Сфера применения данного устройства довольно широка, оно подходит для авто любых марок, которые имеют на руле резистивные кнопки. Важно отметить, что CAN здесь не подходит. Если говорить о самых популярных марках, то это Toyota, Chevrolet, Hummer, Ford, Kia, Hyundai, Mitsubishi, SsangYoung, Nissan,Suzuki, Subaru, Mazda, Honda, но перечень моделей намного шире. С другой стороны, интерфейс совместим с разными головными устройствами, и производитель здесь не будет играть значения, главное требование – наличие пульта дистанционного управления.

Каждую кнопку можно запрограммировать на одну или две команды. Например, Scek+ будет соответствовать аналогичной кнопке на пульте дистанционного управления и Preset при длительном нажатии. Аналогично, кнопка Mute может не только приглушать звук, но и исполнять функцию Power.

Сброс интерфейса к начальному состоянию

Сброс настроек и переведение интерфейса к начальному состоянию выполняется поэтапно в три действия:
– Отключить интерфейс от питания +12В
– Соединить белый провод с массой
– Подать питание на интерфейс. Два светодиода на корпусе при этом моргнут, и устройство будет освобождено от функций, запрограммированных ранее. После этого интерфейс можно обучать заново.

Давайте разберемся как это реализовать по шагово.

Для начала нам необходимо приобрести плату Arduino Leonadro или ArduinoMicro, главное отличие этих контроллеров в том что на них установлены микропроцессоры Atmega32u4 которая имеет на борту встроенную поддержку USB-соединения, благодаря чему не требуется вспомогательный процессор. Это позволяет устройствам на Atmega32u4 появляться на подключенном планшете (с поддержкой OTG) или компьютере в качестве мыши или клавиатуры в дополнение к виртуальному (CDC) последовательному порту (COM). В общем подойдет любой arduino совместимый контроллер который построен на Atmega32u4.

Вторым шагом после того как приобрели необходимый вам контроллер необходимо скачать Arduino >подготовленную мной портативную версию ArduinoIDE вот ЗДЕСЬ, в этот архив уже добавлены все необходимые библиотеки и изменены файлы для работы в качестве медиа клавиатуры.

Далее в качестве примера я выбрал Arduino Leonardo и нам необходимо собрать схему как указано на картинке слева. Т.е установить подтягивающий резистор на 10кОм между ногами GND и A0, это нужно для того чтобы АЦП процессора не показывал паронормальные явления. Т.е нам нужные стабильные значения, в данном случае значение АЦП в терминале будет показывать 0 (где брать значения читайте ниже), если мы поставим Резистор между 5v и A0 значение АЦП в терминале будет показывать 1023. Благодаря встроенному 10-и битному АЦП мы и будем читать резистивные кнопки автомобиля.

Теперь после того как мы подключили подтягивающий резистор необходимо подключить резистивные кнопки, для этого берем 1 резистор на 1 кОм ещё один на 2 кОм, (будем собирать своего рода делитель напряжения) и 2 кнопки. По идее это всё можно и не собирать если у вас на руках резистивные кнопки автомобиля у них обычно 4 и более кнопок но всего 2 провода. Как можно видать на схеме справа у нас 2 кнопки но их количество можно увеличить скажем до 100 но будет управляться всего 2 мя проводами. 1 конец провода соединяем к порту A0 второй к порту 5v

Слева можете наблюдать схему как всё подключено, Подтягивающий резистор R1 на 10 кОм подключен между GND и A0, далее 2 резистора R2 и R3 выступают в качестве резистивной клавиатуры один конец этих сопротивлений соединен с портом A0 вторые концы к кнопкам S1 и S2 в свою очередь выводы кнопок подключены к порту 5v. Так что же произойдет если мы нажмем на кнопку кнопку S1? У нас через резистор R2 пойдёт напряжение на порт A0, но пойдёт туда не 5в а меньше так как на резисторе R2 произойдёт падение напряжения и на порту A0 окажеться примерно 4.5 если нажать на S2 то у него в цепи стоит R3, сопротивление которого больше чем у R1 значит падение на нем тоже будет больше и на порт A0 придет примерно 4.1в, эти разные значения мы и будем считывать.

И так мы всё подключили, теперь будем программировать, запустите arduino с распакованной папки arduino-1.0.5-r2 которую скачивали чуть выше. Теперь скопируйте код который под спойлером ниже и вставьте в ArduinoIDE. После того как загрузиться программа в ардуино, откройте Сервис -> Монитор порта. Если всё правильно подключено вы увидите что каждые пол секунды у вас появляется 0. Когда я нажимаю кнопку S1 у меня появляется значение

930 оно немного может меняться, когда нажимаю кнопку S2 появляется значение

853. Вот мы и считали резистивные кнопки, запишем их на какой нибудь листок S1 – 930, S2-853.

Ниже скетч для считывания значений кнопок.

После того как загрузите этот скетч в arduino, включите на компьютере плеер с музыкой и попробуйте нажать кнопку S1 по идее должно произойти переключение музыки на следующую при нажитии кнопки S2 на предыдущую. Для того чтобы добавить остальные команды просто добавляем ещё один пункт значений присваиваем им нужные значения и загружаем в ардуино, в общем то и всё. (если устройство работает на компьютере то будет и работать на планшете с OTG)

Далее поговорим как связать один рулевой пульт с планшетом и магнитолой:

Магнитолы фирмы Sony и Pioneer для управления используют определённые сопротивления (номиналы на картинках ниже), от фирм Alpain и Kewoor определённый протокол похожий на IR сигнал пульта от телевизора только он передается по проводу.

Для того чтобы управлять всем этим я разработал специальную плату для управления с рулевых кнопок. Схема устройства

Для управления магнитолами Pioneer и Sony используется микросхема MCP4131-104 это цифровой потенциометр на котором можно регулировать сопротивление от 0 кОм до 100 кОм в 129 шагов (этого достаточно чтоб управлять магнитолами) Для управления Alpain и Kenwood микросхему MCP4131-104 ставить не нужно а просто замкнуть перемычку 1 и 2 или если смотреть на ноги микросхемы MCP-4131-104 замкнуть CS(D5) с P0W(JACK 3.5 +), в этом случае выход D5 arduino напрямую пойдёт на вывод JACK3.5 + и в прошивке необходимо указать сигнальный вывод порт D5 для передачи кодов на магнитолы. В качестве источника питания используется микросхема MC34063 она имеет отличное кпд по сравнению с LM7805, но обвязка немного сложнее чтоб получить 5в. Напряжение на вывод +12V можно подавать от 6-до40. По идее питане можно и не разводить, а брать напрямую с USB устройства но в таком случае значение АЦП плавают в зависимости от напряжения на порту USB вследствии чего трудно настроить резистивные кнопки или вообще не возможно.

Далее под спойлерами представлены скетчи для управления магнитолами

Источник

Читайте также:  Как сделать своими руками коврик массаж
Оцените статью
Главная Каталог Адаптеры Управление на руле Универсальный программируемый адаптер управления штатными кнопками на руле