![]() |
iCarDuino + MMI пульт AUDI
Ну что ж, начну свой рассказ ...
Хочу подключить пульт MMI от Audi к своему PCCar/ Подключать буду через Arduino https://duino.ru/arduino.html Основной задачей пульта будет управление в iCar. С отправкой и получением команд от пульта я разобрался ( Еще раз ОГРОМНОЕ СПАСИБО crashmilan ) Подключаюсь к пульту через терминал Extem. Настройки 9600,8,2. PHP код:
Вроде бы все хорошо, но как всегда без "НО" не обошлось... Попробовал по управлять iCar. Без бубна не обошлось. Для этого мне пришлось программно включать пульт через терминал( Для этого надо отправить на пульт команду 10 02 70 12 10 03 A7 и после этого можно получить инфу о нажатии кнопок) а потом запускать iCarDS и в настройках плагина назначать кнопки. Одна кнопка в iCar имеет несколько значений, но это как я понял из за того что плагин получает не привычное для него количество байт. А вот теперь расскажу про "НО"... Пытался сделать что бы пульт программно включала Arduino, а так же обработать полученные значения с кнопок и преподнести их в привычном для iCar виде, но так и не добился результата. Пробовал обрабатывать через switch case... вроде что то получалось, но отправить заветный код (10 02 70 12 10 03 A7) включения так и не смог, хотя код подтверждения (06) отправляется и пульт его прекрасно понимает. Прошу помощи у Вас, великие Гуру, разобрать с отправкой кодов на пульт. Вот пример общения в терминале: PHP код:
|
2 filinmd
Из общения в личке я понял, что ты уже сделал скетч который общается с ардуино и отправляет данные в плагин iCarDuino в нужном формате, а получается что ещё нет. Давай уточним такой момент. Когда пульт шлет это 67 1A 04 FA 27 C5 00 // Когда появляется питание на пульте он начинает посылать этот код, на который требуется подтверждение получения "06" Он это делает постоянно с каким-то временным интервалом или один раз и ждёт код подтверждения? |
Цитата:
67 1A 04 FA 27 C5 00 он шлет до получения 06 p.s. сейчас наткнулся на скетч для iBUS.... сижу разбираюсь, задачи похожи. |
Цитата:
с каким то временным интервалом (если да, то с каким примерно) или без остановки? |
Цитата:
Даю 12В на пульт и он начинает посылать этот код раз в секунду ( может и быстрее но терминал выдает его примерно с таким интервалом ). Если не посылать ему ответ то он отправит 20 таких кодов и уйдет в режим ожидания. По этому я ему сразу даю "06" и его это полностью устраивает и с ним у меня проблем нет. Проблема в отправке коде на включение, который нужно отправить пульту. |
ещё такой вопрос, все команды от пульта начинаются с байта 67, а заканчиваются байтом 00? Кроме кода подтверждения FE 00 разумеется
|
Цитата:
Единственный нюанс что работает только на скорости 9600. Теперь хотелось бы получить ответ от плагина: какое окно открыто. Хранить все коды связанные с пультом буду в скетче в таком виде PHP код:
Сейчас скетч причешу и выложу... |
Sorry,
I don't speak russian, How do you connect the arduino to your Aud MMI system (what electrical interface) |
Цитата:
16 pin ---- D2 15 pin ---- D4 Sketch in the next Post |
И так отчитываюсь за проделанную работу.
Ардуиной могу делать с пультом все что угодно :) Текущий скетч с демонстрацией возможностей. PHP код:
|
Цитата:
|
Еще одно, у тебя не верный код идет 67 FF 3A D2 BE F2 3D, нужно делать через ключ обязательно.
|
Цитата:
С крутилками вроде справляется нормально , но 1 байт я не учел, попробую с этим тоже разобраться. Если неизвестная то отправляет 06 |
Цитата:
И я так полагаю что не верный на фоне родных кодов? |
Цитата:
So it's not possible to use this arduino hardware into a fonctionnal MMI system ! |
Цитата:
Цитата:
|
Все сигналы от пульта должны начинаться с 10. В твоем случае ардуино видит не тот сигнал, плохо это или нет не знаю, но у сделано через ключ.
По возможности запиши видео работы крутилки в икаре. 1 байт советую учесть, у меня сделано так 1= up 1+1=up+up 1+1+1=up+up+up. |
Цитата:
Цитата:
Цитата:
|
Цитата:
2. Ну смотри 10025001100376 - up +1бит 10025002100377 - up+up +2бит 10025003100378 - up+up+up Если это учесть а не отправлять тупо 06 на эти сигналы, то ты сможешь быстрее прокручивать список без задержек на неизвестный сигнал. +1 байт идет на всех крутилках, максимум у меня получилось от начального когда + 7байт и на него я сделал тупо pgup ну или семь раз up. |
Цитата:
|
Цитата:
|
Вложений: 1
Цитата:
Вот этот ключ? |
Цитата:
|
Цитата:
|
Цитата:
Подключается параллельно. Данный скетч не подойдет, нужно его будет переделывать немного. В пративном случаи mmi не будет работать, а сделать чтобы все кнопки (media, radio) управляли компом нельзя при подключенном mmi. Я рассматривал один вариант, фильтрация сигнал через комп и отправка нужных сигналов на блок, к сожаления не получается это сделать нормально, очень большие задержки. При mmi возможен только такой вариант пульт только другой а смысл тот-же. |
Цитата:
|
Тут я не скажу, нужно смотреть даташиты на МК ибо ардуинами не страдаю ))). Могу предложить только ПИК типа PIC18F26J50, PIC18F47J53 (2 UART+USB) да еще и кучка других. Или смотреть в сторону AVR xMega...там куча уартов.
|
Цитата:
Конечно если сильно захотеть можно .... Но проще всего сделать параллельно. |
На скорости 9600 даже самый чахлый МК это сделает на раз...все зависит от ума программера. Скажем в моем DMX светодиодном димере на скорости 250000 AVR справляется без проблем.
Скажу одно...судя по скетчу прием байта с UART ведется в главном цикле...я предпочитаю делать по прерыванию, тем самым можно разгрузить МК для других задач. |
Цитата:
К сожалению скорость потока данных который идет от блока меняется, а если поднять скорость выше 9600 то данные получает комп не те. Если просто даже подключиться к пульту и любой программой считать ком порт, то увидите, что иногда код идет склеиваемый либо разбитый на несколько частей. Сделать четкий фильтр без тормазов я считаю не так просто. Мы с программистом (а он не ламер) пробовали тупо сделать пропускания через комп не трогая код, у нас не вышло, к примеру крутилка очень сильно тормозила. Даже если просто считывать долго код с пульта то можно увидеть что код иногда разбивается. К примеру код может идти 06 10 ..... а должен 06, 10... |
Цитата:
Скетч из-за этого переделывать пока не буду, так как не вижу смысла, при условии что пульт используется не в Ауди P.S. 2Bersenev Надо было все таки создавать отдельную тему :) |
перенёс в отдельную тему.
По передачи команд из икара в ардуино. Для универсальности сделаю в плагине команду, которая позволяет передать в ардуино любую шестнадцатеричную последовательность, допустим SendToDuino,1a_ff_ab_56_12 отправит в ардуино последовательность байтов 1A FF AB 56 12 а что с ними делать уже будешь решать сам. А в скине сделаю возможность при переходе на основные экраны и экраны встроенных программ или при смене медиаисточников выдавать эту команду. Значение последовательностей для каждого случая можно будет задать в ini файле. Выносить их в настройки скина не вижу смысла, всё таки редко кому нужна обратная связь. |
Цитата:
СПАСИБО!!! Можно еще добавить возможность выдавать эту команду после выхода из сна? |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Для начало надо подключить к компу по COM и посмотреть в терминальной программе настройки при которых пульт работает стабильно. Первый признак неправильной настройки это энкодоры UP и DOWN будут считаться с одинаковым значением. |
Цитата:
Я чуть позже переделаю скетч с учетом ключа и попробую на выходных в машине по тестировать. |
Теперь мучаюсь с получение "правильных данных" через транзисторный ключ.
Результат как то не радует и не понятен.... Согласно найденной информации на одном немецком форуме ( Сидел читал его с помощью Google перевода, это конечно ппц :) ) пакет должен выглядеть таким образом : 10 02 скетчем который я выкладывал выше получаю правильно из этого только первую половину, т.е. 10 02 Если читать скетчем, который представлен ниже то, первые несколько раз я получаю правильный код а потом опять только половину PHP код:
|
Цитата:
Допустим код не совпадает, но он (код) одинаковый при нажатие одной команды (допустим 10 раз подряд) или не стабилен? |
Часовой пояс GMT +4, время: 16:16. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot