Всем привет. Я владелец десятилетней японской машины, в которой меня устраивало все, кроме штатной аудиосистемы – в ней не было Bluetooth. Есть три способа решить эту проблему: 1. Купите вилку прикуривателя и не выпендривайтесь.
Минусы:
- Качество звука
- Нет управления
- Также нет вывода названия песни.
2. Купить на разборке стандартный блок Bluetooth + более новую головку за большие деньги.
Минусы:
- Проблемы с совместимостью разных блоков
- Монофонический аудиовыход (на некоторых устройствах)
- Цена с заменой головы и проводки практически равна нестандартной магнитоле.
- Никакой поддержки кроме латиницы нет
- Стандартное оборудование
Минусы:
- Нужно время
- Денег было потрачено больше, чем если бы вы выбрали первые два варианта вместе
- Удовлетворенность проделанной работой
- Поддержка звука без потерь
- Поддержка кириллицы, хоть и транслитерации, т.к.
экран не умеет.
Стандартная аудиосистема, состоящая из головного устройства и панели, выглядит вот так:
Он имеет режим AUX, который позволяет подключать внешние устройства для прослушивания музыки.
Почему бы не использовать это в своих целях? Сделайте так, чтобы определенная комбинация клавиш запускала режим AUX, но при этом все данные на экране попадали полностью под наш контроль, а звук в AUX перенаправлялся с модуля Bluetooth.
К счастью, в свободном доступе можно найти мануал со схемой, из которого становится понятно, что интерфейсом между головой и панелью является обычный UART.
С помощью логического анализатора определялась скорость и протокол связи между головой и панелью.
(Частота обновления экрана 10 кадров в секунду, частота сенсорного сканирования 30 мс, 14400E2).
Вместе с Ардуино получился результат в виде Hello World.
Следующим шагом стал выбор микроконтроллера для реализации.
Выбор пал на STM32F103, который имеет на борту целых 3 UART и имеет поддержку CAN шины (почему бы и ее не добавить).
Изначально я купил CSR8645 в качестве модуля Bluetooth, первая версия шла в комплекте, но он не мог отображать названия треков (или я этого не до конца понимал), а также не имел управления цифровой шиной, поэтому я купил модуль под названием Bluegiga напрямую из США WT32i, в котором было все необходимое и даже больше — поддержка цифрового аудиовыхода и кодека AptX. За пару месяцев, когда было свободное время, был разработан прототип.
Были изучены все ужасы HAL и прелести SPL. UART и DMA в микроконтроллере были тщательно изучены, так как нужно было все это связать воедино, чтобы работало без тормозов и глюков.
Немного фото процесса
Потом все это добро было интегрировано в штатную магнитолу, но так, чтобы ее можно было без проблем прошить и снять для модификации.
В качестве интерфейса использовался кабель HDMI и разъем от мертвого ноутбука.
Фото на момент отладки, лучше не смотреть
Вид изнутри:
Внешний вид:
Дело было в старом блоке питания от ноутбука.
Пришло время сконструировать для этой цели печатную плату, а также вынести все это из головы, чтобы в любой момент можно было убрать этот колхоз и не нарушать работу машины.
В итоге вот такая красота:
Я первый раз в жизни вношу оплату, можно критиковать, но в меру.
Вечер пайки и всё заработало с первого раза, чему я был очень удивлён.
Далее был добавлен CAN-трансивер TJA1051, с помощью которого можно получать кучу интересных и не очень данных с CAN-шины автомобиля.
Я пока использую только вывод расхода топлива в час, потому что.
Стандартная букмекерская контора не имеет этой функции.
Видео о том, как это работает:
Как вы могли заметить, русский текст отображается в транслитерации, что более-менее грамотно.
Например, письмо час заменяется на ch и т. д., чего невозможно добиться стандартными средствами.
Ну и кроме того поддержка lossless audio. Для тех, кто жаждет подробностей.
Используются все 3 UART. Один для дисплея, один для клавиш и один для модуля Bluetooth. Аудиопоток коммутируется аналоговым мультиплексором.
CAN также используется из STM32. Есть внешний ЦАП PCM5102, звук очень хороший.
Соединяется между головой и проводкой автомобиля.
Разъемы были обнаружены при разборке.
Это оказалось дороже, чем покупка стандартной Bluetooth-системы, но удовольствия от разработки принесло гораздо больше.
В планах сделать возможность настройки функций кастомизации автомобиля (владельцы Митсубиси 2008+ поймут о чем идет речь), протокол уже есть, все проверено, осталось реализовать его в прошивке.
Теги: #Программирование микроконтроллеров #Звук #stm32 #Автомобильные гаджеты #Bluetooth #встраиваемые #автомобильная электроника
-
Где Я Могу Получить Эмулятор Unix?
19 Oct, 24 -
Несколько Ошибок
19 Oct, 24 -
Как Я Писал Браузерный 3D-Футбол. Часть 1
19 Oct, 24 -
Нет, Дорогая, Уходить Точно Рано!
19 Oct, 24 -
12 Сетевых Истин (Вольный Перевод Rfc1925)
19 Oct, 24