Проблемма:
Штатная магнитола не имеет линейного входа, который очень нужен...У магнитолы имеется возможность подключения CD чейнжера(только своего), при подключении чейнджера у магнитолы активируется линейный вход через который подается аналоговый аудио сигнал от чейнджера в магнитолу. Управление чейнджером(перемотка, пауза и т.п.) осуществляется по шине данных J1850, но управление мне не нужно, мне достаточно активировать вход...
Как работает:
При подключении к магнитоле, "родного" чейнджера, в меню появляется пункт CD Changer.
CD Changer и магнитола соединяются 10 пиновым кабелем:
Магнитола узнает о наличии чейнджера по шине данных (J1850 VPW PCI Bus). Грубо говоря подключенный CD чейнджер, по шине данных "передает" свой "позывной", "услышав" который магнитола активирует режим работы с CD чейнджером...Сообщение от Распиновка
Все команды CD чейнджеру также передаются но шине данных, но в моем конкретном случае управление: перемотки паузы и т.п. не требуются необходима только активация режима CD чейнджер, при котором активируется и звуковой вход магнитолы (пины 1,2,6), по которым я и планирую подать звук в магнитолу...
Сразу отвечу на вопрос: Почему просто не заменить магнитолу?
>Потому что родная магнитола(производства: infinity) идеально вписываясь в интерьер, хорошо звучит, но имеет специфический формфактор 1,5 Din переделка естественно возможна, но страдает эстетика...
>Руки чешутся поиграться с Arduino
CD эмулятор на ATttiny26 уже разработан и успешно работает НО! Только у рукастых друзей паяльника, к сожалению спаянный мной эмулятор не заработал, видимо руки не доточил...
Случайно узнав о чуде Arduino и подумал, а ведь эта НЕДОРОГАЯ малышка ЗАВОДСКОГО производства должна с легкостью справится с данной задачей... Учитывая, что есть все исходники, даташиты, остается грамотно адаптировать для ARDUINO..
Поэтому обращаюсь к специалистам! Правильно ли я сделал вывод о "легкости" адаптации "CD эмулятора на ATttiny26" в Arduino? И если да, то прошу помощи в адаптации и выборе необходимых компонентов(как я понимаю одна из сложностей это питание платы Arduino)...
Вот принципиальная схема, и макет печатной платы работающего эмулятора
hardware.pdf
А вот прошивка с исходниками, надеюсь специалисту не составит труда разобраться....
Firmware.zip
Описание протокола...
Frame header 0x8D CD Changer control frame Data byte 1 0x0F Poll to CD changer Date byte 2 0x00 Actual Radio mode0x01 = Radio off0x10 = Internal CD drive
0x20 = Mode MW or LW
0x21 = Mode FM
0x24 = Mode CD changerCRC
The following frame is the poll response if changer is in idle mode or changing disc/track:
Frame header 0x8D CD Changer control frame Data byte 1 0x93 Response to frame 8D 0F - Pong from CD changer when in idle status Data byte 2 0x01 Actual disc, range 0-0xFF, Hex coded0-9 = numbers 0-9A = ':'
B = ';'
C = '<'
D = '='
E = '>'
F = '?'Data byte 3 0x01 Actual track, range 0-0xFF, Hex coded0-9 = numbers 0-9A = ':'
B = ';'
C = '<'
D = '='
E = '>'
F = '?'Data byte 4 0x80 Display control0x02 = Blinking "SCAN" text0x04 = "RND" activated
0x30 = "NO MAG" text
0x60 = "NO DISC" text
0x70 = "-:-" steady
0x80 = Disc number + radio clock
0x90 = Disc number + track number + radio clock
0xA0 = Disc number + track number + "00:00"
0xB0 = Disc number + track number + song play timeCRC
The following frame is the poll response if changer is playing a track:
Frame header 0x8D CD Changer control frame Data byte 1 0x94 Response to frame 8D 0F - Pong from CD changer while playing Data byte 2 0x00 Actual minutes of play time, range 0-99, BDC codedIf byte is 0x9x the time is displayed like "-0:00", remaing time Data byte 2 0x00 Actual seconds of play time, range 0-99, BCD coded CRC
This frame must be send before the first 0x8D 0x94... frame, otherwise time update is not possible:
Frame header 0x8D CD Changer control frame Data byte 1 0xE1 Command to activate time displayRequired before 8D 94Otherwise play time update not possible Data byte 2 0x01 ??? Data byte 3 0x10 ??? CRC
The following frame will be send from radio to the changer, if a changer related button was pressed:
Frame header 0x3D CD Changer control frame, button press Data byte 1 0x12 ??? Data byte 2 0x810x830x84 ??? With "TUNE" and "SEEK" button??? With "DISC" button??? With "RND" button Data byte 3 0x26 Key ID0x23 = Button "TUNE FF" pressed0x24 = Button "TUNE RW" pressed
0x25 = Button "TUNE" released
0x26 = Button "SEEK UP" pressed
0x27 = Button "SEEK DOWN" pressed
0x35 = Button "RND" pressed
0xF1 = Button "DISC UP" pressed
0xF2 = Button "DISC DOWN" pressed
Ссылка сайт автора разработки