我可以使用Arduino读取iBeacon数据吗?

时间:2015-07-08 06:26:33

标签: arduino ibeacon hm-10

我使用的是HM-10模块和Arduino UNO。

我的要求是使用Arduino从我附近的ibeacons读取数据。可能吗?我还没有找到任何关于此的文章。所有文章都谈到将你的Android手机与arduino连接起来。任何的想法?

3 个答案:

答案 0 :(得分:3)

是的,有可能。我使用HM-10作为iBeacon检测器(linksprite.com BLE 4.0屏蔽),它成功检测到在iBeacon模式下运行的RadBeacon。 HM-10上的固件版本为540.

在检测到RadBeacon之前,我必须向HM-10发送以下命令:

AT+ROLE1
AT+IMME1
AT+RESET

然后我用了AT-DISI?命令,并且串行监视器显示从RadBeacon(和另一个信标)接收的广播,如下所示(例如):

行+ 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不会这样做,因为它只能在外围模式下运行。]

答案 1 :(得分:0)

在HM-10的固件版本V539中,它添加了一个AT命令来列出附近的iBeacons。命令为AT+DISI?。您只需要设置Arduion以通过串行端口发送该命令并解析它返回的数据。

答案 2 :(得分:0)

是的,您可以获取附近iBeacons的最小和最大数量。 您需要将hm-10附加到Arduino Uno。

尝试使用此库:https://github.com/dinosd/BLE_PROXIMITY 如果要配置它,可以配置合适的AT命令。但它也适用于默认设置。

使用SoftwareSerial访问HM-10。