我使用的是HM-10模块和Arduino UNO。
我的要求是使用Arduino从我附近的ibeacons读取数据。可能吗?我还没有找到任何关于此的文章。所有文章都谈到将你的Android手机与arduino连接起来。任何的想法?
答案 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。