Хочу создать Bluetooth audio control (увеличение/уменьшение громкости, воспроизведение, пауза и т.д.) для смартфона

Я хочу создать пульт дистанционного управления Bluetooth для управления звуком смартфона, по существу идентичный по функции этому типу оборудования:

Bluetooth audio control

Это устройство представляет собой просто пульт дистанционного управления bluebooth, который позволяет воспроизводить или приостанавливать аудио, пропускать вперед или назад и изменять громкость мультимедиа на смартфоне.

Все учебники Arduino, которые я вижу, касаются либо использования iPhone для управления устройством bluebooth, либо использования Bluetooth для управления arduino, но ни то, ни другое я не хочу делать.

Можете ли вы указать мне правильное направление?

, 👍14

Обсуждение

Вам нужен экран BLE с поддержкой библиотеки для работы в качестве устройства Bluetooth HID., @Majenko

@Majenko Спасибо тебе! Это библиотека, которая нуждается в поддержке bluetooth HID, а не shield, верно? Или оба должны поддерживать это?, @Howiecamp

Оба должны поддерживать это., @Majenko

AVRCP обычно используется пультами дистанционного управления Bluetooth, а не HID. Однако не уверен, поддерживает ли BLE AVRCP., @Ignacio Vazquez-Abrams

@IgnacioVazquez-Абрамс - HID обычно используется для не аудио целей? Я не думаю, что для меня имеет значение, хорошо это или нет - это скорее вопрос того, смогу ли я достичь своей цели. Есть ли способ (посмотрев на диагностику и т.д.) узнать, является ли отдельное устройство (например, на рисунке выше) AVRCP и / или BLE?, @Howiecamp

Все они - AVRCP. У меня есть пульт дистанционного управления, который также выполняет функцию HID, но это для запуска камеры; управление звуком по-прежнему AVRCP., @Ignacio Vazquez-Abrams


3 ответа


Лучший ответ:

16

Bluetooth поддерживает несколько протоколов для нескольких целей. Существует низкая задержка низкокачественной монорельсовой двунаправленной связи с небольшой пропускной способностью для управления телефонными звонками по Bluetooth. Это называется протоколом HFE Bluetooth. Если вы взаимодействуете с клавиатурой или мышью, вы должны использовать протокол устройства человеческого интерфейса или HID. Если бы вы хотели слушать музыку и контролировать ее воспроизведение, вы бы использовали high latency high quality 2 audio sending channels (stereo) no return audio channel с небольшой пропускной способностью для управления воспроизведением, называемый Advanced Audio Distribution Profile или A2DP.

В данном конкретном случае нас интересует только управление воспроизведением. Таким образом, мы могли бы использовать протокол HID Bluetooth. Однако родные музыкальные плееры на платформе, которую вы используете (Android или iPhone), скорее всего, не будут слушать такое устройство. Для того чтобы это сработало, вам, вероятно, придется написать свой собственный музыкальный плеер для Android или iPhone.

С другой стороны, вполне вероятно, что родные музыкальные плееры будут работать с протоколом Bluetooth A2DP. К сожалению, также есть подозрение, что после установления Bluetooth-соединения A2DP динамик телефона будет отключен, и весь звук будет перенаправлен на Bluetooth-соединение.

Наконец, есть профиль дистанционного управления аудио / видео или AVRCP. Этот протокол используется для управления воспроизведением мультимедиа. Существует несколько версий этого протокола, поэтому функции, доступные для данного устройства / музыкального приложения, могут сильно различаться.

,

+1 хороший ответ. У меня есть кое-что добавить. Я протестировал управление мультимедиа через HID, и это работает для меня на Android. (Возможно, за последние 2,5 года поддержка HID улучшилась.) Это достаточно легко протестировать с помощью bluetooth-клавиатуры с мультимедийными кнопками. Возможно, HID проще реализовать, но я обнаружил один недостаток. Если я не нажал клавишу по прошествии нескольких минут, происходит задержка в обработке следующей клавиши. (Режим энергосбережения?) Одной из моих целей было пропустить рекламу подкастов, задержка сделала HID менее полезным для этой цели. AVRCP - лучший выбор, даже если его труднее заставить работать., @jimhark

Спасибо за +1. Предполагая, что устройства, которые вы используете, питаются от батарей, я задаюсь вопросом, можно ли избежать задержки, если бы вместо этого устройства были отключены от сети., @st2000

Я не тратил время на то, чтобы вникать в это, я только сделал некоторые предположения о задержке. Я тестировал с помощью клавиатуры BT, а не устройства, которое я запрограммировал. Клавиатура перейдет в режим ожидания, предположительно, для экономии энергии. Это указало мне на то, что поддержание полного соединения потребляло слишком много энергии, и поведение, по-видимому, определялось клавиатурой, потому что это было задокументировано в руководстве пользователя, после чего я посмотрел на AVRCP. Но теперь я читаю о профиле HID over GATT от BLE, HOGP, который поддерживается Android со времен KitKat. Для меня это выглядит как правильное решение., @jimhark


4

Я могу добавить что-то к отличному ответу @ st2000 (в лучшем формате, чем наше обсуждение в комментариях).

Первоначальный вопрос расплывчат. Означает ли Bluetooth Classic или является ли Low Energy (BLE) приемлемым или предпочтительным? Какие смартфоны необходимо поддерживать? Apple и / или Android? А какая минимальная версия должна поддерживаться?

2,5 года, прошедшие с тех пор, как был задан этот вопрос, облегчают выбор BLE, потому что усыновление сейчас так распространено.

Я исследовал, что потребуется для реализации устройства управления МУЛЬТИМЕДИА, как описано в оригинальном посте. Мой целевой смартфон - Android Nougat. Моя цель - пропустить рекламу подкастов. Я тестировал с помощью классической клавиатуры Bluetooth. Кнопки управления мультимедиа, Воспроизведение / Пауза, пропуск вперед, пропуск назад и т. Д., Похоже, делают то, что мне нужно.

Я бы предпочел использовать поддержку BLE для клавиатур и других устройств человеческого интерфейса: HID over Gatt Profile (HOGP). В примечаниях к выпуску KitKat говорится, что именно тогда была добавлена поддержка HID over GATT, так что она существует уже некоторое время.

Определившись с профилем Bluetooth LE, остается выбор устройства. Adafruit Bluefruit LE UART Friend имеет пример HIDKeyboard. Я предпочитаю MCU со встроенной поддержкой BLE. Хотя это полный перебор для этого приложения, у меня есть ESP32, который я планирую использовать для этого. Он имеет хорошую поддержку сообщества и стоит дешево. Если время автономной работы (или размер) станет проблемой, я буду искать меньшее устройство.

,

2

Я сделал это на HC-05 (перепрошивка на RN-42) и использую профиль HID для отправки команды: Play / pause fwd / rwd vol +/- При необходимости я могу опубликовать образец кода. Вот это видео https://youtu.be/y8PcNbAA6AQ

,

Пожалуйста, отредактируйте свой ответ, чтобы добавить пример кода., @VE7JRO

Я пытаюсь сделать то же самое, не могли бы вы поделиться своим кодом, пожалуйста?, @Bigood

Да, некоторые примеры кода были бы очень признательны., @Zeph

Было бы здорово опубликовать код Arduino, который показывает, как использовать AVRCP, если вы это сделали., @asylumax