PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Общение с машиной (http://pccar.ru/forumdisplay.php?f=14)
-   -   BMW IBUS to USB Keyboard (http://pccar.ru/showthread.php?t=18794)

zyxel812 08.03.2013 16:16

BMW IBUS to USB Keyboard
 
Вложений: 1
Начну уже, пожалуй, тему.
И так, много народу сталкивается с необходимостью подключить кнопки на руле своего автомобиля к carpc. Среди них, в том числе, и владельцы BMW. В BMW нажатия кнопок на руле (и многие другие данные связанные с мультимедиа и приборной панелью) передаются по шине, называемой IBUS (по крайней мере, в e46 и в соседних по модельному ряду). Физически она представляет собой, так называемую, K-Line диагностическую линию связи, по которой данные передаются в одном общем проводе. Передаются они так же, как и в последовательном интерфейсе RS-232, более известном как COM порт, на скорости 9600 бит/с, по 8 бит в байте, с одним стоп-битом, без контроля четности (как на этой картинке). Это если описывать шину в двух словах, интересующиеся техническими деталями смогут найти их на необъятных просторах Интернета.

Задача: «отлавливать» на шине нажатия кнопок на руле и передавать эти нажатия в carpc, эмулируя нажатия кнопок на обычной клавиатуре.

Для этого собирается адаптер по вот такой схеме:
(схема во вложении)

Это пока черновик, еще не собранный. Все узлы ранее проверялись по отдельности. Я сейчас в процессе написания прошивки. Уже готова часть, эмулирующая клавиатуру. Изучены посылки, которые передаются по шине при нажатии кнопок. Осталось научить контроллер распознавать эти посылки и при их обнаружении посылать в компьютер код одной из клавиш клавиатуры. Для каждой кнопки на руле свой код клавиши. Это могут быть горячие клавиши WinAMP’а или любые другие произвольные клавиши. Я это делаю для Android, который понимает клавиатуры с мультимедиа кнопками, и собираюсь эмулировать мультимедиа кнопки управления звуком и переключения треков.
Проект уже близок к финишной прямой. Начинаю тему здесь заранее, чтобы перед воплощением в железе услышать пожелания по дополнительному функционалу, который возможно будет включен в проект. Схема, печатная плата и прошивка контроллера будут выложены тут. Если кому есть что сказать, высказывайтесь.

m50b20 08.03.2013 22:46

А когда примерно будет готов и сколько будет стоить ?

zyxel812 09.03.2013 13:24

Первый вариант работоспособной прошивки, если пройдет полевые испытания, то сегодня или завтра будет готов.
Купив вот такую плату, микросхему MC33290, пару керамических конденсаторов на 0,1мкФ и такой винтовой клемник вполне можно самостоятельно изготовить работоспособный девайс уже сейчас.
Я же буду еще дорабатывать схему, разрабатывать свою печатную плату, в которую собираюсь добавить контроллер питания carpc и только потом можно будет говорить об изготовлении девайса. Надеюсь закончить работу в течении этого месяца.

zyxel812 11.03.2013 13:17

Полевые испытания пока не пройдены, в микроконтроллер не попадают все байты с шины. При более внимательном прочтении datasheet'а на mc33290 обнаружил, что забыл резистор на 510..560 Ом между первой (vbb) и четвертой (iso) ногой микросхемы. Надеюсь вечером получить положительный результат.
Зато, теперь в прошивку включен еще CDC Class Device (COM-Порт), т.е. теперь адаптер представляется компьютеру составным устройством: USB-клавиатурой и USB-COM-портом. В COM-порт попадает всё, что "пролетает" по шине. Его можно открыть, например, в HyperTerminal'е и смотреть данные, "летающие" по шине. В финальной версии данные можно будет отправлять на шину, для тех, кто хочет не только слушать, но и управлять устройствами автомобиля. Однако, для этого легче купить BM9213 готовый адаптер, если конечно не нужна эмуляция нажатия клавиш клавиатуры.

m50b20 11.03.2013 13:37

ждем, удачи

zyxel812 11.03.2013 20:18

Вложений: 5
И так, всё работает. Правда видео не очень получилось.

Дело было не в забытом резисторе, а в том, что в протоколе используется контроль четности, а я его не включил. Т.е. скорость шины не 9600 8n1, а 9600 8e1.
Итого, девайс можно собрать на таком контроллере, используя приложенную к данному сообщению прошивку. Только контроллер нужно дополнить микросхемой MC33290, например навесным монтажом, как на фотках. Я для пробы собирал всё это на том, что было под рукой. В качестве контроллера бывший программатор, "допиленный" немного под данную задачу. Далее, уже не спеша, буду дооснащать это дело другими, нужными, мне функциями, а так же делать свою печатную плату.
Контроллер можно запрограммировать на эмуляцию нажатия любых клавиш, сейчас он эмулирует "+", "-", ".", ",".
Он точно будет работать на e46 с аудиосистемой bmw business. С другими аудиосистемами не тестировалось, в них, возможно, будут другие коды назначения. Однако, если кто соберет и работать не будет именно по причине других кодов, то нужно будет записать лог с com-порта, выложить сюда, я поправлю.
.inf файл в архиве - это драйвер com-порта, который понадобится.
В контроллере из 3-го поста стоит кварц 8МГц, а нужен 16МГц, поэтому, если возьмёте тот контроллер, то берите и кварц на 16МГц, его нужно будет перепаять.

m50b20 11.03.2013 20:31

Я так понял, что к Андроиду просто так подключить не получится?

awtoap 11.03.2013 21:33

Автор написал, что это будет составное устройство, тобиш одновременно COM порт и HID клава. В ведроиде должна сразу завестись как внешняя клава, только нужно освоить в ведре как переназначать коды клавиш.

m50b20 11.03.2013 21:40

Цитата:

Сообщение от awtoap (Сообщение 250116)
Автор написал, что это будет составное устройство, тобиш одновременно COM порт и HID клава. В ведроиде должна сразу завестись как внешняя клава, только нужно освоить в ведре как переназначать коды клавиш.


ну вот это я и имел в виду под "просто так"

Hamster 11.03.2013 21:50

Цитата:

Сообщение от m50b20 (Сообщение 250118)
"просто так"

Просто так ничего в этом мире не делается :)
Чтобы переназначить кнопки USB клавы нужно править конфиг. Ничего сложного там нет - не боги горшки обжигают :)
Вот статейка с хабра, там все расписано.

А с другой стороны - зачем переназначать коды клавиш HID клавы, если можно поправить прошивку девайса?


Часовой пояс GMT +4, время: 11:13.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot