Bmw адаптер своими руками

Опубликовано: 19.05.2024

Идея следующая: собрать USB, AUX адаптер, на подобие Yatour и ему подобных своими руками, на базе МК Arduino.

  • Во-первых, как и в других USB-адаптерах, хорошее качество звука, сохранение управления с "головы" и руля;
  • Во-вторых, возможность управления IBUS (подробнее опишу ниже);
  • В-третьих, перспектива для дальнейших проектов, т.к. к Ардуино можно легко подключать Блютуз, WiFi, всевозможные датчики и всем этим делом грамотно управлять.
  • Ну и самое главное - желание собрать это своими силами. Даже если стоимость проекта и превысит готовые решения (в чем я сильно сомневаюсь).

Для начала нужно немного теории:
Аудио диски в чейнджере дают аналоговый сигнал. USB-порт дает цифру. Значит нужен преобразователь, т.е. ЦАП (цифро-аналог. преобраз). Кроме этого, для чтения mp3 и других форматов нужны кодеки. Все это продается и стоит не дорого. Но можно реализовать и на Ардуино!

Я нашел в продаже Arduino Due. Мощная машинка, на борту которой уже имеются целых 2 ЦАП. Ну и с установкой кодеков вопросов возникнуть не должно (в теории конечно).

Все готовые решения имитируют работу cd-чейнджера. На начальном этапе не будем изобретать велосипед и поступим также. Для этого нам нужны следующие разъемы:
[Для просмотра ссылки/изображения нужно войти или зарегистрироваться]


Общая, грубая схема подключения получается следующая:
USB-Arduino(кодеки+ЦАП)-радиомодуль. Поправте если ошибаюсь.


А вот дальше сталкиваемся с проблемой. У меня стоит цифровая DSP. И я понятия не имею, что с ней делать. Готовые, коммерческие решения предлагают покупку специального модуля для DSP, утверждая, что без него адаптер не будет работать.

Кто может объяснить причину этого? Ведь подается все такой же аналоговый сигнал, как и раньше от чейнджера. Какую работу выполняет модуль для DSP?

Я смог найти схему нашего DSP:
[Для просмотра ссылки/изображения нужно войти или зарегистрироваться]


Там используется PCM2902. Если я правильно понимаю, он нужен для АЦП и ЦАП?

У кого есть какие соображения по этому счету, как можно решить вопрос с DSP? Есть ли какие-то ошибки в общей схеме? PS: я далеко не электрик, просто захотелось понять суть работы USB-адаптеров

Диагностический адаптер K-Line своими руками

Диагностический адаптер K‑Line

Адаптер K‑Line это устройство передачи данных по однопроводной линии, т.е запросы диагностического оборудования и ответы ЭСУД передаются по одной линии. СОМ-порт компьютера имеет раздельные входы для получения и отправки данных, для согласования и предназначен адаптер сигналов СОМ <-> K‑Line.

К‑линия автомобильной диагностики имеет «подтяжку» к 12 вольтам (питание ЭБУ) и размах сигналов от 0 до 12 V (теоретически, реально уровни немного отличаются).

В системах GM используется другой диагностический протокол – ALDL. В адаптере ALDL используется выход с открытым коллектором и 5 ‑вольтовые уровни сигналов. «Подтяжка» в этих системах находится внутри ЭБУ. В подавляющем большинстве случаев для этих систем не используется оригинальный адаптер, для диагностики применяют K‑Line, либо занизив до 5 вольт напряжение «подтяжки», либо подбором резистора для стабильной работы и на 5 и на 12 вольтовых уровнях.

СОМ – порт компьютера имеет (в нашем, простейшем, случае) две линии – по одной идет чтение сигналов, по другой – запись. Уровни сигналов СОМ – порта от ‑ 12 V до + 12 V, то есть, высокий уровень ‑ 12 V, низкий + 12 V. Подробнее здесь или (на русском) здесь.

