我想让我的Arduino + HM-10在不使用手机连接的情况下检测Estimote信标距离,但我不确定它是否可能。
我是否只能使用HM-10检测信标? 我可以估算一下我的Arduino + HM-10和灯塔之间的距离吗?我知道Apple没有发布算法,但我已经估计了在Android上使用Cordova应用程序与灯塔的距离。
答案 0 :(得分:1)
答案 1 :(得分: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”。
在开始扫描Beacons之前,您可能需要将HM10设置为BLE中央设备。这是通过发送:
完成的AT-ROLE1 //设置核心角色
AT-IMME1 //应该在没有事先激活的情况下工作
AT-RESET //重新启动HM10
之后,如果您发送“AT-DISI?”通过串行监视器,HM10应该开始寻找iBeacons并且(它找到一个)回馈以下[P是占位符]:
行+ DISC [P0:P1:P2:P3:P4]
此消息包含iBeacon的POWER(发送信号功率)和RSSI(接收信号强度),从中可以扣除到信标的距离。
P3的最后2位包含iBeacon的POWER,P4是RSSI值。 [注意:2个Power数字是十六进制值,你需要先将它们转换成十进制值---数字应该在190左右)
测量Beacon之间距离的最常用方法(据我所知)是:
距离= 10 ^((POWER-RSSI)/ 10n)[n介于2和4之间,我使用2]
:)我希望你的项目有所帮助,祝你好运。