我正在使用 HM-10 模块和 Arduino UNO。
我的要求是使用 Arduino 从我附近的 ibeacons 读取数据。可能吗?我还没有找到任何关于此的文章。所有文章都在谈论将您的 android 手机与 arduino 连接。任何想法?
对的,这是可能的。我使用 HM-10 作为 iBeacon 检测器(linksprite.com BLE 4.0 shield),它成功检测到在 iBeacon 模式下运行的 RadBeacon。我的 HM-10 上的固件是 540 版。
在它检测到 RadBeacon 之前,我必须向 HM-10 发送以下命令:
AT+ROLE1
AT+IMME1
AT+RESET
然后我用了AT-DISI?命令,串行监视器显示从 RadBeacon(和另一个信标)接收到的广播,如下(例如):
OK+DISISOK+DISC:4C000215:2G234454CF6D5A0FADF2F4911BA9FFA7:00000001AC:0CF3EE041CCE:-052OK+DISC:00000000:00000000000000000000000000000000:0000000000:B9782E08068C:-071OK+DISCE
在这个例子中,HM-10 正在检测我的 RadBeacon,它的 UUID 为 2G234454...信号强度为 -052。它还检测到另一个 BLE 信标(我楼下的 AppleTV),UUID 为 B9782E08068C,信号强度为 -071。
我绝对不是很了解这些东西,但到目前为止它似乎对我有用。对我来说,下一个挑战是弄清楚如何解析接收到的文本数据。我最感兴趣的是距离/信号强度数据,以便在 RadBeacon 非常接近 HM-10 时触发动作。
[完全披露:我混淆了上面的一些 UUID 数字,因为我不确定这些信息是否是私人的或可破解的或其他]
[顺便说一下,nRF8001 BLE Shield 不会这样做,因为它只在外围模式下运行。]
是的,您可以获得附近 iBeacons 的最小和最大数量。您需要将 hm-10 连接到 Arduino Uno。
尝试使用这个库:https ://github.com/dinosd/BLE_PROXIMITY 如果你想配置它,你可以配置合适的 AT 命令。但它也应该使用默认设置。
使用 SoftwareSerial 访问 HM-10。
在 HM-10 的固件版本 V539 中,它添加了一个 AT 命令来列出附近的 iBeacon。命令是AT+DISI?
。您只需将 Arduion 设置为通过串行端口发送该命令并解析它返回的数据。