Для согласования сигналов используются, как правило, специализированные микросхемы. Микросхема МС 33199 служит для согласования с К‑линией и «разделения» и «смешивания» сигналов. МАХ 232 – специализированная микросхема для согласования различных устройств с RS 232 (стандарт СОМ-порта). МАХ 232 содержит в себе интегральные преобразователи напряжения, позволяющие получить нужные для работы порта +/- 12 V и приводит поступающие сигналы к необходимому уровню. Более «продвинутые» специализированные микросхемы – DS 275 выполняет те же функции, что и МАХ 232 , но имеет автоматическую настройку выходных сигналов по уровню входных и, что немаловажно, не требует громоздкой конденсаторной «обвязки».

Существует несметное количество вариантов схем адаптеров, от самых простых, на двух транзисторах, до полнофункциональных адаптеров на специализированных микросхемах. Естественно, желательно использовать хороший адаптер на специализированных микросхемах.

При диагностике иномарок 90 ‑x годов часто возникает необходимость в дополнительной линиии L (K‑L-Line адаптер), более поздние модели, как правило используют только K‑Line. Схемы адаптеров K‑L-Line можно посмотреть здесь.

Один из самых обстоятельных из известных мне «рукодельщиков» ch 0 zen поместил на своем отличном сайте наиподробнейшее, пошаговое описание изготовления адаптера на MC 33199 по «утюжной» технологии. Очень рекомендую. Можно скачать всю информацию целиком здесь.

Простая схема на 2 ‑х транзисторах

Как проверить адаптер не подключая к автомобилю? Очень просто. Дело в том, что поскольку линия после адаптера однопроводная, можно послать в порт сигнал и тут же его прочитать (режим «эхо»). Для этого необходимо подключить адаптер к компьютеру и воспользоваться древней программой диагностики компьютеров – Check It 3 . 0 . Включаем режим диагностики COM и наблюдаем в окнах прием – передачу символов. Если все проходит нормально, это косвенно говорит о том, что схема работает, для полной уверенности необходимо осциллографом проконтролировать сигналы RxD, TxD и K‑Line. Размах сигналов на разъеме СОМ – порта должен быть от + 12 V до 0 V (в идеале, реально чуть поменьше. По стандарту необходим размах от + 12 до ‑ 12 V), а на линии K‑Line от + 12 V до нуля. Проверку адаптера осуществляет так же программа диагностики ICD.

Адаптер K‑LINE © VSM

Диагностический адаптер K-Line своими руками

Более «правильную» схему адаптера для тех, кому проблематично достать дефицитную микросхему MC 33199 D прислал VSM. Здесь для согласования с портом применена всё та же, довольно распространенная микросхема MAX 232 (ICL 232 CPE, HIN 232 ), а согласование с линией диагностики – микросхема 74 ALS 04 ( 74 LS 04 , К 555 ЛН 1 , К 1533 ЛН 1 ).

Схема эксплуатируется в течении полутора лет, опробована на всех типах контроллеров. Защитный диод желателен с малым падением напряжения, второй – любой импульсный, например КД 521 , 522 . VSM поделился также опытом подстройки нагрузочного резистора. На схеме его номинал 2 Ком, это оптимально для тестирования и программирования блоков «Январь», для «Бошей» его номинал около 1 Ком, для GM – больше 2 Ком. От себя замечу, что номинал резистора применяю 510 ‑ 560 Om, как на «больших» схемах, это обеспечивает ток линии около 20 mA, что повышает помехозащищенность. В GM, повторюсь, нагрузочный резистор установлен в блоке и линия диагностики использует пятивольтовые уровни, внешний нагрузочный резистор в адаптерах ALDL не используется. Нумерация выводов по входу соответствует 9 ‑пиновому разъему СОМ, выхода – 9 ‑пиновому разъему адаптера KR‑ 2 от НПП НТС. С этим адаптером стабильнее всего работает спортивная система впрыска J 5 -Sport (Соколов-Спорт). Остальные, даже именитые адаптеры соединялись не с первого раза, рвали связь и пр.

