Озадачился установить bluetooth модуль вместо CDC (CD changer), чтобы была возможность управлять воспроизведением кнопками ГУ (главного устройства, в народе известного как магнитола).
С плюсов данного способа в сравнении с предыдущим способом с кассетами это:
— не нужно проводить манипуляций с самим ГУ;
— не слышно звука электродвигателя привода касет;
— управление воспроизведением кнопками ГУ.
В процессе поиска протоколов обмена данными между ГУ и CDC, нашел Github Tomáš Kováčik, в котором был готовый скетч, который нужно было слегка подправить для корректной работы и удачной компиляции. Большое спасибо автору за его реверс инжиниринг, который сделал возможным создать это устройство и позволило сэкономить уйму времени.
Собственно сам скетч и схема.
В архиве две папки. Один из скетчей на пониженной частоте тактового сигнала. Можно воспользоваться им, если ГУ отказалось работать на большей скорости передачи данных.
Управление модулем осуществляется по UART, на скорости 115200 бод, с помощью AT-команд. Следует отметить, что для управления достаточно одного провода, что очень удобно, и позволяет существенно упростить схему. Для согласования логических уровней (5 В arduino и 2.5 В XS3868) используется делитель напряжения на резисторах 2 кОм.
Назначение кнопок ГУ:
FF – следующий трек
FR – предыдущий трек
> – воспроизвести/пауза
1 – + громкость модуля *
4 – — громкость модуля *
* — иногда громкость модуля может самопроизвольно уменьшится, поэтому кнопки предназначены для регулирования уровня громкости именно в этих случаях. Уровень громкости модуля будет изменяться только в том случае, если отображаемый номер CD отличается от номера кнопки управления, поэтому для увеличения громкости нужно чередовать нажатие кнопки 1 и кнопки 2 (или 3, 5, 6, <).
Напряжение питания bluetooth модуля XS-3868, на микросхеме OVC3860, должно быть на уровне от 3.7 до 4.2 вольт (он спроектирован для питания от батареи). При пониженном напряжении модуль будет издавать предупреждающие звуки. Если напряжение будет выше 4.2 В, то модуль отключится.
Для питания модуля лучше использовать линейный стабилизатор напряжения. Фиксированных линейных стабилизаторов на напряжение в диапазоне от 3.7 до 4.2 В нет. Для решения данной задачи есть два варианта: использовать регулированный линейный стабилизатор, или взять фиксированный на 5 В и на выходе последовательно включить диод с падением напряжения от 0.8 до 1,2 В.
Я выбрал второй вариант, поскольку у меня уже был стабилизатор на 5 В и диод. Землю модуля нужно припаять к линейному стабилизатору, а сам стабилизатор нужно прикрутить к корпусу ГУ, а на входе модуля припаять конденсатор. Это позволит уменьшить уровень шумов сигнала.
Аналоговая земля модуля имеет потенциал 0.9 В относительно земли питания, поэтому ее нельзя подключать к земле ГУ, если ГУ и модуль связаны землями питания, потому что будет короткое замыкание, которое будет сопровождаться присутствием "писка" в сигнале. В таком случае нужно подключить только выходы правого и левого каналов к ГУ через конденсаторы (конденсатор для удаления постоянной составляющей из сигнала). Поскольку в ГУ уже есть конденсаторы, то можно выходы правого и левого каналов подключить напрямую к ГУ.
По желанию, к модулю можно добавить микрофон, для того чтобы можно было общаться с собеседником используя автомобильную акустическую систему.
Фотографии процесса сборки
Модуль и arduino можно поместить, как и в само главное устройство, так и собрать в отдельное устройство.
Я выбрал первый вариант. Нужно просто с помощью мультиметра найти необходимые выводы и припаять шлейф.
Для увеличения дальности bluetooth соединения можно сделать выносную антенну.
Так же, по желанию, можно изменить название модуля, которое будет отображаться в поиске (например Audi A6 Avant вместо POR 1007BT), если интересно, то пишите, сделаю отдельный пост.