我使用以下组件创建了一个简单的蓝牙设备
我想知道是否可以从我的BT设备发送命令,好像这些命令是从蓝牙耳机发送的?
我的意思是:
以下是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的传入命令”创建一个侧面应用程序?
答案 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倍)