ПРОВЕРКА И НАСТРОЙКА

1 . Ищем какой-нибудь измеритель, хотя бы простейший электрический тестер.
2 . Убеждается в правильности установки элементов схемы и наличии нужных и отсутствии ненужных соединений между ними.
3 . Подаем + 12 В, адаптер к компьютеру не подключен.
4 . Проверяем наличие + 5 В на выводе 16 MAX 232 и выводе 14 логики, если нет – проверяем правильность установки и работоспособность 142 ЕН 5
5 . Проверяем работу конверторов MAX 232 , т.е. наличие + 10 В на выводе 2 и ‑ 10 В на выводе 6 , если нет – проверяем правильность установки и исправность конденсаторов.
6 . Подаем на вход приемника RS 232 ‑ 10 В, т.е. соединяем выводы 13 и 6 МАХ 232 и проверяем прохождение сигнала: (логическая « 1 » на выходе 12 MAX 232 ) -> (логическая « 1 » на входе 5 ЛН 1 ) -> (логический « 0 » на выходе 6 ЛН 1 ) -> (+ 12 В в k‑line) -> ( логическая « 1 » на входе 1 ЛН 1 ) -> (логический « 0 » на выходе 2 ЛН 1 ) -> ( логический « 0 » на входе 3 ЛН 1 ) -> ( логическая « 1 » на выходе 4 ЛН 1 ) -> (логическая « 1 » на входе 11 MAX 232 ) -> (низкий уровень RS 232 , т.е. менее ‑ 5 В на выходе 14 MAX 232 ). При непрохождении сигнала через любой элемент, проверяем правильность установки и работоспособность этого элемента. Удаляем соединение между выводами 13 и 6 МАХ 232 .
7 . Подаем на вход приемника RS 232 + 10 В, т.е. соединяем выводы 13 и 2 МАХ 232 и проверяем прохождение сигнала: (логический « 0 » на выходе 12 MAX 232 ) -> (логический « 0 » на входе 5 ЛН 1 ) -> (логическая « 1 » на выходе 6 ЛН 1 )-(

0 В в k‑line) -> ( логический « 0 » на входе 1 ЛН 1 ) -> (логическая « 1 » на выходе 2 ЛН 1 )- ( логическая « 1 » на входе 3 ЛН 1 )-( логический « 0 » на выходе 4 ЛН 1 )-(логический « 0 » на входе 11 MAX 232 ) -> (высокий уровень RS 232 , т.е. более + 5 В на выходе 14 MAX 232 ). При непрохождении сигнала через любой элемент, проверяем правильность установки и работоспособность этого элемента. Удаляем соединение между выводами 13 и 2 МАХ 232 .
8 . Подключаем адаптер к порту RS- 232 компьютера, соединяем с k‑line и пытаемся установить связь с контроллером. В случае проблем, при отсутствии осциллографа, проверяем: правильность использования программы; параметры COM-порта (может ли он работать на выбранной скорости обмена); величину резистора в нагрузке k‑line; качество линии связи и т.д.

Адаптер K‑LINE © SHURIKEN

Диагностический адаптер K-Line своими руками

Второй вариант «правильной» схемы адаптера для тех, кому проблематично достать дефицитную микросхему MC 33199 D прислал SHURIKEN (CTTeam). Адаптер по этой схеме эксплуатируется более полутора лет, прошел проверку на всех системах впрыска и характеризуется как «железобетонный». Для согласования с СОМ – портом применена всё та же, довольно распространенная и дешевая (в разных регионах цена колеблется от 30 до 50 руб) микросхема MAX 232 (ICL 232 CPE, HIN 232 ), а согласование с линией диагностики – микросхема LM 339 . Каких либо дополнительных особенностей схема не имеет, катушка L 1 служит для фильтрации импульсных помех.


Описание настройки и осциллограммы Вы можете посмотреть здесь. Так же, как и в предыдущей схеме, нумерация выводов по входу соответствует 9 ‑пиновому разъему СОМ, выхода – 9 ‑пиновому разъему адаптера KR‑ 2 от НПП НТС.

