Заветная коробка получена, магнитола установлена в автомобиль, всё играет и светится, но управление устройством с кнопок руля невозможно.
Конечно, можно оставить и так, можно привыкнуть управлять магнитолой с помощью сенсорного экрана, но мы-то хотели, чтобы было лучше, чем раньше, правда?
В сегодняшней статье разберём наиболее вероятные проблемы и доступные способы их устранения.
Устройство реагирует на нажатие кнопок, даже позволяет настроить их в приложении Обучение кнопок руля, но после настройки всех клавиш и подтверждения изменений не запоминает назначенные команды.
Если магнитола версии CC2, попробуйте обновить прошивку до последней версии по инструкции здесь.
Здесь многое зависит от того, шёл ли в комплекте с устройством CAN-BUS адаптер. Выглядит он так:
Для начала перепроверяем, подключен ли адаптер к клемме на большей косе проводов. Заодно где-то фиксируем для себя название адаптера, оно должно находиться непосредственно на нём: Raise (RZC), Simple Soft (XP), Hiword (HW), Xinbus (XBS), либо Binary (BNR) – это пригодится чуть позже. Также проверяем клемму C – она должна быть подключена к магнитоле.
Если всё на месте, пробуем настроить сам адаптер. Через меню устройства открываем Настройки, выбираем пункт Заводские настройки, вводим пароль 168.
Листаем меню чуть ниже, нам необходимо выбрать Модель автомобиля и Модель адаптера, - которую мы как раз шагом ранее где-то для себя записали.
Подробнее о заводских настройках в этом видео:
После произведённых манипуляций рулевое управление может начать работать сразу. А может и не начать, тогда устройство нужно перезагрузить: для этого открываем верхнюю шторку, проведя пальцем от верхнего к нижнему краю дисплея, в меню выбираем перезагрузку устройства. Вуаля!
В этом случае магнитола подключается напрямую, без цифровой шины.
Задача заметно упрощается: на устройстве открываем приложение Обучение кнопок руля. Нажимаем на любую из кнопок управления – в верхней строке приложения числа должны меняться.
Если значения изменяются, мы можем назначать действие для каждой из кнопок. Для этого зажимаем кнопку на руле, выбираем соответствующую ей команду на дисплее магнитолы. Как только обучение всех клавиш завершено, нажимаем галочку в правом нижнем углу экрана для сохранения настроек.
Если значения при нажатии кнопок не менялись – перепроверяем, надёжно ли физическое подключение: возможно, где-то контакты выходят в другую сторону, либо не защёлкнуты до упора.
Подключение надёжно, как швейцарские часы? Значит, ваш автомобиль всё-таки оснащается адаптером CAN-BUS.
А мы надеемся, что эта статья не была дочитана до конца, и проблема была решена в самом её начале. Или хотя бы пару абзацев назад.
1. Распиновка автомагнитолы на Андроид 10 (подключение)
2. Установка русского языка и даты
3. Изменение дизайна интерфейса
4. Активация двойного экрана
5. Эквалайзер, настройки звука и баланса
6. Скачивание и установка приложений
7. Подключение смартфона по MirrorLink (Phonelink)
8. Мультируль. Подключение нарульных контроллеров. Настройка мультируля на магнитоле.
9. Доступ к заводским настройкам
10. Подсветка сенсорных кнопок боковой панели
11. Настройка кнопок сенсорной панели
12. Как выбрать наилучший усилитель для магнитолы в авто
Для выбора русского языка (например после сброса настроек) войдите в Настройки через главный экран или вытяните панель управления сверху и выберите Настройки.
Если активирован английский язык (по умолчанию), то пролистайте меню настроек в самый низ:
More Settings -> Language & Input -> Language Settings -> Add a Language -> Нажмите значок лупы в правом углу -> Начните вводить “rus” (появится Русский), выберите его, нажмите Россия.
Теперь нужно перетащить строчку с русским языком на первое место. Зажмите эту строчку, она активируется, двигайте вверх, отпускайте. Все, русский язык активирован.
При этом режиме магнитола синхронизирует ваше текущее время автоматически при подключении к Wi-Fi. Для настройки даты можно нажать на часы на главном (домашнем) экране, либо зайти через настройки (если активирован русский язык):
Настройки -> Больше настроек -> Дата и Время -> Синхронизация по сети.
После чего нужно установить ваш часовой пояс (пункт меню ниже). Отобразится корректное время. Если магнитола подключена корректно, то ей больше не нужно подключаться к сети для синхронизации времени. Она сохранит настройки и благодаря постоянному питанию от аккумулятора будет сохранять текущее время. Время собьется, если магнитола будет полностью обесточена, тогда потребуется подключить ее к wi-fi и время опять станет корректным (дополнительные настройки пояса не потребуются).
Автомагнитолы на системе Андроид 10 (модели А750, А716, А660, А760) обладают встроенной возможностью изменения вида главного экрана и экрана приложений.
Для изменения дизайна и выбора одного из 16 вариантов главного экрана нужно:
Произведите аналогичные действия, находясь на экране приложений для изменения вида иконок приложений (6 вариантов).
Вы можете использовать одновременно два приложения на одном экране. Для активации функции «Сплит-скрин» зайдите в список запущенных приложений (1), прижмите нужное приложение и перетащите в нужную сторону экрана (на серый фон). Потом кликните на второе приложение, оно откроется на другой половине экрана. Для отмены потяните за ярлычок (2).
Чтобы попасть в раздел настроек звука нужно открыть меню Приложений и нажать иконку “Аудио настройки”. Также в раздел эквалайзера вы можете попасть, находясь в разделе Музыка (соответствующий значок в нижней части экрана).
Баланс звука – громкость при активированной камере заднего вида”, громкость Bluetooth настраивается в пункте “Настройки звука” (значок на вытягиваемой сверху панельке) или через “Настройки” -> Аудио (объем).
Для установки приложений из Play Market вам необходимо авторизоваться. Зайдите в Приложения -> Play Маркет – при первом входе начнется “Проверка”.
Важно! Убедитесь, что на магнитоле выставлено корректное текущее время и хороший сигнал wi-fi, иначе Проверка – выдаст ошибку.
Обратите внимание, что при первой авторизации процесс “Проверки” может выполнятся достаточно долго – около минуты. Пожалуйста, наберитесь терпения и подождите, пока на экране пропадет вращающийся круг и появится поле для ввода вашей гугл почты (аккаунта).
После авторизации в Play Маркет вы сможете искать и скачивать приложения, аналогично, как и на вашем смартфоне. Пожалуйста, учтите, что магнитола не обладает такой же высокой производительностью, как ваш смартфон и на скачивание и установку приложения может потребоваться больше времени. Пожалуйста, будьте терпиливы.
Для удаления приложения прижмите иконку этого приложения на пару секунд, появится окно с подтверждением удаления. Нажмите “Да”.
ВОПРОС: Процесс проверки при первой авторизации в Play Market происходит слишком долго.
В чем может быть причина?
ОТВЕТ: Такое возможно, если система запустила автоматическое обновление приложений при подключении к Wi-fi. Проверить это можно, вытянув верхнюю панель. В случае обновления под ней отобразится диспетчер загрузки обновления. Нужно подождать или отменить обновление вручную.
Функция подключения экрана телефона к магнитоле доступна через USB провод и через Wi-fi для смартфонов на Android. И только через Wi-fi для iPhone.
Обратите внимание, что сенсорное управление смартфоном через экран магнитолы возможно только при подключении через USB. Для вывода звука, необходимо параллельно подключить ваш смартфон через Bluetooth. При первом подключении потребуется сделать ряд действитй.
1. Откройте приложение phonelink на магнитоле (меню Приложения -> phonelink (на последнем экране).
2. Выберите Mobile phone QR code
Откроется QR ссылка для скачивания и установки приложения TimaAvn.
Перед подключением смартфона к магнитоле необходимо в настройках телефона зайти в режим разарботчика и включить опцию Отладка по USB, а также активировать пункт Отладка по USB (настройки безопасности) – это необходимо для управления телефоном через экран магнитолы. Данное действие проводится один раз.
Далее:
Дальнейшее подключение делается буквально в несколько кликов. Просто запустите приложения на смартфоне и на магнитоле, выберите режим и нажмите “Начать” на смартфоне.
4. Подключение Андроид смартфона через Wi-fi:Обратите внимание: Управление смартфоном через экран магнитолы при подключении по WIFI недоступно. Также скорость обмена информацией может быть ниже, чем при подключении через USB – изображение может передаваться с небольшой задержкой.
На моделях автомагнитол A750, A760, А716, A660 доступна функция подключения 2-х комплектов штатных кнопок управления на руле автомобиля. Если у вас нет нарульных контроллеров, то вы можете приобрести дополнительно нарульный пульт управления основными функциями магнитолы.
Для подключения мультируля нужно корректно определить два провода (или один), отвечающие за передачу сигнала от кнопок руля вашего автомобиля на магнитолу и провод заземления нарульных контроллеров.
Сделать это можно с помощью схемы распиновки вашего авто. Чаще всего данные провода на схеме могут обозначаться как:
После того, как провода определены, вам нужно:
На этом подключение мультируля завершено, теперь останется только провести обучение кнопок на магнитоле.
Зайдите в меню приложений и выберите “Кнопка рулевого колеса”.
Войдите в первый пункт “Кнопка выбора”.
Отметьте функции, к которым хотите привязать рулевые кнопки. Нажмите OK.
Нажмите “Начало”. Выберите функцию и продолжительно нажмите сооветствующую кнопку на руле. Должно появиться сообщение, что кнопка удачно определена. Также сделайте и с остальными функциями. После этого сохраните настройки – последний пункт.
Выйдите в главное меню и проверьте работу всех кнопок. При необходимости повторите процедуру.
Для доступа к управлению заводскими настройками перейдите в меню Настройки -> Заводская настройка, введите Код: 1234 (и нажать В порядке).
На данных моделях автомагнитол возможна активация подсветки сенсорных кнопок управления на боковой панели (только один лунный цвет).
Для активации подсветки:
Подсветка активирована.
Функции кнопок боковой сенсорной панели установлены по умолчанию, но может случиться, что по каким-то причинам данные настройки сбились.
Для установки функций сенсорной панели потребуется сделать несколько простых шагов.
Войдите в меню заводские настройки:
Выбор усилителя не менее не простая задача, чем выбор автомагнитолы для вашего автомобиля. В этом вопросе нужно быть подкованным технически. Предлагаем вам ознакомиться с главными понятиями усилителей, какие виды автоусилителей звука бывают, какие сегодня бренды наиболее популярны и надежны в этой нише.
И, главное, как выбрать подходящий именно вам усилитель звука в машину. Передя по ссылке вы узнаете, что такое одноканальные, двухканальные и 4-х канальные усилители и в чем отличие данных разновидностей. Также вам представится рейтинг различных многоканальных вариантов усилителей. Читайте о ТОП-20 лучших автомобильных усилителей на 2022 год.
Одна из проблем при замене заводского радиоприемника новым приемником заключается в том, что эти удобные элементы управления звуком, встроенные в рулевое колесо, не будут работать. работать больше.
Чтобы решить эту дилемму, установите адаптер для управления аудиосистемой на рулевом колесе, который мы предлагаем со скидкой при покупке совместимой стереосистемы. В этом видео мы познакомим вас с процессом установки.
Когда вы устанавливаете новую стереосистему в свой автомобиль, вы теряете ее преимущества — удобные элементы управления, встроенные в рулевое колесо. Это потому, что они подключены к заводской стереосистеме, и вы не можете просто подключить ее к задней панели новой стереосистемы.
Но что вы можете сделать, так это установить специальный адаптер, подобный этому, что мы и делаем сегодня. Этот адаптер позволяет этим элементам управления взаимодействовать с новой стереосистемой, чтобы вы могли использовать их так же, как и раньше.
Планирование проводных соединений
Я подготовился к этой установке и загрузил инструкции прямо с веб-сайта Axxess. На их сайте вы сообщаете им, какой у вас автомобиль, и они сразу сообщают вам, работает ли их адаптер с вашим автомобилем. И оттуда шаг за шагом, провод за проводом, то, что вам нужно сделать для установки. Я добавил цветовую кодировку, чтобы немного помочь себе.
Отключить аккумулятор
Я отключил аккумулятор и собираюсь открыть приборную панель, чтобы вытащить стереосистему. Вот для чего этот щенок. Отключение аккумулятора важно, и хочу отметить, по двум причинам. Во-первых, я не хочу рисковать, чтобы что-то замкнуть накоротко, чтобы моя приборная панель, стереосистема или кондиционер не работали. Во-вторых, в этой консоли есть датчик подушки безопасности, и я не хочу с этим связываться, так что я делаю работу правильно.
Снимите стереосистему с приборной панели
Я снял верхнюю панель, затем открутил пару винтов и снял главную приборную панель, обнажив радио. Затем еще четыре винта со стороны магнитолы, и она свободна. Теперь я могу добраться до всей проводки. Далее посмотрю адаптер. Открыв упаковку, я обнаружил инструкцию, пару жгутов проводов и, конечно же, сам адаптер.
Соедините жгут адаптера и вашу стереосистему
На первый взгляд эта подвеска выглядит немного устрашающе, но не стоит этого бояться. Вы не собираетесь использовать все эти провода. Во-первых, у вас, естественно, будет питание и заземление, а затем, в зависимости от вашего автомобиля, вы будете использовать один или два из этих проводов для подключения. Например, моя машина будет использовать эти два. Остальные не используются, и я могу просто заклеить их скотчем или отрезать, что захочу.
Остается большой черный кабель. Это кабель управления, который можно подключить к большинству стереосистем. Теперь мой — один из брендов, который не работает так просто, поэтому вместо этого они включают этот адаптер. Я подключаю его сюда, а затем подключаю один из этих двух коричневых проводов к проводу, который уже находится на задней панели моей стереосистемы. Не так уж плохо.
Переустановите стереосистему
Я использовал разъемы Posi-Tap, чтобы выполнить все соединения проводки между жгутом адаптера и моей стереосистемой. И теперь я собираюсь переустановить стерео. Итак, я подключаю его обратно. А вот и наш новый адаптер и жгут проводов. Подключи этого парня, поехали, и принеси его туда, где я смогу до него добраться за несколько минут.
Программирование адаптера управления рулевым колесом
Хорошо, мы закончили установку стереосистемы и адаптера, приборная панель снова собрана, и я вытолкнул адаптер через нижнюю часть приборной панели, чтобы я мог его видеть, потому что следующим шагом будет программирование адаптера. Он должен знать, в какой машине он находится и к какой стереосистеме он подключен. Для этого я включаю зажигание и наблюдаю, как адаптер Axxess начнет мигать. Как только это происходит, следуя инструкциям, я удерживаю кнопку громкости на руле и просто жду, пока он проходит свой темп, выясняя все, что ему нужно знать. И как только светодиод адаптера загорится ровным светом — перестанет мигать — все готово. После этого нужно протестировать кнопки, чтобы убедиться, что они работают. И они делают.
Вот как вы устанавливаете адаптер управления рулевым колесом. Потребовалось немного планирования и подготовки, но на самом деле это было не так уж и сложно. Я выбрал адаптер Axxess, потому что он мог сам себя программировать, то есть мог сам определять, какие кнопки на рулевом колесе управляют какими функциями стереосистемы, и это немного облегчало процесс.
Иногда это невозможно понять, и приходится делать это вручную, так что приходится заходить и говорить "Эта кнопка управляет треками. Эта кнопка управляет громкостью и т.д." Инструкции для этого включены, и это не так сложно. Это просто еще одна серия шагов.
Итак, адаптер работает, изменяя громкость на диске. Я могу менять треки. Это также позволит мне просмотреть источники. Я очень рад, что эти кнопки снова работают, и если вы собираетесь сделать это в своем автомобиле, я настоятельно рекомендую вам установить адаптер на рулевое колесо одновременно с заменой стереосистемы. Это просто сэкономит вам много работы. Когда будете готовы это сделать, позвоните нам. Наши консультанты позаботятся о том, чтобы вы получили адаптер, который подходит как к вашему автомобилю, так и к стереосистеме вашей марки.
В этой статье рассматривается автомобильный проект, в котором я подключаю неиспользуемые кнопки на рулевом колесе моей машины к микроконтроллеру, который, в свою очередь, эмулирует клавиатуру и мышь. к информационно-развлекательной системе автомобиля через USB.
tl;dr , кнопки образуют лестницу резисторов, и я использую черную плату STM32 для считывания состояния кнопок с помощью АЦП. STM32 эмулирует клавиатуру, потребительские и дигитайзерные USB HID-устройства, которые позволяют отправлять предварительно настроенные действия, как если бы их выполнял человек. Для написания прошивки используются PlatformIO IDE и Arduino framework.
Я езжу на Mazda 3 2010 года выпуска 2-го поколения. Как и следовало ожидать от модели 2010 года, она поставлялась со скучной автомобильной стереосистемой в старом стиле без сенсорного экрана. В прошлом году я заменил это штатное головное устройство на новое на базе Android. Это оказалось одной из лучших покупок, которые я когда-либо делал. Новое устройство работает под управлением Android 9, оснащено Wi-Fi, Bluetooth, GPS, USB, подключением передней и задней камеры и многими другими функциями. Я могу устанавливать на него приложения из Play Market и пользоваться подключенными сервисами. Это обновление действительно улучшило впечатления от вождения.
Головное устройство предназначено для управления мультимедийными кнопками на рулевом колесе, а также интегрируется с оригинальным мультимедийным ЖК-дисплеем. Дисплей отделен от головного устройства и установлен в верхней части приборной панели. На этом дисплее отображается текущая радиостанция, громкость и т. д. Для достижения этой интеграции головное устройство поставляется с интерфейсным блоком шины CAN.
Mazda продала несколько уровней автомобилей Mazda 3 2010 года выпуска в моем регионе. Базовая версия имеет рулевое колесо с одним набором кнопок для «мультиинформационного дисплея», который представляет собой еще один ЖК-дисплей, отображающий такие данные, как расход топлива. Более продвинутые версии Mazda 3 поставляются с рулевым колесом с 3 наборами кнопок, более красивой кожей и т. Д. Два дополнительных набора кнопок — это мультимедийные кнопки и кнопки круиз-контроля.
После обновления головного устройства я оказался в ситуации, когда знал, что оно поддерживает управление с помощью медиа-кнопок, но у меня их не было на руле. Интуиция подсказывала, что управлять головным устройством с руля явно безопаснее, чем с помощью кнопок на самом головном устройстве, поэтому я решил модернизировать руль.
Я провел небольшое исследование и обнаружил, что различные типы рулевых колес совместимы и что все разъемы одинаковы. Это имеет большой смысл с точки зрения стандартизации жгутов проводов и разъемов. Я купил подержанный руль от более продвинутой Mazda 3 2-го поколения, который был полностью разобран, и установил его в свою машину.
OldNew Как и ожидалось, мультимедийные кнопки теперь работали, и кнопки «мультиинформационный дисплей» также работали нормально, как и раньше, однако теперь у меня были кнопки круиз-контроля, которые ничего не делали. Они не давали родной функционал круиз-контроля и никак не регистрировались в бортовой развлекательной системе. Глядя на документацию (в основном руководство по ремонту, доступное в Интернете) и проверив разъем с помощью мультиметра, становится ясно, что каждый набор кнопок является отдельным, имеет свои собственные провода и идет к другому компоненту в автомобиле.
В Интернете есть упоминания о том, что включение круиз-контроля для модели, которая не поставлялась с ним, требует программирования блока управления двигателем (ECU). Я не хотел заходить так далеко, чтобы что-то менять в двигателе или ЭБУ, к тому же мне не нужен был круиз-контроль. Однако я подумал, что было бы здорово, если бы я мог использовать эти кнопки для общего использования с моим новым головным устройством. Для этого мне нужно будет получить «щелчки», обработать их и каким-то образом передать на головное устройство.
Итак, начнем. 😉
Я предпочитал вносить как можно меньше изменений в машину. Первый метод, который я попробовал, просто потому, что он минимально инвазивен, — это прослушивание шины CAN.
Автомобиль имеет две шины CAN, доступные в разъеме OBD2; высокоскоростная шина 500 Кбит/с и низкоскоростная шина 125 Кбит/с. Я использовал готовый модуль Bluetooth ELM327, а также Arduino с модулем шины CAN MCP2515 для подключения к шинам. Arduino запускает скрипт, основанный на arduino-can-reader, который пересылает сообщения на ПК через последовательное соединение, где скрипт python, основанный на python-can-monitor, красиво отображает сообщения на экране.
Мне удалось прочитать данные, такие как связь между головным устройством и мультимедийным ЖК-дисплеем. Попробуйте найти радиостанцию, которую я слушаю, на скриншоте выше ;). Однако ничего связанного с нажатиями на кнопки круиз-контроля или медиа-кнопки нет. Глядя на результаты сопоставления шины CAN Mazda, сделанные другими в Интернете (1, 2, 3, 4, 5, 6), я пришел к тому же выводу, что эти наборы кнопок сообщают напрямую связанным «клиентам» без использования шины CAN.
Прочитав руководство по ремонту автомобиля, я смог найти некоторую информацию о том, как работают кнопки круиз-контроля. На самом деле это очень хорошо задокументировано! Кнопки образуют резисторную лестницу (своего рода), которая проходит через часовую пружину (это устройство, которое позволяет электрическим соединениям проходить через вращающееся рулевое колесо), а затем непосредственно к PCM (модулю управления силовой передачей) AKA ECU. PCM имеет подтягивающее устройство на одном из соединений, которое в сочетании с сопротивлением кнопок образует делитель напряжения, поэтому PCM может вычислить, нажаты ли кнопки.
Это означало, что мне нужно было получить доступ к двум проводам и подключиться к ним. На схеме показано, какие положения в разъеме являются правильными. Очевидно, мы хотим постучать между часовой пружиной и ЭБУ, а не в той части, которая вращается. Разобрать рулевую колонку довольно просто. Как только я получил доступ внутрь, я смог измерить напряжение и сопротивление и убедиться, что у меня правильные провода. Я нашел то, что диктовало путь вперед. Система реализована таким образом, что провода подтягиваются только при нахождении ключа в положении ON (предпусковой или при работающем двигателе) и не подтягиваются в положении АСС (аксессуар) при включении магнитолы. работает, а двигатель нет. Оглядываясь назад, это имеет смысл, потому что зачем вам круиз-контроль, когда двигатель не работает? Это потребовало от меня обрезать и перенаправить провода, а не просто «нажимать» на них, потому что мне было интересно прочитать кнопки в режимах ON и ACC. Ничего страшного, я бы просто подтянулся позже в следующих разделах. Следует также упростить интеграцию, так как мне не придется иметь дело с каким-либо влиянием ECU, различными уровнями оснований и т. д.
Теперь, когда ЭБУ отсоединен от кнопок, вы можете задаться вопросом, является ли это проблемой, но на самом деле это была ситуация раньше руль был модернизирован. Обрыв цепи и короткое замыкание на этой паре проводов обозначаются соответственно как «не определено» и «отключено». По замыслу это способствует безопасности. Вы бы не хотели, чтобы круиз-контроль сходил с ума по вам, пока вы находитесь в дороге. Опять же, это не имеет большого значения, потому что эта функция все равно не включена в ЭБУ этого автомобиля, но теоретически у нас есть еще один уровень безопасности в случае неисправности.
Теперь у меня есть длинная пара проводов, которые я могу проложить в другое место в автомобиле, где я могу проверить состояние кнопок. Провода являются проводами данных и не будут нести значительный ток, поэтому нет необходимости в каких-либо специальных соединениях или других соображениях, связанных с питанием. Теперь, когда у меня есть доступ к кнопкам круиз-контроля, как я буду их использовать?
Сам по себе Android не имеет контактов «gpio» или АЦП, о которых я знаю и который я мог бы использовать для считывания состояния кнопок. Поэтому мне нужно было добавить какой-то микроконтроллер посередине, который бы взаимодействовал между аппаратными кнопками и головным устройством Android. Как я могу передать события кликов на Android?
Моей первой попыткой было эмулировать клавиатуру Bluetooth с помощью ESP32. Это оказалось довольно просто. Я следовал этому примеру проекта, в котором используется библиотека ESP32-BLE-Keyboard. К сожалению, головное устройство нельзя подключить к другим устройствам Bluetooth, так как оно само является устройством Bluetooth. Головное устройство обычно подключается к телефону водителя и работает как гарнитура и аудиоустройство. Таким образом, у нас есть клиент к клиенту ситуация.
Затем я подумал о создании соединения Wi-Fi между ESP32 и головным устройством и отправке событий щелчка с ESP32 на устройство по Wi-Fi. Чтобы реагировать на события, мне понадобится либо специальное приложение для Android на устройстве, либо использование чего-то вроде MacroDroid. Хотя у меня есть опыт написания приложений для Android, я решил, что это слишком сложно для масштаба этого проекта.
В конце концов, устройство, выполняющее интеграцию, должно быть каким-то образом запитано, скорее всего, через USB-соединение. Если мы все равно собираемся использовать разъем USB, мы могли бы также использовать протокол, а не только питание. Таким образом, победившим решением стала эмуляция USB HID (устройства с интерфейсом пользователя) с микроконтроллером. Это имеет несколько преимуществ: во-первых, это полностью проводное соединение и, следовательно, более безопасное и надежное, чем беспроводное соединение. Во-вторых, с HID легко эмулировать клавиатуру, а также другие типы HID-устройств, такие как мышь, дигитайзер (вроде мыши с абсолютными координатами), «потребительское» устройство и т. д. Потребительское устройство — это особый класс. устройства USB HID, которое может вызывать определенные предопределенные действия, такие как «Домой», «Стоп», «Печать», «Найти» и т. д. Это на самом деле важно, потому что часто это может быть самый простой или единственный способ вызвать определенную функцию .
В качестве примечания я также рассматривал возможность использования последовательного профиля USB, когда микро будет отправлять команды на Android через последовательное соединение через USB. Это решение также требует запуска приложения или службы в головном устройстве и показалось мне слишком сложным и ограниченным. Возможно, создание плагина MacroDroid или Tasker для последовательной связи может быть способом реализовать это. Может быть, использование чего-то готового, такого как AutoArduino от Tasker, поможет?! В конце концов, однако, вы будете ограничены действиями, которые может выполнять приложение автоматизации, поэтому этот подход не такой гибкий, как USB HID.
Поскольку ESP32 не имеет встроенной функции USB, для этого проекта мне понадобился другой микроконтроллер и плата. Платформа Arduino имеет функциональность USB-клавиатуры и мыши для некоторых плат Arduino, таких как Leonardo, Esplora, Zero, Due и MKR Family. Однако он не реализует потребительское устройство, а мышь является относительной, а не абсолютной, что весьма контрпродуктивно для выполнения макросов. Так что нам в любом случае понадобится библиотека. Одной из многообещающих была библиотека NicoHood HID.
Из-за вспышки COVID-19 поставки с Дальнего Востока очень медленные и ненадежные. Поэтому я искал то, что у меня уже было, что я мог бы использовать для реализации USB HID. Я нашел неиспользованную плату STM32F103 «черная таблетка», которая имеет родной USB, и решил, что буду использовать ее для этого проекта.
«Черная таблетка» Черная таблетка — дешевая макетная плата с микроконтроллером STM32. Если вы собираетесь использовать его с платформой Arduino, вы должны знать, что есть два популярных ядра STM32. Ардуино STM32 от Роджера Кларка основано на libmaple от LeafLabs и имеет более долгую историю. Определите «board_build.core = maple» в platformio.ini, чтобы использовать его. Второй более новый, но это официальный STM под названием «STM32duino». Определите «board_build.core = stm32duino» в platformio.ini, чтобы использовать его. Есть хороший обзор некоторых основ STM32, который вы можете прочитать, если собираетесь иметь дело с этой архитектурой.
Однажды на STM32 я нашел две библиотеки USB HID, которые показались мне подходящими. Первый — MediaKeyboard от onetransistor, а второй — USBComposite_stm32f1 от arpruss. Я выбрал библиотеку USB Composite, которая показалась мне более функциональной. Он работает конкретно с ядром Роджера. Он поддерживает массу типов USB; HID, MIDI, хранилище, последовательный порт, контроллеры, а в категории HID это может быть клавиатура, мышь, потребительский, джойстик и многое другое. Я попробовал устройство с абсолютной мышью, и хотя оно работало нормально на ПК, оно не работало на Android. После некоторых исследований и с помощью магии открытого исходного кода я добавил профиль для устройства дигитайзера. Теперь я мог отправлять касания, нажатия клавиш и потребительские события на Android. Это дает наибольшую гибкость, поскольку я могу автоматизировать все, что могу вводить пальцами. Единственным недостатком является отсутствие обратной связи, то есть микроконтроллер не видит экран и не получает состояние. Таким образом, вы работаете с головным устройством с закрытыми глазами.
Конечная цель состояла в том, чтобы подключить макетную плату к куску перфорированной платы, поместить все это добро в пластиковый корпус, подключить к кнопкам и USB-порту и поставить где-нибудь в машине. Назовем всю эту установку «устройством».
Первым шагом в создании устройства было создание схемы на макетной плате в лаборатории. Я сделал небольшую резисторную лестницу, используя несколько кнопок и резисторов, чтобы имитировать кнопки в машине. Сопротивление кнопок на руле было от 0 до 4,3 кОм. Чтобы сформировать делитель напряжения и оптимально использовать диапазон АЦП, я решил использовать подтягивающий резистор номиналом 4,7 кОм. Внутреннее значение подтяжки STM32 составляет около 40 кОм, что уменьшит эффективный диапазон напряжения, который будет генерировать эта установка. Внутреннее подтягивание тоже не такое стабильное, как внешнее. Таким образом, одна секция на перфорированной доске будет внешней подтяжкой.
Задача в этом проекте заключалась в получении точных показаний от АЦП черной таблетки. Я часто получал выбросы, которые казались щелчками кнопок, когда ничего не нажималось. Силовые шины были не очень стабильны. Другие компоненты будут влиять на показания АЦП, генерируя шум. Несколько причин тому:
Я предполагаю, что все эти проблемы являются результатом строгой цели по затратам. После всего. эта доска стоит около 3 долларов с доставкой. Чтобы решить некоторые из этих проблем, я внес следующие изменения:
Еще одна функция, которую я хотел иметь, — это звуковая обратная связь. Я хотел, чтобы устройство издавало звуковой сигнал, и желательно по-разному для разных типов нажатий (коротких, длинных, двойных и т. д.). Следовательно, другая секция на плате производительности будет содержать транзистор, резисторы и зуммер, необходимые для подачи простых звуковых сигналов. С программной точки зрения делать было нечего, так как ядро уже имело работающую реализацию функции тона.
Вся эта схема реализована на плате Perf, которая имеет разъемы для подключения платы разработки. Поскольку это проект USB HID, я выделил USB-порт для этой функции и использовал ключ ST-Link для программирования и отладки. устройство, а также использовал последовательный USB-адаптер для мониторинга потока отладки. Простой логический анализатор использовался для устранения проблем с шиной питания и электрического шума зуммера.
Пациент с дополнительными устройствами для разработки Прошивка для этого проекта находится на github, не стесняйтесь форкнуть. Код был написан с использованием IDE PlatformIO. Это не особенно сложно. Возможно, самая запутанная часть — это логика состояния для обработки нажатий кнопок. Я реализовал только обнаружение одиночных нажатий кнопок за раз (т.е. без комбинаций), хотя я думаю, что более одной кнопки можно обнаружить с достаточно стабильным АЦП.