Комментарии 47
Спасибо за статью!
Хочу пожелать удачи в реализации!
Скажите, а протокол обмена по CAN у Вас уже есть? Или Вы планируете дампить и вылавливать нужные команды? В любом случае проект очень интересный и буду ждать продолжения.
Спасибо. Очень надеюсь, что хватит сил допилить.
Голова не подключена к CAN. Только AVC-LAN. Это гибрид, созданный злым умыслом компании (если правильно помню) NEC. Это тоже планирую в след. статью, но пока делаю снифер. В нете есть статьи по этой шине, но инфа скудная, хотя для начала помогла. Думаю, будет интересно добавить реальных данных в сеть.
Судя по фото голова послерестайловая, у меня просто был 20 приус и я заморачивался установкой камеры, как выяснилось существует 6 разных голов, 2 дорестайловые и 4 послерестайловые. И все они различаются, та что была у меня не могла получать видео напрямую с камеры, в систему пришлось добавлять штатный блок парковки, вот он то какраз конвертил видео картинку в формат для головы и по этому же каналу передавал сигнал о том что пора вывести изображение. Так что схемы то да есть, но от той ли они головы. А так удачи в проекте, как закончите к вам в очередь встанут владельцы всех гибридных лексусов и не только. А кстати блок парковки нашёлся на автосайтах буквально за 500р.
Да, голова послерестайловая. И видеоинтерфейс — это что-то кошмарное и пропиетарное. Со сменой головы, надеюсь, необходимость в нем отпадет.
Очень хочется помочь себе и братьям-приусоводам.
Я ж хочу не просто картинку. Я хочу снять оковы с рук, вставить открытую систему. А там и нави, и заметки, и плей-маркет.
Там, на сколько я помню с блока автопарковки ещё идут контакты на рулевую рейку с которой он берет информацию о её положении и скорее всего ею же и управляет, а информацию он берет что б нарисовать сверху картинки с камеры линии направления парковки, когда рулём вращаешь эти линии движутся и указывают направление, думаю для этого и нужен огород со своим стандартом, причём те провода должны быть экранированы и картинка там идёт в каком то подобии RGB потому если как во время работы отключить 1 из проводов картинка зеленеет или краснеет как при отключении одного канала цвета в фоторедакторе. соответственно без этого блока автопаркинг работать не будет, + тем кто хочет себе поставить атопаркинг, нужно проверить какая у него рулевая рейка по-тому, что их как минимум 2 вида с разным колличествлм контактов, и та что с меньшим не сможет парковать автомобиль. Не помню где именно встречал реализацию такой системы, ставили какой то пк в систему изображение с которого подавали на блок автопаркигна и соответственно в голову, на экран сверху накладывали ещё один тачскрин и соответсвенно ставили кнопку переключения на вывод изображения с камеры и отключение родного тачскрина. А управление с руля для сторонних пк для Тойоты давно уже реализовано.
А огород с тачскринами видел — тоже мне не понравился. Все-таки хочется чего-то, что пусть будет сложнее в разработке, но при этом избавит от бутербродов и наслоений.
Я убежден, что простота и надежность находятся в прямой зависимости.
Управление с руля реализовано даже в китайских шарманках. В этом сложностей нет — там цепочка резисторов, и АЦП на входе.
Задача — реализовать шататные ф-ции тойоты на китайце.
«Насколько я помню» — значит ли это, что можете помочь схемами подключения блока автопарковки?
Это было 2 года назад, конечно, но думаю посмотрев на разъёмы и схему, подскажу, что куда.
Пока не знаю, как оставить работать парк-ассист при моей реализации. Возможно, придется искать до-рестайловый.
А что там с шинами? Тоже АВЦ-лан, или CAN-ом обошлись?
Созрейте на статью! Думаю, будет интересно не только мне!
У себя в машине поставил китайскую ГУ и у неё есть модуль CAN, через который ГУ общается с шиной машины, выводятся сообщения, с кнопок руля управляется и т.д. Неужели для примуса китайцы не сделали такую интеграцию?
Нет. AVC-LAN — это отдельный мутант (см. коммент выше). В приусе три шины (CAN, BEAN, AVC LAN), и маршрутизатор между ними. Костыльно-велосипедный девелопмент. Впрочем, это ж — гибрид.
Да, именно поэтому я начал с HID. Забегая вперед: пока разрешение нужно выдавать только при переподключении устройства (или при перезаливке ПО). Пока не понял, где андроид теряет его, но когда apk-шка не трогалась, и устр-во не отключалось — запускается тихо. RAW-HID остается hid-ом.
Идея использования COM порта сегодня мне тоже не нравится — слишком много "но".
Сейчас есть некоторые наработки по сниферу, все это будет в одной из двух след. статей. Пока не знаю, с какой начать: андроид-снифер или физическое поключение к avc-lan. В любом случае, с моим свободным временем, до след. статьи недели три пройдет.
Хороший пример, с пояснениями.
То, что там запрос делается при старте — андроид еще дает поставить галочку «всегда использовать программу для этого устройства». И, как я понял, при перезапуске автоматом выдает разрешение на этой строке:
_usbManager.requestPermission(_usbDevice, mPermissionIntent);
Как-то странно это звучит. Там же и управление климатом, и отображение режимов работы батарей и двигателя, и навигация. Для навигации, как я понял- картинка формируется внешней системой (блок навигации) и передается по доп интерфейсу.
Но вот что с климатом?
Или вот что с картинкой с задней камеры? В штатной голове Приуса картинка формируется с отображением траектории с учетом положения руля. Можно реализовать это и китайской шарманкой, но где-то нужно взять информацию о положении руля, если ты хочешь выводить линии подсказки на изображение камеры…
Таким образом, я пока не вижу, как еще может передаваться управление климатом (и усилителем, к слову), и полагаю, что все это идет по AVC.
А адаптер двунаправленный, т.е. может не только получать, но и передавать информацию.
В планах, соответственно, сделать некое climat.apk, которое запускается по внешней кнопке, открывает этот девайс, и общается с машиной через описанный в статье переходник.
По кнопке «инфо» на руле, соответственно, запускаем info.apk, и слушаем состояние машины на предмет информации о батарее.
Хотя, не исключаю, что это будет и Android-сервис, обрабатывающий устройство, а в систему отдающий уже некий API. Это все предстоит установить экспериментальным путем.
Сейчас ведется работа над, собственно, снифером, после — реверс шины, и уж тогда будет решение.
Конечно, можно было бы воткнуть BT-CAN (OBD2) переходник, и получать те же параметры, но я сторонник архитектурно-совместимых решений, а голова подключена в приусе _только_ к AVC-LAN. Т.е. вся эта информация передается по ней.
Что касается согласования камеры с линиями положения руля — да, это отдельная (возможно, достаточно масштабная) задача. Потому что я пока не знаю, кто именно рисует эти линии — голова или блок парковки. Если голова — то информация о положении руля тоже должна приходить по AVC. Если блок парковки — будет сложнее. Тогда придется и его функционал частично подменять/повторять.
Линии парковки рисуются с информации от рейки и рисуются в блоке автопарковки, выше уже написал.
Сегодня попробую посмотреть на разъемы.
- распустить звук на 4 канала
- прикрутить управление с руля (сервис)
- AV-видеовход для камеры заднего вида
- Корпус с креплением (желательно — металл)
- GPS
Думаю, это не весь перечень, но я посчитал достаточным для того, чтобы не заморачиваться.
Впрочем, решенеие с адаптером позволит желающим пойти и этим путем. В моем случае это опасно тем, что проект уж слишком затянется.
Ох, этот скрин на первой фотке вызвал такой приступ ностальгии — на первой работе после универа как раз ковырялись с этой с позволения сказать "операционкой" :-)
Дичайшая штука как по начинке, так и по сборке, собирается чуть ли не дольше хромиума, тонны легаси и самый старый исходник в репозитории датированный 1995, зато заводится и работает на всём от одноплатников до айфонов.
Которая изначально на навигаторе
Даже если бы я помнил, то рассказывать бы права не имел :-)
В подкорке вроде бы на тот момент было что-то на базе Yocto Project, ну а поверх этого уже крутилась вот эта надстройка графическая, внутри которой все приложения запускались.
Понравилось, как там в одном месте была реализация вызова SIGSEGV, чтобы отдать ошибку на верхний уровень — что-то типа
void throw_error(error_s *error) {
GLOBAL_ERR = error;
typedef int func(void);
func* throw = (func*)(0xdeadbeef * arc4random() + APP_MEM_SIZE);
throw();
}
А вообще, например, есть вот такие приложения на телефоны — по сути, это и есть эмулятор оного майфуна в модели с тачскрином и 4 хардварными кнопками :-)
А вызов забавный, однако. Надо взять на вооружение. Простенько, и в том месте, где 0xdeadbeef — вполне можно передать идентификатор исключения :)
Приложенька, насколько я понял, эмулирует только навигационную составляющую майфуна (если даже не сам модуль навигации)? Если так — не, не интересно. Идея, как раз, эту самую навигацию вышвырнуть ко всем чертям японским, вместе со всеми их необновляемыми картами для регионов и машин, и поставить Я или G навигатор.
А куда там этот идентификатор передашь-то, если оно на рандом домножится — потом не вытащишь.
Приложение чисто навигатор, но вырезано ли всё остальное на стадии билда — вопрос. В одной аркадной игре тоже оконную подсистему и режим разработчика на стадии билда повырезали, но против лома вставки на ассемблере не попрёшь :-)
А карты, по крайней мере здесь, вполне себе обновляемы с дисков у официалов, правда ценник кусается. Поэтому у знакомого в тойоте аж три навигатора — родной в авто с картами начала 00х, ибо удобно на ходу управлять, телефон с гуглом ради пробок и прочего, и какой-то гармин пятилетней давности, потому что "ну смотрю в комиссионке прикольный девайс за два косаря лежит, чё бы не взять"
А куда там этот идентификатор передашь-то, если оно на рандом домножится — потом не вытащишь.
Так прикольный же — способ. Можно ж и не домножать, и тогда в обработчике SEGV получим вполне себе адрес попытки доступа )
но вырезано ли всё остальное на стадии билда — вопрос
не, ну это уже мы плавно переходим к извратам ))))
А карты, по крайней мере здесь, вполне себе обновляемы с дисков у официалов, правда ценник кусается
Ну, собственно, вот… я имел ввиду: «давайте считать иррациональное — невозможным» :-)
А покупать статическую карту без пробок сегодня, когда есть бесплатные онлайн-сервисы… нет, это слишком плохо для того, чтобы исполнять. Да и искал я карту официальную. Для моей модели этот регион не покрыт. Для других тойот, что продаются в РБ — пожалуйста. Собственно, такой вот цепочкой размышлений я и решился на начало проекта. В качестве профитов — опыт написания приложенек для андроида, к которому все не мог подступиться долгое время.
Медиасистема для Toyota Prius (рестайл)