Недолго музыка играла. Как я и писал в заключении по всей этой истории — решил не мириться со всеми недостатками и осознал, что yatour это не то что мне нужно. Просто выносило мозг то, что каждый раз включая музыку, необходимо заходить в меню и включать рандомный режим воспроизведения музыки. Как позже было протестировано на CD-changer-е чёрной фурии это особенность штатной головы BMW.
Однажды наткнулся на очень интересный проект — imBMW и понял, что это то что мне нужно. Мое правило по жизни — "хочешь что-то сделать хорошо — сделай это сам". И тут я решил, что:
Как оказалось, таких неугомонных как я много. Очень помог цикл статей:
Сетевой интерфейс для BMW
Протокол управления CD-чейнджером
Светомузыка из BMW
На самом деле бОльшую роль сыграл Антон и его мега проект imBMW. Человек проделал просто титаническую работу и это всё выложил в общий доступ со всеми исходниками, макетами и подробнейшими инструкциями.
Конечно ради одного аудио-плеера я бы это всё не затеял, меня подкупила возможность создания кастомного бортового монитора. Всегда мечтал видеть на мониторе необходимую лично мне информацию, а не то что вздумалось разработчикам BMW. До этого дела с микроконтроллерами вообще не имел и даже не представлял что оно и с чем едят. Но как говорится "глаза боятся, а руки делают" решено было попробовать. Был заказан микроконтроллер FEZ Panda 3(это аля arduino только с возможность разработки на .NET Micro Framework). Для комуникации с BMW-шной шиной нужен K-bus/I-bus трансивер TH3122. Был создан небольшой прототип собраный на коленке и соединён обычными перемычками. Загрузил проект с github-а и через Visual Studio был залит в микроконтроллер. Далее разобрав багажник и подключив "+", "-" и "шину" программа таки заработала(пришлось конечно изрядно помучаться ибо в электронике я не особо силён, но путём множестенных попыток всё получилось).
Поначалу конечно не всё работало, но после некоторых модификаций в коде была реализована совместимость с E39. Стоит отдать должное автору, сразу видно что человек профессионал своего дела, код был написан очень грамотно, всё разложено по полочкам и всё понятно. Но не обошлось без ложки дёгтя, того что было нужно мне — реализованно не было. А имеено функциональности проигрывания аудио с флешки. Как можно понять со страницы разрабочика, он реализовал воспроизведение по bluetooth и упраление iPod-ом. Ну что ж, не беда, пришлось вносить свою лепту в сообщество Open Source.
Был приобретён MP3 decoder chip — VS1053, написан код для воспроизведения MP3 файлов с флешки, и интегрирован с уже реализованной функциональностью эмуляции CD-changer-а. Кому вдруг понадобится это всё — продолжаю данный проект в своём fork-е. Далее с помощью 3.5 джека от старых наушников и самодельной фишкой под магнилу, это всё было подключенно к радиоблоку по схеме:
После нажатия на кнопку mode появилось меню CD-chagner и музыка заиграла. Всё это конечно предварительно было протестировано дома и конечно же, чтоб всё это заработало было потрачено неприличное количество сил и времени. Поначалу даже руки опускались и появлялись мысли что я зря это всё затеял и что ничего не получится, но было потрачено уже столько сил и времени, что отступать было некуда. Да и мечта по формировнию своего собственного меню на бортмониторе двигала меня вперёд. Ну и конечно как в сказке всё закончилось хорошо! Музыка играет, бортовик показывает. На будущее большие планы, на данный момент можно выводить абсолюто любую информацию на монитор, реализовывать любого вида меню, подменю и т. д. Единственное только на это всё надо время, которого к сожалению на данный момент не так много. В ближашее время планирую пофиксить отображение "Voltage"-а. Т. к. вольтаж берут с блока GM, который в Е46 висит на шине K-bus вместе со всем остальным оборудованием, а в своей E39 я пока только врезан в шину I-bus. Ну а в глобальных планах — подключиться к шине D-bus и выводить диагностическую информацию от блока DDE, EGS и т. д.
И на последок, пользуясь случаем, хочу ещё раз поблагодарить Антона и выразить своё восхищение!
Update#1: по многочисленным просьбам выкладываю фотки самого железа, выглядит немного колхозно, но главное что работает :)
Update#2: Получения Voltage-а исправил, читается с блока навигации и отображается на БК