Представляю вашему вниманию устройство, которое подключается к pccar посредством USB порта. Устройство «прикидывается» клавиатурой и последовательным портом (COM-портом) одновременно.
К устройству может быть подключено до 15-ти кнопок и/или до 14 светодиодов (или, например, реле для управления чем-либо). При этом коды клавиш и назначение выводов конфигурируется посредством программы-конфигуратора.
Устройство может быть подключено к шине IBUS автомобилей BMW. По шине устройство «отлавливает» нажатия кнопок на руле и эмитирует нажатие клавиши клавиатуры. Нажатие каких именно клавиш эмулировать, задается конфигуратором.
Устройство умеет эмулировать нажатия не только отдельных простых клавиш, но и в сочетании с модификаторами, такими как shift, control, alt и клавишей windows. А также нажатие мультимедийных клавиш, которые «на ура» воспринимает Android, в результате возможно с кнопок управлять звуком, треками, а так же запускать отдельные программы, например, браузер или плеер.
Через виртуальный последовательный порт возможно получать все данные с шины IBUS и передавать в нее данные.
Вот одна из возможных схем:
Кому лень разводить и травить плату, возможно заказать почти готовый контроллер
от сюда за 23,5$ (UPD: по ссылке уже не продается, перечень других ссылок в
этом посте)

В нем не хватает микросхемы MC33290 для подключения к шине IBUS. Кому нужны просто резистивные кнопки, ничего делать не надо. Кому требуется подключение к IBUS, микросхему можно купить отдельно
здесь или в любом другом магазине радиоэлектроники (цена максимум 200 рублей). Подключить микросхему возможно навесным монтажом. Вот, правда не самый красивый, пример:

Выводы микросхемы подключайте согласно схеме.
Кнопки подключаются одним выводом к земле (обозначена gnd), вторым выводом к соответствующему порту (обозначены Bx, Cx, Dx, где x – любая цифра).
Светодиоды подключаются одним выводом к порту, другим могут быть подключены как к земле, так и к +5. В конфигураторе предусмотрено инвертирование выходных сигналов.
Не забываем последовательно включить резистор, обычно 470 Ом.
Контроллер по указанной мной ссылке уже имеет прошитый загрузчик. Чтобы залить в него прошивку, не нужно иметь программатор, нужно просто подключить его к компьютеру, нажать единственную имеющуюся на нем кнопку и из командной строки выдать следующую команду:
Код:
teensy_loader.exe -v -mmcu=at90usb162 MultiKeyboard.hex
Программу teensy_loader.exe и файл MultiKeyboard.hex ищите в приложенном архиве.
После прошивки, на компьютере с windows устройство определится как составное устройство, при этом драйвер на клавиатурную часть поставится автоматически, а для последовательного порта потребуется драйвер, который имеется в архиве.
После установки драйвера, можно приступать к конфигурированию. Конфигурирование производится программой ibus2keyconf.exe. Выберите порт, который был присвоен нашему виртуальному последовательному порту, нажмите «Подключиться». Если не будет ошибок, в устройство станет возможно записать конфигурацию и считать её. Возможности программы конфигурирования наглядно демонстрируются скриншетами:
Главное окно:
Назначение выходов:
Назначение клавиш:
Наглядная схема подключения к машине
Микросхему MC33290 можно заменить на L9637, в этом случае
схема подключения будет такая.
UPD (27.08.2014):
Версия для контроллера ATmega32U4. Реализована обработка дополнительных двух кнопок на руле.
UPD (16.04.2015): Наткнулся на статью, которая сможет помочь разобраться с прошивкой Arduino:
Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика