我创建了一个通过 flutter 宣传 BLE 的应用程序。
我使用了 flutter_bluetooth_serial 库。
我确认广告效果很好
“I/BLE 外设状态 (22874):广告”
flutter 日志中的消息。
但是我不知道如何在HM-10上识别我的手机
这是我的arduino代码。
AT 回复正常。
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
Serial.println("Starting BLE scan...");
mySerial.println("AT");
delay(1000);
mySerial.println("AT+IMME0");
delay(1000);
mySerial.println("AT+ROLE1");
delay(1000);
mySerial.println("AT+DISC?");
}
void loop() {
if (mySerial.available()) {
String response = mySerial.readString();
Serial.println(response);
int nameIndex = response.indexOf("+NAME:");
if (nameIndex >= 0) {
String deviceName = response.substring(nameIndex + 6);
deviceName.trim();
Serial.println("Device Found: " + deviceName);
}
}
}
我认为这里可能有两个主要问题:-首先,flutter_bluetooth_serial是一个经典的蓝牙库,因此不会被BLE中央设备扫描。您可能需要考虑使用 BLE 库(例如 flutter_blue、flutter_reactive_ble)。我对 flutter 没有太多经验,所以我会首先仔细检查 BLE 外设是否受支持。对于原型设计,您只需使用 nRF Connect 应用程序即可让您的设备充当 BLE 外设。
其次,一些 HM-10 文档似乎暗示您需要在 BLE 角色更改生效之前执行 AT+RESET。在尝试发现 BLE 外设之前,我会在您的代码中尝试一下。
以下是一些参考资料:-