K‑LINE: Новый взгляд на привычные вещи.

Прогресс движется вперед семимильными шагами и заглядывает даже за ворота автомастерских, в которых все чаще и чаще можно встретить ноутбуки в качестве диагностического компьютера. Нет слов, ноутбук более мобилен, функционален и в какой-то мере престижен, прибавляя «вес» автосервису. Но… В последнее время участились жалобы либо на неправильную работу адаптеров К‑Line, либо, что еще хуже, выход из строя COM – портов ноутбука. Дело, мне кажется в том, что у некоторых ноутбуков СОМ-порты работают с уровнями сигналов +/- 3 V, в то время как большинство адаптеров, рассчитанные на РС и собранные на микросхемах МАХ 232 выдают полноценные +/- 12 V. То есть, для работы с ноутбуком желательно иметь адаптер, предназначенный именно для этого. Самый простой путь – заменить привычную нам всем МАХ 232 на МАХ 3232 , имеющую пониженные напряжения сигналов. Цена вопроса – 90 рублей, именно столько составляет разница в стоимости этих микросхем в Волгограде.

Другой, и, как мне кажется (IMHO), более прогрессивный способ предложил HASS_ 78 – использование для согласования с портом ноутбука микросхему DS 275 . Данная микросхема работает с теми уровнями сигналов, которые получает, адаптируясь хоть к СОМ-порту РС, хоть к ноутбуку, представляя собой оптимальное решение для реализации K‑Line. Кроме всего прочего, данный способ практически не требует «обвязки» микросхем.

Итак, схема от Hass‑а на DS 275 и MC 33199 .

Схемы не имеют никаких особенностей, и при правильной сборке не требуют никакой настройки. DА 1 – любой стабилизатор, например LM 2931 AZ‑ 5 , 7805 . Вместо 33199 ( 33290 ) при соответствующем изменении схемы можно использовать L 9243 (из иммобилизатора АПС‑ 4 ).

Получится что-то типа этого.…

Все три варианта адаптеров прекрасно умещаются в корпусе переходника 9 – 9 pin

Диагностический адаптер K-Line своими руками
Диагностический адаптер K-Line своими руками

В заключение хочу сказать, что несмотря на то, что этот K‑Line адаптер очень негативно встречен сборщиками-продавцами «адаптеров» на более простой и дешевой элементной базе, это самое лучшее и правильное решение на сегодняшний день.

Почему решил сделать сам этот адаптер ? Купив в Российском интернет маге , в каком именно вы сами поймете по фото этого адаптера , якобы адаптер INPA ADS - интернет продавец в Москве но торгуют по всей России , и . он конечно же на мой авто не подошел . Сам продавец перед тем как продать пообещал техническую поддержку ,что типа на мое авто он подойдет и мой блок увидит , но когда дошло до дела , нужна была помощь и я задал вопрос - почему у меня нет соединения с MOTRONIC 1.7 меня отослали на форумы - ищите там .

Чего то как то не хочется их кормить .

Полностью потеряв веру в российские интернет магазины я решил сделать сам . Но как оказалось найти рабочую схему большая проблема .Пошел на форумы и там не все так просто . толи поклонение золотому тельцу достигло своего апагея (за деньги помогут) толи еще что то не ведомое . Более того есть некоторые уникумы на форумах которые пишут я знаю но тебе не скажу - думай сам .И обратите внимание вот на что . Не на одном форуме (кроме зарубежных) вы не найдете фото готовых адаптеров INPA ADS и не одного видео адаптера который сделали самостоятельно от начала - в момент при подключении и до соединения - ЧТО ОЧЕНЬ ВАЖНО ибо только тогда можно судить о работосопсобности схемы INPA ADS . Но зато куча говорильни про схемы и прошивки которые якобы работают . Решил сделать сам еще и потому что этот адаптер с протоколом ADS скажем так антиквариат , машин до 1996года становиться все меньше и меньше а вот людей , энтузиастов ищущих сие , почти нет . Я понаоткрывал кучу тем на разных форумах с данным вопросом более чем на 6 форумах бмв и автодиагностике и только ДВА человека оказались озабочены данным вопросом и искали пути решения .

