5

我使用以下组件创建了一个简单的蓝牙设备

  • HC05模块
  • Arduino Uno 板(带有可重新编程的微控制器)

我想知道是否可以从我的 BT 设备发送命令,就好像这些命令是从蓝牙耳机发送的一样?

我的意思是:

  • 我们发送 0x00000055 键码 - 音乐暂停(KEYCODE_MEDIA_PLAY_PAUSE)
  • 我们发送 0x00000058 - 上一首歌曲开始播放(KEYCODE_MEDIA_PREVIOUS)
  • ...

这是 android 使用的键码的完整列表:http: //developer.android.com/reference/android/view/KeyEvent.html

我可能可以创建一个单独的应用程序,它将读取传入的命令并模拟耳机按钮按下,但这不是我想要的。就我而言——有些耳机是即插即用的,这意味着安卓设备上不需要安装额外的应用程序。这是我目前用来向 Android 手机发送命令的代码:

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

enum { LED_PIN = 6 };
enum LedState { LED_ON, LED_OFF, LED_BLINK };

LedState led_state;

void setup()
{
  led_state = LED_OFF;
  pinMode(LED_PIN, OUTPUT);

  pinMode(9, OUTPUT);
  digitalWrite(9, LOW);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

const int COMMAND_MUSIC = 85;

void loop()
{
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(100);

delay(10000);

// trying to play or pause once in 10 seconds
BTSerial.write(0x00000055);
//BTSerial.print(0x00000055, HEX);

}

两个设备都已配对,但我手机上的音乐播放器不受这些命令的影响。是否可以在不为“来自 BT 的传入命令”创建辅助应用程序的情况下控制音乐播放器?

4

2 回答 2

4

问题是您的主板是否支持 AVRCP 控制器 BT 配置文件?

如果是这样,您“仅”需要连接您的手机 AVRCP 目标 BT 配置文件。当您有 AVRCP BT 连接时,有指定的命令如何暂停和跳过歌曲。

这就是“即插即用”耳机的作用。

阅读有关蓝牙配置文件的更多信息。 http://en.wikipedia.org/wiki/Bluetooth_profile

查看您的代码,您已经设置了一个指向电话的串行链接。此链接使用 SPP 配置文件,您将只能通过该链接发送原始数据。如果这是您的 Arduino Uno 板上的 BT 堆栈的唯一配置文件,您将被迫在手机端创建一个应用程序,以便能够读取原始数据并对其执行某些操作,例如暂停音乐。

希望这对你来说没什么大不了的。

于 2014-04-23T06:57:42.847 回答
1

对你来说可能为时已晚,但也许我可以帮助别人。

首先,蓝牙耳机、键盘等蓝牙设备被称为HID(人机接口设备)。HC05 不是开箱即用的,但Evan Kale介绍了一个解决方案(链接:https ://www.youtube.com/watch?v=BBqsVKMYz1I )如何使用串行端口连接更新其中一个。

其他解决方案是购买BT HID模块,但它们更贵(约10倍)

于 2018-02-16T13:47:32.210 回答