You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Flutter与HM-10的手机BLE外设识别问题求助

解决方案:让HM-10识别Flutter BLE广播的手机

1. 修正HM-10的AT指令配置(核心问题)

你的代码错误地将HM-10设置为从机模式(AT+ROLE1),只有主机模式才能主动扫描BLE设备。同时扫描指令使用错误,需调整如下:

  • 替换AT+ROLE1为AT+ROLE0(切换为主机模式)
  • 替换AT+DISC?为AT+DISC(启动扫描,而非查询扫描状态)
  • 新增AT+TYPE0设置通用扫描模式,避免过滤设备

修正后的Setup代码:

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);

  Serial.println("Starting BLE scan...");
  mySerial.println("AT"); // 测试模块通讯
  delay(500);
  mySerial.println("AT+IMME0"); // 非立即模式
  delay(500);
  mySerial.println("AT+ROLE0"); // 必须设为主机才能扫描
  delay(500);
  mySerial.println("AT+TYPE0"); // 通用扫描模式
  delay(500);
  mySerial.println("AT+DISC"); // 启动BLE扫描
}

2. 确保Flutter端广播符合HM-10扫描规则

flutter_bluetooth_serial默认广播可能缺少HM-10识别所需的关键参数,需明确配置:

  • 必须设置可识别的设备名称
  • 可选添加HM-10默认兼容的服务UUID(0000FFE0-0000-1000-8000-00805F9B34FB)

示例Flutter广播代码片段:

BluetoothAdapter adapter = await BluetoothAdapter.instance;
await adapter.startAdvertising(
  BluetoothAdvertisementData(
    name: "MyFlutterBLE", // 强制设置名称,HM-10依赖此识别
    serviceUuids: ["0000FFE0-0000-1000-8000-00805F9B34FB"], // 匹配HM-10默认UUID
  ),
);

3. 修复Arduino的响应解析逻辑

原代码用readString()易因HM-10分块响应导致解析失败,改为按行读取并匹配扫描结果格式:

void loop() {
  if (mySerial.available()) {
    String line = mySerial.readStringUntil('\n'); // 按行读取响应
    line.trim();
    Serial.println("HM-10 Response: " + line);

    // 扫描结果格式为 "+DISC:设备地址,设备名称,RSSI"
    int discIndex = line.indexOf("+DISC:");
    if (discIndex >= 0) {
      String result = line.substring(discIndex + 6);
      int comma1 = result.indexOf(',');
      int comma2 = result.indexOf(',', comma1 + 1);
      if (comma1 != -1 && comma2 != -1) {
        String deviceName = result.substring(comma1 + 1, comma2);
        Serial.println("Found Device: " + deviceName);
      }
    }
  }
}

4. 额外排查点

  • 确认HM-10波特率与Arduino的SoftwareSerial一致(均为9600),若之前修改过波特率,用AT+BAUD8重置回9600
  • 手机需开启蓝牙可被发现模式(部分Android版本需手动开启)
  • 测试时手机与HM-10距离不超过1米,避免信号过弱导致扫描失败

内容的提问来源于stack exchange,提问作者gms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:04:53