1

尝试在我的项目中使用蓝牙时遇到问题。在以前的版本中,我使用 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

我尝试使用以下应用程序

蓝牙终端

蓝牙专业版

蓝色SPP

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
4

1 回答 1

1

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

AT+BTSPPSEND
> SIMCOMSPPFORAPP
SEND OK

AT+BTSPPSEND=5
> HELLO
SEND OK

^Z

其中HELLO- 是您的数据,5inAT+BTSPPSEND=5HELLO字符串的长度。SIM800H_BT_Application_Note中的详细信息。

更新粗体选择,但答案的重要部分(感谢hlovdal

于 2018-01-15T16:05:26.257 回答