SIM800H上的蓝牙SPP配置文件

时间:2018-01-15 15:28:41

标签: android bluetooth at-command sim800

我在尝试在项目中使用蓝牙时出现问题。在之前的版本中,我使用HC-05模块进行蓝牙处理,它在任何设备连接后立即给我一个简单的串行连接。现在项目已经发展,我们选择使用SIM800H,因为它为我们提供了GSM +蓝牙。

当我连接任何Android设备时,它给了我一些配置文件,但从不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

我尝试使用以下应用

  

Bluetooth Terminal

     

Bluetooth spp pro

     

BlueSPP

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的answer之后我得到了什么:

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

1 个答案:

答案 0 :(得分:1)

似乎AT+BTSPPSEND没有任何参数只适用于AT命令从客户端(您的SIM800H)发送到服务器(其他SIM800,而不是您的Android设备,除非您的Android设备实现AT命令支持)。对于数据发送,您应在收到AT+BTSPPSEND符号发送>关键字后使用SIMCOMSPPFORAPP,然后在收到SEND OK响应后发送命令{{1然后,在收到AT+BTSPPSEND=<LENGTH_OF_YOUR_DATA>符号后,将您的数据发送到>代码,例如:

Ctrl+Z

其中AT+BTSPPSEND > SIMCOMSPPFORAPP SEND OK AT+BTSPPSEND=5 > HELLO SEND OK ^Z - 是您的数据,而HELLO中的5AT+BTSPPSEND=5字符串的长度。详情请见SIM800H_BT_Application_Note

<强>更新 选择粗体小但是答案的重要部分(感谢hlovdal