Начну уже, пожалуй, тему.
И так, много народу сталкивается с необходимостью подключить кнопки на руле своего автомобиля к carpc. Среди них, в том числе, и владельцы BMW. В BMW нажатия кнопок на руле (и многие другие данные связанные с мультимедиа и приборной панелью) передаются по шине, называемой IBUS (по крайней мере, в e46 и в соседних по модельному ряду). Физически она представляет собой, так называемую,
K-Line диагностическую линию связи, по которой данные передаются в одном общем проводе. Передаются они так же, как и в последовательном интерфейсе RS-232, более известном как COM порт, на скорости 9600 бит/с, по 8 бит в байте, с одним стоп-битом, без контроля четности (
как на этой картинке). Это если описывать шину в двух словах, интересующиеся техническими деталями смогут найти их на необъятных просторах Интернета.
Задача: «отлавливать» на шине нажатия кнопок на руле и передавать эти нажатия в carpc, эмулируя нажатия кнопок на обычной клавиатуре.
Для этого собирается адаптер по вот такой схеме:
(схема во вложении)
Это пока черновик, еще не собранный. Все узлы ранее проверялись по отдельности. Я сейчас в процессе написания прошивки. Уже готова часть, эмулирующая клавиатуру. Изучены посылки, которые передаются по шине при нажатии кнопок. Осталось научить контроллер распознавать эти посылки и при их обнаружении посылать в компьютер код одной из клавиш клавиатуры. Для каждой кнопки на руле свой код клавиши. Это могут быть горячие клавиши WinAMP’а или любые другие произвольные клавиши. Я это делаю для Android, который понимает клавиатуры с мультимедиа кнопками, и собираюсь эмулировать мультимедиа кнопки управления звуком и переключения треков.
Проект уже близок к финишной прямой. Начинаю тему здесь заранее, чтобы перед воплощением в железе услышать пожелания по дополнительному функционалу, который возможно будет включен в проект. Схема, печатная плата и прошивка контроллера будут выложены тут. Если кому есть что сказать, высказывайтесь.