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


Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar

Ответ
 
Опции темы
Старый 10.01.2017, 22:33   #1
DelleTenebre
Старший Пользователь
 
Регистрация: 10.01.2015
Возраст: 25
Город: Бишкек
Регион: другой - для добавления сообщить ab
Машина: Subaru Outback
Сообщений: 114
DelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to behold
Lightbulb Android Open Accessory Protocol 2.0 и Raspberry Pi 3 (или любой linux)

После того как я разбил тач на Nexus 7 2013, а теперь сломалось запоминание канала HDMI на "народном" контроллере (+ отваливание хаба от, скорее всего, перегрева) появилась идея использовать вместо полной интеграции телефон с каким-либо крепежом. Первым делом подумал о том, что зае... устану постоянно подключать/отключать, но затем понял, что скорее всего нет, с учётом того что будет всего один кабель.

Идея, конечно же, не нова. Вопросы надо решить следующие:
  1. Зарядка телефона
  2. Как пустить звук
  3. Кнопки на руле (ну в целом управление)
  4. Возможная периферия (датчики температуры и т.п.)
  5. Камера заднего вида
Список выше составлен с учётом того что всё это уже было при "полной" интеграции.

1. Зарядка телефона
Всё просто - usb-кабель одним концом в телефон, другим в зарядник. Надеюсь что сработает.

2. Звук
Звук можно было бы пустить через предназначенный для этого разъём, но подключать два кабеля это перебор. Bluetooth... Bluetooth, в целом, это прекрасная штука. Но вот звук по bluetooth не всегда хороший. Я не претендую на экспертные знание в области bluetooth-звука, но есть у меня Alpine CDE-195BT и я пробовал соединение по BT. Не могу сказать, что качество ужас, но вот разницу с AUX слышу даже я со своими неаудиофильскими ушами. Причём, с Nexus 7 2013 было даже нормально, а вот с geekbox совсем никак. Я слышал про aptX, но поддержка должна быть и на "приёмнике" и на "передатчике".

Мне очень повезло наткнуться на проект USB audio dock for Android товарища Jacek Fedoryński. Посмотрев что к чему, расчехлил Raspberry Pi и решил повторить, тем более, что Android Open Accessory Protocol 2.0 решал почти все остальные проблемы из списка.

