最近因为创客项目需要,所以自己研究了一些蓝牙模块。因为我自己是软件开发出身,对硬件了解得不多,对于蓝牙模块的了解可能更为接近于一个程序员的角度,当然也就不太全面了。但是过程中觉得还是有一些有价值的东西可以分享给大家的,特别是更适合程序员同学们。不专业之处,大家包涵。本文会随着我的知识积累不断成长更新,请给我时间。
这一篇会比较短,因为我所了解的iBeacon相关的部分并不多,或者说我觉得值得一说的似乎也并不多。原计划是混到Part 2里一起写的,但怕看起来太乱,所以还是写成另一篇了。
系列文章列表
一、试用蓝牙模块的一点经验整理(Part 1, 刷HM-10固件)
二、试用蓝牙模块的一点经验整理(Part 2, 蓝牙模块AT指令 )
三、试用蓝牙模块的一点经验整理(Part 3, 关于Beacon功能 )
下载资源
🚀 关于HM-10的其它相关资料,比如产品手册等,可以在这里😆下载。
🚀 CC41的相关资料,可以在这里😆下载。
iBeacon简单说明
这玩意是苹果先推出来的,我理解主要功能是让这个迷你设备变成一个超小型的“广播站”📡,让经过的人可以通过这个广播站得到一些有趣的信息。Beacon的英文意思是指灯塔、烽火这类东西,记住这个意思就能理解iBeacon功能的作用了。
那其实iBeacon是怎么实现的呢?其实中从使用者的角度来看,它很简单,让我用博物馆的场景来给你说明一下吧。
场景说明
🚩想像一下,你在博物馆,看到这支笛子,看完下面的说明文字,你有什么感觉?
贾湖骨笛,新石器时代裴李岗文化,1987年河南舞阳县贾湖遗址出土
如果说它是河南博物院最大重要的镇馆之宝,它还是国宝,而且它意义非凡,你敢信吗?
世界上最早的乐器贾湖骨笛
如果,你走到展柜前,手机📳上自动发了这条视频给你,当你看完上面的视频后,我想你就会感受到它的简单的外表背后的历史价值了。如果我们在博物馆,每走到一件展品前,都能有对应的讲解,这种体验是不是非常好呢?我想会有更多人喜欢上逛博物馆的。
实现方式
基于以上博物馆的场景,那iBeacon是怎么样实现的呢?关键在:
- 距离📏
- 信息✉
iBeacon📡会定期(1~3秒,这个时间可以设置的)向空气中广播信息📣,手机APP获得信息后就会去解读它。
但是一个展厅里有100个展品,那手机都收到了,怎么办?显示哪一个展品的信息?
1. 距离📏
其实很简单,蓝牙模块根据接收到的信号的强弱来估算iBeacon的距离,所以手机APP只要根据预设的要求,只处理在某个距离内离它最近的信息就可以了。
2. 信息✉
手机APP收到的信息中,最重要的包含了以下三项内容:
UUID,它长这样74278BDA-B644-4520-8F0C-720EAF059935,占16 Bytes,它并不是每一个iBeacon的唯一编号,我的理解它是用来区分应用类型。比如说在博物馆里,可能有多种iBeacon,它们的功能可能有:保安巡查打卡、室内导航、展品说明。这时,就有三种手机APP分别与这三种iBeacon互动。而观展者用的APP就只要处理那些UUID是“展品说明类”的信息了。这个UUID是我们自己随便定义的,只要不跟别人的应用一样就行了。
Major,它的值0x0001 ~ 0xFFFE,占2 Bytes,你可以将它理解为存放编号的地方。比如说,博物馆里有10个展馆,那我们为每个展馆定一个编号,这时Major就可以设定为展馆号了。
Minor,它的值也是0x0001 ~ 0xFFFE,占2 Bytes,它也是可以用来存放编号。在展馆里有多个展品,这里就可以为每一个展馆里的展品定义编号了。
所以一个展品的信息可能是这样的:
UUID: 74278BDA-B644-4520-8F0C-720EAF059935 //展品说明标签
Major: 0x0008 //8号展馆
Minor: 0x0104 //第260件展品,16进制的104等于10进制260
1️⃣ 手机APP取得这串信息
2️⃣ APP判断信息的UUID是不是它关注的
3️⃣ 如果是它关注的,就继续查看Major和Minor
4️⃣ 根据Major和Minor向服务器请求相关展品的数据(也有可能直接请求到页面的链接)
5️⃣ APP根据返回的信息,显示相关的文字和视频链接(如果是页面就直接显示页面)
iBeacon应用场景
据我所知,目前iBeacon的应用其实有2大类:
- 作为展品、商品、景点等介绍的标签使用。其实就是在每个要介绍的东西边上放一个iBeacon,设置好就行。
- 作为内部定位用,如停车场、园区、商场、医院等的定位。有了定位就可以实现各种衍生的导航功能了,如资产定位、车主找车、商场找店等。
当然,根据它的特性,我们还是可以发挥想像力来实现更多的功能啦。
iBeacon在蓝牙模块上开启的方法
本来想在这里多写一点,但是发现其实挺简单的。如果蓝牙模块支持iBeacon功能,那就根据AT指令说明,开启iBeacon就行了。同时要注意请将模块设置为从机。以下是CC41的AT指令,供你参考。