使用HM-10检测Estimot信标距离

Use HM-10 to detect Estimot beacon distance

我想让我的 Arduino+HM-10 在不使用 phone 连接的情况下检测 Estimote 信标距离,但我不确定是否可行。

我只能用HM-10检测信标吗? 我可以估算我的 Arduino+HM-10 和信标之间的距离吗?我知道 Apple 没有发布该算法,但我已经在 Android.

上使用 Cordova 应用程序估算了到信标的距离

是的,这是可能的。

您必须使用 RSSI 和算法,您必须根据要实现的目标来选择这些算法。

请找到我的答案 here,以获得更多详细信息,尤其是关于距离测量的 BLE 技术限制。

是的,可以使用比 v538 更新的固件(您可以通过命令 "AT-VERS?" 检查您的版本),这也很容易。

SoftwareSerial mySerial(8, 9); // RX, TX

//     Connect HM10      Arduino Uno
//     Pin 1/TXD          Pin 7
//     Pin 2/RXD          Pin 8

void setup() {
     Serial.begin(9600);
     mySerial.begin(9600);
}
void loop(){
     String message;
     if (Serial.available()) {
          c = Serial.read();
          mySerial.print(c);
     }
     if (mySerial.available()) {
          message = "";
          delay(10);
          while (mySerial.available()) {
          c = mySerial.read();
          message = message + c;
     }
          Serial.println(message);
}

这是与您的 HM10 建立连接的基本代码 [rx/tx 引脚可能有所不同]。如果您通过串行监视器发送 "AT",HM10 现在应该返回 "OK"。

您可能需要先将 HM10 设置为 BLE 中央设备,然后才能开始扫描信标。这是通过发送:

AT-ROLE1 //设置中心角色

AT-IMME1 //无需事先激活即可工作

AT-RESET //重启HM10

在那之后,如果您通过串行监视器发送 "AT-DISI?",HM10 应该开始寻找 iBeacons 并且(如果它找到一个)返回以下 [P's 是占位符]:

OK+DISC[P0:P1:P2:P3:P4]

此消息包含iBeacon的POWER(发送信号功率)和RSSI(接收信号强度),从中可以推导出到beacon的距离。

P3的最后2位是iBeacon的POWER,P4是RSSI值。 [注意:2个幂位是十六进制值,你需要先将它们转换成十进制值---数字应该在190左右]

最常用的测量 Beacon 之间距离的方法(据我所知)是:

distance = 10 ^ ((POWER-RSSI) / 10n) [n在2到4之间,我用2]

:) 希望对你的项目有所帮助,祝你好运。