尝试在我的项目中使用蓝牙时遇到问题。在以前的版本中,我使用 HC-05 模块进行蓝牙,它在任何设备连接后立即为我提供了一个简单的串行连接。现在项目发展了,我们选择使用 SIM800H,因为它为我们提供了 GSM+蓝牙。
当我连接任何安卓设备时,它会给我一些配置文件,但从来没有 SPP。我可以正常配对,但是在使用任何 SPP 服务器应用程序 ( https://stackoverflow.com/a/4037619/2637661 ) 时,我永远无法从我的设备发送或获取数据。如果我从 Android 应用程序开始连接,它说它正在连接,而 SIM800 给了我 URC,我回应:
+BTCONNECTING: "34:c7:31:aa:37:5b","SPP"
AT+BTACPT=1
OK
+BTCONNECT: 1,"Android",34:c7:31:aa:37:5b,"SPP"
但它保持在服务器模式,我不能使用命令 AT+BTSPPSEND 或 AT+BTSPPGET,如文档所述。
另一方面,如果我像文档所说的那样从我的设备开始连接:
AT+BTCONNECT=1,4 // Device is 1 and SPP profile is 4
OK
AT+BTSPPSEND
>I type anything here + ctrl+z
SEND FAIL
并在 Android 方面一无所获。
另外,在这两种情况下,连接都会在大约 30 秒后断开,除非我再次关闭 SIM800H,否则我无法重新建立连接。
使用APP模式也没有成功(连接成功后立即发送字符串“SIMCOMSPPFORAPP”进行透明通信)。
SIM800H 固件版本为
AT+CGMR
Revision:1309B07SIM800H32_BT
我尝试使用以下应用程序
GSM 端工作完美,我每次尝试都可以发送/接收 TCP 消息。
有没有人有使用这个模块的经验?谢谢阅读!
更新:
我正在使用一个简单的草图来与模块的序列号交谈,不知道它是否相关,但它就在这里。
#define SIM800_POWER 23
void setup() {
Serial.begin(9600);
Serial1.begin(19200);
Serial.print("Setting all up");
pinMode(SIM800_POWER, OUTPUT);
Serial.print(".");
delay(500);
digitalWrite(SIM800_POWER, HIGH);
Serial.print(".");
Serial.println("OK");
}
void loop() {
if(Serial1.available()){
Serial.write(Serial1.read());
}
if(Serial.available()){
Serial1.write(Serial.read());
}
}
在尝试了 Andrii 的回答后我得到了什么:
Setting all up..OK
AT
OK
AT
OK
AT
OK
AT+BTPOWER=0
OK
AT+BTPOWER=1
OK
AT+BTCONNECT=1,4
OK
+BTCONNECT: 1,"Will",d4:87:d8:77:37:0b,"SPP"
AT+BTSTATUS?
+BTSTATUS: 5
P: 1,"Will",d4:87:d8:77:37:0b
C: 1,"Will",d4:87:d8:77:37:0b,"SPP"
OK
AT+BTSPPSEND
> SIMCOMSPPFORAPP
SEND FAIL