С одной стороны можно купить у китайцев .Но кормить и давать работу им . как то тоже нет особого желания . Я вообще стараюсь , если конечно есть выбор не покупать производство китай .

Авто у меня старое и довольно простое по комплектации , проверить компрессию подсос воздуха диагностика здесь не нужна , ну а как проверить все датчики для этого есть спец.литература .Плюс у меня есть три рабочих блока DME MOTRONIC 1.7 . И в принципе диагностика мне не нужна .

НО ! Я фанат марки BMW , как сказал один форумчанин много машин и разных марок было но только БМВ вызывает эмоции . И иметь INPA ADS просто необходимо .

Полазив по разным Российским форумам на некоторых зарегился но после ответа - ты тупой или ищи сам я пришел к выводу что контингент там собрался не ахти какой . Уж добыть рабочую схему и получить совет , консультацию в вопросе с которым я столкнулся впервые , я точно не смогу . Ну и ладно .

Свои темы на форумах я не удалял , если только администрация не подчистила но по фоткам вы поймете где я просил помощи и так ее не получил . Плюс , после того как администрация одного известного форума меня пару раз заблокировала , на другом начали подчищать мои сообщения я еще больше утвердился в том что тема интересная и обязательно нужно сделать сайт , где никто и ничто не помешает . Нуу. и всякого рода не адекват а так же всякого рода "доценты" пускай остается на форумах . Им тоже как то на рекламе нужно зарабатывать .

Ну чтож , обойдусь и без них .

Все адаптеры сделаны мной , за исключением проекта его я заказываю . Поверьте спец.навыков здесь не нужно .Если умеете пользоваться паяльником то все можно сделать самому . И еще нужно закупить детали . ЧиП и ДиП магазин наверно один из самых дорогих - зато там можно купить по штучно . Так же для ADS понадобиться вот такой разъем 20пиновый его продают почти везде .Если нет разъема то можно купить клеммы и подсоединить GND +12 K L согласно схеме .

Еще год назад я понятия не имел что такое фоторезист и что такое SMD монтаж , корпуса SO-8 и DIP16 к примеру . при желании можно во все вникнуть и понять , да и те же форумы по электронике , все таки есть адекват и хорошие люди альтруисты не поклоняющиеся Золотом Тельцу , где помогут даже в самых глупых казалось бы вопросах .

Почему не работают в режиме ADS сделанные мной адаптеры ? Вопрос вопросов . Все детали новые монтаж сделан согласно схемы казалось бы все должно работать . Возможно я что то не так делаю .Возможно сама схема не под ADS .В любом случаи - пробуйте возможно у вас получиться . Пришел к такому выводу что делать монтаж SMD не стоит . Лучше сделать на выводных элементах тогда исключаются не пропаял оловом .

Говоря что мои платы не работают я имел ввиду что мой вариант не получился и это вовсе не означает что у вас не получиться .Схемы нарыты из интернета и судя по описаниям людей которые его делали у них все работает .

Все проекты для печатной платы сделаны в программе dip trace - бесплатную версию можно скачать здесь , внутри схема и плата для распечатывания на принтере http://www.diptrace.com/rus/

ОКАЗАЛОСЬ ЭТОТ ЧЕЛОВЕК ПРОДАЕТ СВОИ АДАПТЕРЫ, КОТОРЫЙ ЕСТЬ У МЕНЯ НА САЙТЕ , ТРЕТИЙ ВАРИАНТ ВРОДЕ . Я ЕМУ НАПИСАЛ И ОН МНЕ ДАЛ ССЫЛКУ НА ПРОЕКТ ПЛАТЫ . КОМУ НУЖНО ВОТ ССЫЛКА http://openlabs.co/OSHW/Tiny-ADS-Interface-r2

