Хабрахабр

Расширяем функционал штатной аудиосистемы

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

Купить затычку в прикуриватель и не выпендриваться.
Минусы:
1.

  • Качество звука
  • Управление отсутствует
  • Вывод названия песен также отсутствует

Плюсов нет.

Купить на разборках за немалые деньги штатный блок Bluetooth + голову поновее.
Минусы:
2.

  • Проблемы с совместимостью разных блоков
  • Монофонический вывод звука (на некоторых блоках)
  • Цена с заменой головы и проводки практически равна нештатной магнитоле
  • Кроме латиницы поддержки нет

Плюсы:

  • Штатное оборудование

Сделать что-либо самому, но так, чтобы не урезать имеющийся функционал.
Минусы:
3.

  • Нужно время
  • Денег было потрачено больше, чем если выбрать первые два варианта вместе

Плюсы:

  • Удовлетворение от проделанной работы
  • Поддержка lossless аудио
  • Поддержка кириллицы, хоть и транслитом, т.к. экран не умеет.

Как вы поняли из названия, я выбрал путь номер 3.

Исходные данные:
Штатная аудиосистема, которая состоит из головного устройства и панели, которая выглядит так:
image

Почему бы не воспользоваться им в своих целях? В ней есть режим AUX, который позволяет подключать внешние устройства для прослушивания музыки. Сделать так, чтобы определенной комбинацией клавиш запускался режим AUX, но в то же время все данные на экране полностью переходили под наше управление и звук в AUX перенаправлялся из Bluetooth модуля.
К счастью, в открытом доступе можно найти мануал со схемой, из которой становится ясно, что интерфейсом между головой и панелью является обычный UART.

image

(Частота обновления экрана 10 кадров в секунду, частота сканирования нажатий 30 мс, 14400E2). С помощью логического анализатора была определена скорость и протокол обмена между головой и панелью. Совместно с ардуинкой был получен результат в виде Hello World.

image

Выбор пал на STM32F103, на борту которого целых 3 UART и есть поддержка CAN шины (почему бы не добавить и ее). Следующим шагом был этап выбора микроконтроллера для реализации. В течение пары месяцев, когда было свободное время велась разработка прототипа. В качестве Bluetooth модуля изначально был куплен CSR8645, первая версия была с ним, но он не мог выводить названия треков (или я не разобрался до конца), а также не имел управления по цифровой шине, поэтому был куплен прямо from USA модуль под названием Bluegiga WT32i, в котором было все, что нужно и даже больше — поддержка вывода цифрового звука и поддержка lossless кодека AptX. Досконально изучены UART и DMA в микроконтроллере, т.к. Были познаны все ужасы HAL и прелести SPL. было необходимо связать все это вместе так, чтобы оно работало без тормозов и сбоев.

Немного фотографий процесса

image
image

В качестве интерфейса был задействован кабель HDMI и разъем из мертвого ноутбука. Затем все это добро было внедрено в головное устройство, но так, чтобы можно было без проблем прошить и снять для доработки.

Фото на момент отладки, лучше не смотреть

Вид изнутри:
image

Вид снаружи:
image
Корпусом выступил старый блок питания от ноутбука.

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

image

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

image

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

image

Видео, как оно работает:

Например буква ч заменяется на ch и т.п., чего штатными средствами достичь никак бы не удалось. Как вы могли заметить, русский текст выводится транслитом, более-менее умным. Ну и в добавок поддержка lossless аудио.

Задействованы все 3 UART. Тем, кто жаждет подробностей. Звуковой поток переключается аналоговым мультиплексором. Один на дисплей, один на клавиши и один на Bluetooth модуль. Стоит внешний ЦАП PCM5102, звук очень недурный. CAN используется тоже из STM32. Разъемы были найдены на разборке. Подключается между головой и проводкой автомобиля.

Вышло дороже, чем купить штатную систему Bluetooth, но удовольствия от разработки оно принесло намного больше.

В планах сделать возможность настраивать функции кастомизации автомобиля (владельцы Mitsubishi 2008+ поймут о чем речь), протокол уже есть, все проверено, осталось внедрить в прошивку.

Код можно стянуть тут: github.com/kolyandex/DY-6MW7U59-3_WT32i_Bluetooth

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»