Управление смартфоном кнопками на руле

Вариант создания простого обучаемого контроллера резистивных кнопок на руле для управления смартфоном на Android-е посредством однокнопочной проводной гарнитуры.

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

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

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

На схеме блок AUDIO STEERING WHEEL SWITCH представляет собой блок кнопок управления мультимедиа на руле. Информация о нажатии кнопок передается по двум каналам и одному общему проводу через спиральный шлейф на руле SPIRAL CABLE в разъем М64 блока A/C AND AV SWITCH. Т.к. гораздо удобнее подключиться к проводке в стационарном блоке, чем на руле, то ищем расположение этого блока. На самом деле A/C AND AV SWITCH это не совсем «блок» в привычном понимании, это плата за кнопками на лицевой панели управляющая режимами климат-контроля и мультимедиа:

Судя по схеме, в разъеме этой платы нам интересны контакты №12, 13, 14, из которых №14 – сигнальная земля. Также понадобятся контакты №1 (постоянное питание платы) и №2 (включения питания), чтобы запитать устройство полностью возле платы A/C AND AV SWITCH и не тянуть лишние провода через весь салон.

Отбросив все лишнее получаем нужную нам схему управления контроллером:

Т.к. отключение кнопок от головной системы мультимедиа не планируется (для сохранения функции управления штатным CD-чейнджером и радио), то получается, что во время воспроизведения музыки с смартфона незадействованными остаются только кнопки SEEK SWICH (UP, DOWN). Они переключают треки при воспроизведении CD и радиостанции в памяти ГУ. Как раз то, что мне и нужно – именно этой, простой, функции не хватает при прослушивании музыки с смартфона. Приходится каждый раз, на ходу, хватать его в руки, переводить взгляд на экран и целится пальцем в нужную картинку.

Далее мультиметром проверяем соответствие данных букваря (datasheet) действительности. Судя по таблице из букваря, сопротивления нажатых кнопок MODE и POWER равно 0Ом, сопротивление кнопок SEEK DOWN и SEEK UP равно 165Ом, а VOLUME DOWN и VOLUME UP – 652Ом. Меряем мультиметром сопротивление нажатых кнопок SEEK DOWN и SEEK UP и получаем 175-180Ом, что соответствует datasheet-у. Кнопка MODE замыкает линию STRG SW A (UP) (контакт №12) на сигнальную землю, остальные нам не нужны.

Когда не нажата ни одна из кнопок напряжение на контактах №12 и №13 относительно сигнальной земли (конт. №14) равно 5В – это, в принципе, логично, но проверить стоило дабы, не городить лишние линии согласования уровней. Также выясняется, что сигнальная земля и «масса» автомобиля соединены на плате. Это значит, что нет необходимости в еще одном проводе. Итого остается подключить только 5 проводов. Минус питания для устройства будем брать с контакта №14, чтобы схема обесточивалась при отключении разъема М64 от платы A/C AND AV SWITCH и через нее не протекали «паразитные» токи.

Замерив напряжение на делителе кнопок получаем 0В для кнопок MODE и POWER, ~0.75В для кнопок SEEK DOWN и SEEK UP и ~2В для VOLUME DOWN и VOLUME UP. Ради интереса можно прикинуть сопротивление резистора верхнего плеча делителя, у меня получилось около 930Ом.

Для подключения всего этого нужен МК с необходимым кол-вом выводов и с 2-мя каналами АЦП – вполне подходит недорогой и популярный ATtiny13. Сигналам, выдаваемым контроллером на кнопку гарнитуры, можно присвоить любое действие. Мне достаточно минимального набора функций: короткое нажатие кнопки SEEK SWICH UP – следующий трек; короткое нажатие кнопки SEEK SWICH DOWN – предыдущий трек. При желании можно сымитировать двойные, тройные, долгие и комбинированные виды нажатия.

Дополнительно сделана опция паузы воспроизведения при пропадании напряжения на контакте №2 блока A/C AND AV SWITCH, т.е. когда автомобиль выключен (ACC OFF) и нет необходимости петь песни тишине, контроллер имитирует долгое нажатие и переходит в режим пониженного энергопотребления. При включении энергопитания автомобиля (ACC ON) воспроизведение начинается с того же места. Пауза нажимается также при нажатии кнопки MODE SWITCH. Все эти функции зависят от настроек смартфона и могут быль любыми. Повторю: задача устройства распознать нажатую на руле кнопку и сымитировать нажатие кнопки гарнитуры.

А вот тут я столкнулся с неразрешимой проблемой! Мой Китайский Андроид ни в какую не хочет работать с кнопкой проводной гарнитуры! В наушники поет, гарнитура определяется и ничего — никаких реакций на нажатие кнопки. Пробовал спецпрограммы и встроенные средства медиаплееров, результата нет — я в тупике. Посоветовавшись на форумах пришел к выводу, что все же придется покупать нормальный новый смартфон, т.к. давно уже все к этому ведет. На этом попытка проводного подключения к смартфону окончена и я переключился на новый проект по разработке Bluetooth-гарнитуры с контроллером кнопок на руле. Т.к. программная часть проекта почти готова, то можно скачать файлы первой части «как есть» для самостоятельного изучения и доработки под свои нужды.