Кому нужен могу продать - есть в наличии , за 5 отдам конектится ко всем старым моделям есть для этого форумы , я на своей проверял - все работает .

Продается (за ненадобностью ) рабочий ноут COMPAQ PRESARIO 2100 акб не держит но сами акб еще продаются есть зарядка . Все кнопки работают есть LPT и COM порты плюс под карту расширения плюс дискета . На ноуте установлено все для инпы на Windows XP . Плюс Второй HDD c windows NT .

В данной статье речь будет о локальной низкоскоростной сети взаимодействия блоков управления автомобиля BMW — I/K-bus. А точнее о том, как с ней могут взаимодействовать приложения из под Linux. На картинках проиллюстрирую созданный мною вариант.

Итак, передо мной встала задача расширить функциональность моего автомобиля в области информационно-развлекательной системы. Просто мне этого очень захотелось. Автомобиль хороший, но пожилой. Его создавали во времена, когда даже mp3 не был в обширном употреблении. Поэтому многих современных удобств он лишён. К тому же есть в голове дополнительные идеи, воплотив которые, я смогу подчеркнуть свою индивидуальность.

Информационно-развлекательная система выполняется на устройствах, в основе которых контроллеры с заложенными программами. Я буду здесь называть эти устройства блоками управления. Каждый такой блок управления несёт свою функциональную нагрузку, будь то поддержание температуры салона, регулировка положения сидений, воспроизведение музыки и видео, навигация и прочее. Весь этот набор блоков управления должен взаимодействовать друг с другом, управляться с места водителя и пассажиров, передавать диагностические данные. Для этой цели и была разработана сеть I-bus. В последствии появилась технически идентичная сеть K-bus и их объединение I/K-bus.

Архитектура сети I-bus выполнена по схеме «общая шина», т. е. импульсы данных от узлов (блоков управления) передаются по обычному медному проводу соединённых в одной точке. Поэтому узлы должны делить общую среду передачи и передавать данные по очереди. Как определяется эта очередь или приоритетность я не знаю, полагаю просто прослушивается шина на наличие занятости и с учётом защитного интервала и незанятости шины принимается решение о передачи. В «молчаливом» состоянии уровень потенциала на шине относительно корпуса составляет от 7 В до напряжения питания автомобиля. При подаче доминантного бита в шину потенциал снижается до 2 В и ниже. Битовая скорость взаимодействия узлов постоянная и составляет 9600 бит/с. Цифра знакомая из UART. Но не только в скорости передачи имеются сходства, также формат символов в I-bus соответствует одной из вариаций доступных в UART. Символ состоит из 11 бит: стартовый бит, 8 бит данных, бит чётности, стоповый бит. Эти особенности позволяют физически подключаться к шине через интерфейсы UART или RS-232. Только необходимо позаботиться о преобразовании уровней сигнала с помощью простенькой схемы или готового преобразователя. Для этой цели вполне сойдёт k-line адаптер известный в диагностических интерфейсах. На физическом уровне они полностью совместимы. Я кстати им и пользуюсь.

Про физический уровень сети I-bus я в общем рассказал, теперь опишу кратко канальный уровень, это если следовать последовательности многоуровневой модели OSI. Так будет логичнее. Как я упомянул ранее, для передачи используется общая среда, которую надо делить по времени и передавать данные различным адресатам. Тут можно провести аналогию с Ethernet — данные передаются кадрами в которых содержится адрес отправителя, адрес получателя, полезная нагрузка (данные) и контрольная сумма. Кадр не имеет фиксированного размера и лежит в пределах 5 — 37 символов. Формат кадра я нарисовал ниже:

image

Здесь TX ID — адрес отправителя, 1 символ;
LEN — размер кадра с вычетом двух первых символов, 1 символ;
RX ID — адрес получателя, 1 символ;
DATA — полезная нагрузка, 1 — 33 символа;
CK SUM — контрольная сумма, 1 символ.

