Замена магнитолы приус 30

Добавил пользователь Skiper
Обновлено: 19.09.2024


nester




Старик

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

Нормальной поддержки по обновлению и обслуживанию нет. Все прошивки пишутся чут ли не на смарте.
И слыхал я про типа : "У меня все нормально работает!"
Приходишь, смотришь. Млять так тормозит же. Что со спутниками? Ща поймает, подожди еще минуты две.
Что с видосом? Так смотреть ведь невозможно, нах нужна такая картинка.
- Нееее, нормально, мне хватает.
- Ну хозяин - барин. сколько стоило то?
- 27 тыс. (гордо так).
-


Mikxail007



nester




Старик

Родное ГУ то с нави чем не устраивает?


e.koh




Старик


История покупки магнитолы началась с того, что жена разворачиваясь поцарапала передний бампер о препятствие и задний о дерево в течении 10 минут.
Т.к. у меня на машине была самая простая для приуса магнитола, то на разные магнитолы я смотрел очень давно. Много читал про разные версии на приус клубе и 4pda.
В итоге для себя решил, что хочу 100% андройд, с мультитачем(емкостный тачскрин), да да, бывает его нет, я бы сказал, даже слишком часто встречаются.
Поиски на Алиэкспере были долгими, т.к. Корпуса у всех практически идентичные, а вот начинки СОВЕРШЕННО разные.
В основном есть 5 видов.
Процессор A8 слабоват, на андройде тормозит, чаще всего WinCE, так что сразу нет.
Процессор A9 более менее, но android это лишь надстройка, то есть навигация WinCE, USB воспроизводит с WinCE, зачем тогда нужен вообще андройд?
Процессор A10 тут выбор огромен, есть с 2мя операционками, есть с одной.
Т.к. я хотел, что бы была 1 операционка, то выбрал 100% Android.


Ещё из веселого "минивжик уехал к племяннице"


Как видно видео подгружается быстрее воспроизведения


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

— шумка капсулы
— камера передняя
— камера задняя -заказана
— парктроник звуковой -заказан


А началось все с того, что у меня появился Prius.

Родилась идея как-то соединить Android магнитолу с автомобилем более плотно, чем предлагают братья-китайцы. Об этом и статья.

Исходная ситуация

Итак. На борту имеется около 7-дюймовый дисплей с резистивным тач-скрином, соединенный с прочей электроникой линиями TX+ и TX-. И таких пар от головы идет аж 3. В схеме это чудо поименовано AVC-LAN, и выглядит следующим образом:


Часть 1: Осматриваемся внутри

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

Убрав все лишнее, получим примерно следующую блок-схему устройств:


Размышления

Встречались в сети решения с установкой китайской магнитолы вместо радиоресивера. Это меня не устроило тем, что два дисплея — необоснованная избыточность. Имхо.

Решение

Родилось следующее решение: заменить целиком голову, и доработать андроид-магнитолу, подружив ее с Prius-ом, для чего:

  1. Разработать аппаратный конвертер USB AVC-LAN
  2. Разработать firmware к нему, чтобы он подключался, как USB-HID.
  3. Сделать его composite, чтобы одна из функций детектировалась, как обычная аппаратная клавиатура (с целью использовать в качестве нативного управления с кнопок на панели)
  4. Разработать Android-приложение с функционалом, аналогичным (или превосходящим) родной, приусовский
  5. Согласовать работу задней камеры
  6. Решить задачи по механической части (установка на штатное место)

Выглядеть это все должно следующим образом:


В качестве аппаратной основы было решено использовать обучающую плату на SM32F103:


заказанную с AliExpress за $2.05.

Возможно, лот уже удален продавцом, поэтому даю магическую строку для поиска по Ali:
STM32F103C8T6 ARM STM32 Minimum System Development Board Module

Чем она мне нравится:

  • Аппаратный модуль USB(Device) на борту у процессора
  • Адекватный USB-стек от производителя (в отличие от Freescale-овского, не к ночи будь помянут).
  • Свободные порты GPIO, которые можно использовать для подключения штатных кнопок по бокам монитора. Возможно, это позволит скрыть под панелью аппаратные кнопки магнитолы. Я пока не знаю, какой она будет
  • И на нее можно навесить конвертер AVC-LAN в логические уровни

В любом случае, статей планируется несколько, в разных хабах. Проект получается уж сильно FullStack — от аппаратного подключения до андроид-приложения.

Часть 2: USB, HID, дескрипторы, и все, чтобы получить пилотный прототип

Первым этапом я хотел получить связку устройства и телефона, причем чтобы устройство могло передать пакет на телефон, а тот — отобразить его в приложении.
Как говорил Гагарин: Поехали!

USB HID Composite device на STM32

Взяв за основу CubeMX от STM, и прочитав много статей о том, как можно реализовать кастомный HID, я обнаружил в сети одну неприятную вещь: практически нет или весьма скудно рассмотрен вопрос создания составных устройств.

Исходные коды пока не выкладываю, по причине того, что проект сейчас реализуется в экспериментально-учебном режиме. Если проект будет успешно завершен — обязательно перетащу их на Github, и отредактирую статью ссылкой на оные.
В том виде, в котором они есть, выкладывать бессмысленно — бардака в интернете и без меня хватает.