Сделав всё как в инструкции, я потерпел крах. Звук никак не хотел "идти" куда надо. Но! Сам протокол включался и телефон переходил в режим AOA2, и звук с него просто пропадал, значит он уходил к RPi, а он (пирог же, в переводе) уже лажал и не отдавал звук. Этот факт вселил в меня надежду и я начал дебажить RPi. Опытным путём было установлено что не пашет PulseAudio. Ну как не пашет... если после подключения телефона самому выполнить команду:
PHP код:
pactl load-module module-loopback source=`pactl list sources short | grep alsa_input.usb | cut -f 1
то звук чудесным образом появлялся, но вот автоматически никак не хотел. Не хотел и от root'а. Я не знаток linux систем и не знаю от чьего имени выполняются скрипты из правил udev, но все возможные варианты сделать PulseAudio системным демоном/дать права всем пользователям положительного результата не дали.

Ситуация с PulseAudio меня деморализовала. В тщетных попытках нагуглить решение с PulseAudio я натыкаюсь на проект AndroidCarAudioDock. Меняем проблемную строчку на:
PHP код:
(sleep 1s alsaloop -P hw:1,0,-C hw:2,0,-f S16_LE -r 44100 -t 50000 -S 2)& 
и всё работает. С чувством того, что я великолепен, слушая через RPi маршрутизованную музыку с android'а, начинаю доводить скрипты до совершенства (в моём понимании совершенства). Этот процесс вынуждает довольно часто переподключать телефон и далеко не сразу я заметил, что при каждом подключении, примерно через 30 секунд, мой ласкающий слух маршрутизованный звук зловеще превращался в тишину. Не хотелось бы показаться тупым, но эту проблему я решал два дня. Почему я не посмотрел системный лог сразу - не знаю, видимо сказались праздники и чрезмерно интенсивный отдых ... В общем, сейчас уже не вспомню как точно, но ключевым словом было timeout и путь до скрипта с alsaloop (который отвечает за маршрутизацию звука). Погуглив "udev timeout script" нашёл решение, что запустить скрипт можно с помощью утилиты at:
PHP код:
echo /path/to/script.sh at now 
и звук уже не пропадает. Проблема, ну на сколько я понял, такая: udev'у нужно чтобы скрипт что-то вернул, чаще всего: ноль - всё хорошо, отрицательные числа - что-то пошло не так. Например exit 0 в конце скрипта. Можно ещё запуск команды в фоне ( ... )$. Я честно всё перепробовал, но timeout срабатывал. Заработало только когда запускал через echo ... | at now.

В итоге получается, что по одному кабелю идёт зарядка (хоть и максимум 0.5А) и транслируется звук. К RPi можно подключить DAC или взять звук с HDMI и подключить в AUX.

3. Кнопки на руле
4. Возможная периферия (датчики температуры и т.п.)
Наверное можно объединить в один пункт. На счёт периферии все понятно, как подключать всякие модули к RPi информации куча. Плох тот факт, что у RPi нет аналогового входа, что осложняет подключение резистивных кнопок, находящихся на руле (ну и может быть каких-либо датчиков, которые Вы захотите подключить). Но есть куча вариантов решения, в том числе готовые модули.

Передавать информацию с этих датчиков оказалось очень просто, учитывая тот факт, что я чуть-чуть умею писать программы, в том числе на Python и Android

AOA Protocol 2.0 сам умеет запускать нужную программу при подключении телефона к чему либо. Примерно так:
  1. Подключаем usb-кабелем Android к ЧёрномуЯщику (назовём так).
  2. ЧёрныйЯщик понимая что к нему что-то прицепилось по USB, посылает пакеты с информацией: название, производитель, версия. И ещё что он хочет принять аудио.
  3. Если подключенным устройством оказался Android, то он отсылает версию AOA протокола, отдаёт звук (если может), и пытается запустить программу соответствующую этому конкретному ЧёрномуЯщику (так как уже знает название, производителя и версию).
Всё, дело в шляпе. Пишем программку типа моего ненавистного SerialManager'а, получаем и обрабатываем команды.

5. Камера заднего вида
Лично для меня это просто "Смотрите что ещё у меня в машине есть", а все "Ничего себе Как такое возможно".

Есть вариант подключения. Принцип такой - при включении камеры релюшки отключают Android от RPi и подключают OTG с Easycap. Более элегантного решения я придумать не смог.


---- Промежуточный итог ----
Мой репозиторий: https://github.com/delletenebre/AndroidCarAudioDock (описание пока что от форкнутого AndroidCarAudioDock)
Программа для android как прототип уже работает.
Кстати, для облегчения подключения заказал такие магнитные адаптеры.

На данный момент это просто эксперимент. Медленно продвигающийся. Возможно, что всё заброшу.

Кто что думает?
__________________
Подсолнух (github) для авторегулировки яркости экрана по позиции солнца
Serial Manager для обработки данных с Arduino

Последний раз редактировалось DelleTenebre; 10.01.2017 в 23:11.
DelleTenebre вне форума   Ответить с цитированием
Старый 11.01.2017, 11:14   #2
sandr2010
Гуру
 
Регистрация: 13.11.2011
Возраст: 53
Город: Волгоград
Регион: 34
Машина: Mitsubishi RVR, Chery Tiggo
Сообщений: 1,266
sandr2010 is a jewel in the roughsandr2010 is a jewel in the roughsandr2010 is a jewel in the roughsandr2010 is a jewel in the rough
По умолчанию

Хм,я во всем этом не силен,но интересно что умеет ваша программа под андроид. Можно ли с ее помощью управлять с андроида магнитолой работающей с AOA протоколом? Магнитола/рессивер JVC.
sandr2010 вне форума   Ответить с цитированием
Старый 11.01.2017, 18:30   #3
DelleTenebre
Старший Пользователь
 
Регистрация: 10.01.2015
Возраст: 25
Город: Бишкек
Регион: другой - для добавления сообщить ab
Машина: Subaru Outback
Сообщений: 114
DelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to behold
По умолчанию

sandr2010, вряд ли. У JVC есть приложения "JVC Smartphone Control" и "JVC Music Play", и если они позволяют управлять самой магнитолой, то, теоретически, можно реверс-инжинирингом найти и повторить этот функционал. Но может оказаться, что магнитола запрашивает только аудио и тогда ничего не получится.

Вообще, лично мне стало более-менее понятно что такое AOA на следующем примере - есть настольная лампа, к этой лампе по USB можно подключить android-устройство, при подключении будет запущена программа с помощью которой можно изменять яркость лампы. А если купить настольную лампу старшей модели, то из приложения можно уже управлять RGB-лампочкой. Т.е. из приложения можно управлять только тем, что реализовано в "железе" и предусмотрено разработчиками. А если писать своё приложение для управления чужим "железом", то нужно точно знать какие команды отправлять.
__________________
Подсолнух (github) для авторегулировки яркости экрана по позиции солнца
Serial Manager для обработки данных с Arduino
DelleTenebre вне форума   Ответить с цитированием
Старый 12.01.2017, 01:25   #4
Митрич18
Старший Пользователь
 
Регистрация: 24.01.2013
Возраст: 42
Город: Москва
Регион: 77, 97, 99, 177
Машина: лексус
Сообщений: 422
Митрич18 is a glorious beacon of lightМитрич18 is a glorious beacon of lightМитрич18 is a glorious beacon of lightМитрич18 is a glorious beacon of lightМитрич18 is a glorious beacon of lightМитрич18 is a glorious beacon of light
По умолчанию

Возьмите самсунг с доком, зачем изобретать велосипед со звуком и картинкой?
http://www.pccar.ru/showthread.php?t=23409
Митрич18 вне форума   Ответить с цитированием
Старый 12.01.2017, 12:43   #5
DelleTenebre
Старший Пользователь
 
Регистрация: 10.01.2015
Возраст: 25
Город: Бишкек
Регион: другой - для добавления сообщить ab
Машина: Subaru Outback
Сообщений: 114
DelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to behold
По умолчанию

Так у меня штатного монитора нет. Можно поставить, но будет не очень бюджетно и на японском (если заказывать, то совсем не бюджетно). Тем более что он в принципе бесполезен - показывает расход, напоминает о тех. осмотре (тупо по километражу), и навигация без карты моей страны.

Опять ставить планшет не хочу по причине, что в стандартную рамку мало что помещается (~175мм в ширину) не выглядя "колхозом", для Nexus мне пришлось подпиливать воздуховоды, что и стало в последствии причиной треснутого тача.

7" панель на "народном" контроллере, в принципе, хорошее решение. Но у меня просто так, без каких-либо предпосылок, перестал запоминать HDMI. Возможно опять вернусь к этому варианту, заменив контроллер. Товарищ ancc, мне, к сожалению, не отвечает на счёт прошивки.

Глобально, предложенное мной решение для тех у кого нет монитора.
__________________
Подсолнух (github) для авторегулировки яркости экрана по позиции солнца
Serial Manager для обработки данных с Arduino
DelleTenebre вне форума   Ответить с цитированием
Старый 12.01.2017, 13:22   #6
awtoap
Гуру
 
Аватар для awtoap
 
Регистрация: 19.09.2009
Возраст: 38
Город: Мелитополь
Регион: Украина
Сообщений: 1,900
awtoap has a spectacular aura aboutawtoap has a spectacular aura aboutawtoap has a spectacular aura about
По умолчанию

Цитата:
Но у меня просто так, без каких-либо предпосылок, перестал запоминать HDMI. Возможно опять вернусь к этому варианту, заменив контроллер. Товарищ ancc, мне, к сожалению, не отвечает на счёт прошивки.
Это уже не раз обсасывалось...короче найди/спаяй прогер для SPI Flash, считай прошивку что есть, купи новую Flash, залей в нее и запаяй вместо старой...профит. Или найди того, кто это сделает.
__________________
Мой сайт www.avkdevices.com.ua
awtoap вне форума   Ответить с цитированием
Старый 12.01.2017, 14:19   #7
DelleTenebre
Старший Пользователь
 
Регистрация: 10.01.2015
Возраст: 25
Город: Бишкек
Регион: другой - для добавления сообщить ab
Машина: Subaru Outback
Сообщений: 114
DelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to beholdDelleTenebre is a splendid one to behold
По умолчанию

awtoap, спасибо за совет, буду иметь в виду. Но меня больше напрягает возможность повторения этой неприятности. Плюс ко всему надо что-то решать с отваливающимся хабом и стабильность GPS не очень нравится. Поэтому и озадачился подключением любого android-телефона.
__________________
Подсолнух (github) для авторегулировки яркости экрана по позиции солнца
Serial Manager для обработки данных с Arduino
DelleTenebre вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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