从定制蓝牙设备发送命令到Android手机控制音乐播放器

时间:2013-10-05 22:51:47

标签: bluetooth arduino headset

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

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

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

我的意思是:

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

以下是Android使用的密钥代码的完整列表:http://developer.android.com/reference/android/view/KeyEvent.html

我可以创建一个单独的应用程序,它将读取传入的命令并模拟按下耳机按钮,但这不是我想要的。就我而言 - 一些耳机是即插即用的,这意味着Android设备上不必安装其他应用程序。以下是我目前用于向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的传入命令”创建一个侧面应用程序?

2 个答案:

答案 0 :(得分:4)

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

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

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

详细了解蓝牙配置文件。 http://en.wikipedia.org/wiki/Bluetooth_profile

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

希望这对你有所帮助。

答案 1 :(得分:1)

可能对你来说已经很晚了,但也许我可以帮助其他人。

首先,BT耳机,键盘等蓝牙设备被称为 HID (人机接口设备)。 HC05不是开箱即用的,但是 Evan Kale (链接:full explanation)引入的解决方案如何使用串行端口连接更新其中一个。

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