USB, Composite, HID

Буквально несколько слов на эту тему. Предполагается, что Вы более или менее знакомы со стандартом USB. Если нет — лучше сначала ознакомится и поэкспериментировать с примерами из CubeMX.

Стек USB от STM и пример реализации мыши. Там у нас настроены какие-то дескрипторы и функциональная конечная точка. Это помимо пары 0x00 и 0x80 для управления устройством целиком.

Для реализации моего проекта требуется, чтобы конечная точка клавиатуры была двунаправленной (не знаю, зачем — пригодится) и еще пара конечных точек, которые будут использованы для обмена данными со второй — RAW — функцией. Добавляем их.

Делаем точку двунаправленной, добавляя в дескриптор точку OUT:

При правке дескриптора следите за индексами и размерами.
(2c5cf968121f0d8fa43a6755c09e15ef3a317791):

И добавляем еще пару точек:

Это был дескриптор конфигурации. Теперь хост будет уверен, что у нас есть некое составное HID-устройство, и во все эти точки можно слать данные. Но это пока не так.
Для того, чтобы это стало правдой:

1. В нашем контроллере есть специально выделенный кусочек памяти, который тактируется вместе с модулями CAN и USB. Учитывая, что модуль USB самостоятельно занимается процессом приема/передачи пакета данных, нужно задать ему буферы в этом кусочке памяти для каждой отдельно взятой конечной точки:

Адреса буферов произвольные, лишь бы не пересекались.

Почему-то стек от ST написан из расчета, что в устройстве будет не более одной двунаправленной конечной точки, потому чуть дорабатываем стек:

Передача

Процедуру USBD_HID_SendReport переименовываем в USBD_HID_SendReportEP, добавляя еще один параметр — номер конечной точки. Процедуру со старым именем оставляем для обратной совместимости, но в теле вызываем USBD_HID_SendReportEP с константой в виде конечной точки. Решение пока не самое эстетичное, но для эксперимента сойдет, и даже если и останется — конкретному проекту это жить мешать не будет.

Теперь для отправки данных все готово, остается лишь в нужный момент вызвать эту функцию.

Финализация

Порядка ради ищем по проекту и вызываем USBD_LL_CloseEP еще раз, но для вновь созданных конечных точек.

Прием

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

У меня в коде получилась вот такая вот некрасивая каракатица:

Т.е. я исходил из того, что номера конечных точек идут подряд. Это плохо, имхо. Не делайте так. Впрочем, и как ST тоже не делайте.

Дальше остается только сходить в файл usbd_hid.c, а конкретно в функцию USBD_HID_DataOut, и позаботится о том, чтобы вызов обработчика принятых данных соответствовал вашим личным представлениям о прекрасном. У меня получилось тоже не очень, поэтому код и описание получатся длинными и непонятными. Проще сделать самому.

Репорт


Этот репорт говорит HID-драйверу: тут будут какие-то 31 байт данных. Не нужно разбираться, что за они — просто отдай их открывшей это устройство программе. В физическом репорте нулевой байт будет равен индексу репорта (REPORT_ID (2)). Соответственно, всего придет 32 байта.


nester




Старик

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

Нормальной поддержки по обновлению и обслуживанию нет. Все прошивки пишутся чут ли не на смарте.
И слыхал я про типа : "У меня все нормально работает!"
Приходишь, смотришь. Млять так тормозит же. Что со спутниками? Ща поймает, подожди еще минуты две.
Что с видосом? Так смотреть ведь невозможно, нах нужна такая картинка.
- Нееее, нормально, мне хватает.
- Ну хозяин - барин. сколько стоило то?
- 27 тыс. (гордо так).
-


Mikxail007



nester




Старик

Родное ГУ то с нави чем не устраивает?


e.koh




Старик


А началось все с того, что у меня появился Prius.

Родилась идея как-то соединить Android магнитолу с автомобилем более плотно, чем предлагают братья-китайцы. Об этом и статья.

Исходная ситуация

Итак. На борту имеется около 7-дюймовый дисплей с резистивным тач-скрином, соединенный с прочей электроникой линиями TX+ и TX-. И таких пар от головы идет аж 3. В схеме это чудо поименовано AVC-LAN, и выглядит следующим образом:


Часть 1: Осматриваемся внутри

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

Убрав все лишнее, получим примерно следующую блок-схему устройств:


Размышления

Встречались в сети решения с установкой китайской магнитолы вместо радиоресивера. Это меня не устроило тем, что два дисплея — необоснованная избыточность. Имхо.

Решение

Родилось следующее решение: заменить целиком голову, и доработать андроид-магнитолу, подружив ее с Prius-ом, для чего:

  1. Разработать аппаратный конвертер USB AVC-LAN
  2. Разработать firmware к нему, чтобы он подключался, как USB-HID.
  3. Сделать его composite, чтобы одна из функций детектировалась, как обычная аппаратная клавиатура (с целью использовать в качестве нативного управления с кнопок на панели)
  4. Разработать Android-приложение с функционалом, аналогичным (или превосходящим) родной, приусовский
  5. Согласовать работу задней камеры
  6. Решить задачи по механической части (установка на штатное место)

