0

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

我可以仅使用 HM-10 检测信标吗?我可以估计我的 Arduino+HM-10 和信标之间的距离吗?我知道 Apple 没有发布该算法,但我已经用 Android 上的 Cordova 应用程序估计了到信标的距离。

4

2 回答 2

1

对的,这是可能的。

您必须使用 RSSI 和算法,您必须根据您想要实现的目标进行选择。

在这里找到我的答案,以获得更多详细信息,特别是关于距离测量的 BLE 技术限制。

于 2016-08-29T11:44:36.713 回答
0

是的,这是可能的,并且使用比 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 是占位符]:

OK+光盘[P0:P1:P2:P3:P4]

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

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

测量信标之间距离的最常见方法(据我所知)是:

distance = 10 ^ ((POWER-RSSI) / 10n) [n 介于 2 和 4 之间,我使用 2]

:) 我希望对您的项目有所帮助并祝您好运。

于 2017-04-21T14:48:40.703 回答