Корректность принятого кадра определяется символом контрольной суммы. Отправитель не проверяет корректность принятого кадра получателем. Возможно это делается на уровне приёма собственного кадра. Если не было коллизий и других сбоев на шине, то отправитель корректно примет собственный кадр и не предпримет попыток повторной отправки. По информации найденной мною во всемирной паутине сказано, что отправитель ждет 100 мс положительной квитанции от получателя. Увы, на практике я этого не встречал. Возможно это применяется для особенно важных сообщений и в протоколах более высокого уровня.

То что входит в полезную нагрузку кадра, относится к протоколу следующего уровня. Работу с этим протоколом лучше возложить на прикладной уровень и работать с ним в приложениях. Повторюсь ещё раз, я ищу применение взаимодействия сети I/K-bus в операционной системе на ядре Linux. Функции блоков управления будут выполнять приложения в пользовательском пространстве. Внутри операционной системы организовать взаимодействия между приложениями не сложно, есть механизмы межроцессного взаимодействия (IPC). Но главная задача связать их с процессами блоков управления автомобиля. За примером обратимся к более известному варианту сети взаимодействия контроллеров — CAN. В Linux эта технология развивается в двух проектах: SocketCAN и can4linux. Первый проект основывается на драйвере сетевого устройства и протоколов, выполняющих предварительную обработку кадров и связывающих сетевое устройство с интерфейсом сокетов. Второй вариант основан на символьном устройстве, подробности реализации этого проекта не знаю, так как не работал с ним. Но полагаю аналог can4linux для I/K-bus является драйвер tty. Достаточно настроить скорость, формат символов последовательного порта и путем чтения/записси ttyS файла будет выполняться прием/отправка данных в шину. Конечно если она подключена к последовательному порту адаптером.

Мне показался более привлекательным вариант SocketCAN, и я пошёл этим же путём. Объясню почему. Драйвер выполнен из двух независимых частей: сетевого устройства и сетевого протокола. В сетевом устройстве решаются вопросы взаимодействия с аппаратной частью и множественного доступа, а в модуле сетевого протокола — фильтрация сообщений и взаимодействия с процессами пользователя. Приложения подключаются к сети I/K-bus посредством сокетов и задачи множественного доступа и фильтрации снимаются. В принципе можно возложить фильтрацию и множественный доступ на какой-нибудь сервер, подключенный к tty устройству и не лезть в ядро. В общем то да, но все равно не обойтись без межпроцессорного взаимодействия, а это как вариант тот же сокет. К тому же в сетевом стеке Linux решены многие задачи с очередями сообщений, которые придётся реализовывать в сервере. И ко всему этому использование сетевого устройства гармонично вписывается в философию администрирования операционной системы. Например командой ifconfig можно посмотреть состояние интерфейса, остановить его или запустить.

Драйвер сетевого устройства для I/K-bus я выполнил на основе slcan, который выполнен на основе SLIP. Я не застал те времена, когда IP пакеты передавались между компьютерами по последовательному порту. Их и сейчас можно передавать таким способом, но это не актуально. А вот передавать I/K- bus кадры таким способом хороший вариант. Драйвер tty сложен и доступ к низкоуровневой его части можно получить через дисциплину линии. Так делается в SLIP и slcan, так поступил и я, написав драйвер slibus. Когда через tty устройство активизируется созданная дисциплина линии, в системе появится сетевое устройство ibusN, где N — 0,1,2… Что бы было понятнее приведу схему. В ней зелёным отмечены квадраты, функции которых выполняет модуль ядра slibus.

image

Оранжевым цветом отмечен функционал модуля сетевого протокола. Опять же не стал изобретать велосипед и по аналогии модулей can и can_raw создал модуль af_ibus_raw. При загрузке этот модуль регистрирует новое семейство протоколов PF_IBUS и в нем же реализован RAW-сокет для полного доступа к кадру. Посредством вызова setsockopt можно включить фильтр принимаемых сообщений по идентификаторам отправителя и получателя. По умолчанию сокет принимает все сообщения из шины.