Выглядеть это все должно следующим образом:


В качестве аппаратной основы было решено использовать обучающую плату на SM32F103:


заказанную с AliExpress за $2.05.

Возможно, лот уже удален продавцом, поэтому даю магическую строку для поиска по Ali:
STM32F103C8T6 ARM STM32 Minimum System Development Board Module

Чем она мне нравится:

  • Аппаратный модуль USB(Device) на борту у процессора
  • Адекватный USB-стек от производителя (в отличие от Freescale-овского, не к ночи будь помянут).
  • Свободные порты GPIO, которые можно использовать для подключения штатных кнопок по бокам монитора. Возможно, это позволит скрыть под панелью аппаратные кнопки магнитолы. Я пока не знаю, какой она будет
  • И на нее можно навесить конвертер AVC-LAN в логические уровни

В любом случае, статей планируется несколько, в разных хабах. Проект получается уж сильно FullStack — от аппаратного подключения до андроид-приложения.

Часть 2: USB, HID, дескрипторы, и все, чтобы получить пилотный прототип

Первым этапом я хотел получить связку устройства и телефона, причем чтобы устройство могло передать пакет на телефон, а тот — отобразить его в приложении.
Как говорил Гагарин: Поехали!

USB HID Composite device на STM32

Взяв за основу CubeMX от STM, и прочитав много статей о том, как можно реализовать кастомный HID, я обнаружил в сети одну неприятную вещь: практически нет или весьма скудно рассмотрен вопрос создания составных устройств.

Исходные коды пока не выкладываю, по причине того, что проект сейчас реализуется в экспериментально-учебном режиме. Если проект будет успешно завершен — обязательно перетащу их на Github, и отредактирую статью ссылкой на оные.
В том виде, в котором они есть, выкладывать бессмысленно — бардака в интернете и без меня хватает.

USB, Composite, HID

Буквально несколько слов на эту тему. Предполагается, что Вы более или менее знакомы со стандартом USB. Если нет — лучше сначала ознакомится и поэкспериментировать с примерами из CubeMX.

Стек USB от STM и пример реализации мыши. Там у нас настроены какие-то дескрипторы и функциональная конечная точка. Это помимо пары 0x00 и 0x80 для управления устройством целиком.

Для реализации моего проекта требуется, чтобы конечная точка клавиатуры была двунаправленной (не знаю, зачем — пригодится) и еще пара конечных точек, которые будут использованы для обмена данными со второй — RAW — функцией. Добавляем их.

Делаем точку двунаправленной, добавляя в дескриптор точку OUT:

При правке дескриптора следите за индексами и размерами.
(2c5cf968121f0d8fa43a6755c09e15ef3a317791):

И добавляем еще пару точек:

Это был дескриптор конфигурации. Теперь хост будет уверен, что у нас есть некое составное HID-устройство, и во все эти точки можно слать данные. Но это пока не так.
Для того, чтобы это стало правдой:

1. В нашем контроллере есть специально выделенный кусочек памяти, который тактируется вместе с модулями CAN и USB. Учитывая, что модуль USB самостоятельно занимается процессом приема/передачи пакета данных, нужно задать ему буферы в этом кусочке памяти для каждой отдельно взятой конечной точки:

Адреса буферов произвольные, лишь бы не пересекались.

Почему-то стек от ST написан из расчета, что в устройстве будет не более одной двунаправленной конечной точки, потому чуть дорабатываем стек:

Передача

Процедуру USBD_HID_SendReport переименовываем в USBD_HID_SendReportEP, добавляя еще один параметр — номер конечной точки. Процедуру со старым именем оставляем для обратной совместимости, но в теле вызываем USBD_HID_SendReportEP с константой в виде конечной точки. Решение пока не самое эстетичное, но для эксперимента сойдет, и даже если и останется — конкретному проекту это жить мешать не будет.

Теперь для отправки данных все готово, остается лишь в нужный момент вызвать эту функцию.

Финализация

Порядка ради ищем по проекту и вызываем USBD_LL_CloseEP еще раз, но для вновь созданных конечных точек.

Прием

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

У меня в коде получилась вот такая вот некрасивая каракатица:

Т.е. я исходил из того, что номера конечных точек идут подряд. Это плохо, имхо. Не делайте так. Впрочем, и как ST тоже не делайте.

Дальше остается только сходить в файл usbd_hid.c, а конкретно в функцию USBD_HID_DataOut, и позаботится о том, чтобы вызов обработчика принятых данных соответствовал вашим личным представлениям о прекрасном. У меня получилось тоже не очень, поэтому код и описание получатся длинными и непонятными. Проще сделать самому.

Репорт


Этот репорт говорит HID-драйверу: тут будут какие-то 31 байт данных. Не нужно разбираться, что за они — просто отдай их открывшей это устройство программе. В физическом репорте нулевой байт будет равен индексу репорта (REPORT_ID (2)). Соответственно, всего придет 32 байта.

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