我想让我的 Arduino+HM-10 在不使用电话连接的情况下检测 Estimote 信标距离,但我不确定这是否可能。
我可以仅使用 HM-10 检测信标吗?我可以估计我的 Arduino+HM-10 和信标之间的距离吗?我知道 Apple 没有发布该算法,但我已经用 Android 上的 Cordova 应用程序估计了到信标的距离。
我想让我的 Arduino+HM-10 在不使用电话连接的情况下检测 Estimote 信标距离,但我不确定这是否可能。
我可以仅使用 HM-10 检测信标吗?我可以估计我的 Arduino+HM-10 和信标之间的距离吗?我知道 Apple 没有发布该算法,但我已经用 Android 上的 Cordova 应用程序估计了到信标的距离。
是的,这是可能的,并且使用比 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]
:) 我希望对您的项目有所帮助并祝您好运。