Должен сказать, что есть одна неприятность, и заключается она в том, что для возможности загрузки этих модулей необходимо патчить ядро.

А теперь давайте посмотрим как это все работает. Загрузим модули ядра, инициализируем дисциплину линии под номером, соответствующем slibus, и поднимем сетевой интерфейс ibus0. Команда ifconfig в терминале покажет нам что то подобное:


Как видим сетевой интерфейс успешно запущен и имеет статистику по трафику. Прежде чем сделать скриншот, я специально погонял данные по интерфейсу. Пользуюсь сделанными драйверами несколько месяцев, сбоев не наблюдалось. Но есть недоработки, которые еще не устранил. К ним вернусь позже, а пока работаю над приложениями по мере свободного времени.

Сильные стороны данного подхода заключаются в ряде аспектов. Приложения запущенные в операционной системе имеют полноценный доступ к шине и через неё же взаимодействуют друг с другом. Допустим в комплектации моего автомобиля отсутствует CD-чейнджер. Мне достаточно написать приложение эмулирующее это устройство. При этом оно будет воспроизводить различные форматы файлов и онлайн радио. Затем я захочу доукомплектовать телефонным модулем, которого у меня нет или не нравиться штатный. Я просто напишу ещё программку, которая по блютуз подключится к смартфону и выполнит ввод-вывод голоса и информации в штатные места. Или создать что-нибудь свое, например игра световыми приборами e-light. Таким образом приложения разрабатываются независимо друг от друга, могут устанавливаться и удаляться по желанию владельца.

На рисунке ниже показана работа программ ibusdump и ibussend. Что делают эти команды, думаю понятно из названия. Последние две строчки ibusdump показывают, что по шине передавались сообщения, которые я отправил через ibussend.


На этом остановлюсь, пожалуй. О том, что передаётся в полезной нагрузке кадра и для каких блоков управления я расскажу в другой раз.

BMW I-Bus K-Bus

Система управления мультимедийными устройствами в BMW.
Часто встречаются вопросы по подключению кнопок с руля к карпютеру, решил вот создать темку чтоб делиться наработками. Выкладываю то что нарыл.
Много вопросов возникает по поводу того какая именно шина управляет мультимедией I-Bus или K-Bus, ответ: в тех моделях где нет I-Bus там используется K-Bus например е46.

Существуют такова рода адаптеры ничто иное как USB адаптер/контроллер на основе микросхемы TH3122.4 которая конвертирует K(I)-Bus сигнал в TTL сигнал (TxD RxD) проще говоря служит для передачи данных с компьютера в Шину и с шины в комп.

С помощью такого конвертера коммуникацию с компом можно реализовать с помощью Arduino.

Теперь о том на чем я споткнулся: Читая PDF понимаю что все необходимое там есть но в виду того что программист с меня никакой то ничего с этим сделать не могу.

Цель такова: Имеем 6 кнопок на руле (остальные задействованы в управлении круиз контролем) нужен софт который бы принимал данные с шины и управлял назначенными функциями в компе и при помощи Arduino управлял магнитолой.

Софт представляю примерно так: имеем 6 кнопок. Софтина берет по протоколу I-Bus данные нажатия кнопок с адаптера и управляет пятью назначенными кнопками в компе (такая софтина по рассказам существует но я не нашел). одна кнопка постоянно управляет через Arduino одним выходом с запоминанием состояния для переключения (первое нажатие, второе и третье) между CD-AUX-FM. софт проверяет в каком режиме включен Arduino 1 2 3 и соответственно в режиме CD и FM софт не работает. В этих рижимах Arduino берет данные с адаптера и управляет пятью своими выходами на которые можно повесить основные кнопки магнитолы, в режиме AUX активируется софт (управление выходами Arduino дезактивируется) и управляет назначенными кнопками в компе (если вареант вашей установки без магнитолы на эти 5 выходов можно повесить что угодно)

Читайте также: