玩转BLE(1)_Eddystone beacon
作者:wowo 发布于:2016-4-29 22:50 分类:蓝牙
1. 前言
你相信两条命令就可以把自己的破手机变成一个Beacon节点吗?不相信的话就接着往下看吧。
通过前几篇“蓝牙协议分析”相关的文章,特别是“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”,相信大家对BLE协议栈已经有了基本的认识。在继续后续的分析之前,我们有必要换个视角,从应用的角度,以“玩”的心态,学习并理解BLE的工作原理,并作为后续分析文章的引子和入口。这就是撰写“玩转BLE”系列文章的缘由。
之所以起名为“玩转”,是因为我不会在这些文章中涉及任何的技术细节,仅仅是描述一些操作步骤,普及一些蓝牙BLE有关的使用场景。
另外,由于Linux平台使用的蓝牙协议栈是Bluez[1],Bluez协议栈提供了很多方便、灵活又强大的测试工具(如hcitool、gatttool等)。因此,简单起见,在写“玩转”系列文章的时候,我会尽可能的使用这些测试工具,而不引入复杂的编程手段。从另一个角度看,“玩转”系列文章也是BLE测试的一些步骤总结,方便自己和他人查阅。
本文是“玩转”系列文章的第一篇,以简单的两条hcitool命令,将自己的手机或者开发板变成一个BLE Beacon节点,进而体会BLE技术的简洁和神奇。
2. Eddystone beacon简介
Eddystone beacon是谷歌于2015年7月发布的、开源的、可以多平台使用的、挑战平台iBeacon的低功耗蓝牙Beacon技术。
本文将会直奔主题,介绍怎样把自己的手机或者开发板变成一个Eddystone beacon节点,并使用Android APP测试这个节点。如果读者需要了解Eddystone beacon的技术细节,可参考位于Github的Eddystone的source code及文档[2],或者参考本站后续有关的分析文章。
3. 创建Eddystone beacon
创建一个(或者多个,如果你喜欢)Eddystone beacon,需要如下条件和步骤。
1)一个具备蓝牙4.0(及以上)功能的、运行Linux系统的、具有Bluez协议栈、可运行hcitool命令的硬件,可以是:
一台运行Linux系统(如Ubuntu、Debian)的PC,自身具有蓝牙4.0以上的功能,或者配备一个蓝牙4.0的dongle;
一个具有蓝牙4.0功能的开发板,如树莓派3,或者树莓派2+蓝牙4.0 dongle;
一个具有蓝牙4.0功能的Android手机(现在大家使用的手机一般都支持蓝牙4.0,不过Android版本最好是4.3以下,因为4.3以上Android不再使用Bluez协议栈);
其它。
本文的例子所使用是一个破手机(酷派5872),刚好符合条件,呵呵呵,手机破就是好!!
2)一个具备蓝牙4.0(及以上)功能的、运行Android5.1系统的平板(或手机,或者开发板),用于运行测试用的APP
这个条件不易满足,大家尽量找吧,找不到的话,可以留言,我给大家推荐一些开发板,如S900 96board(此处不是广告,因为没有人给我广告费,呵呵)。
3)以我的手机为例,打开蓝牙功能,使用adb登录到shell(如果是其他环境,则不需要adb),输入下面两条命令:
# enable BLE advertising
hcitool -i hci0 cmd 0x08 0x000A 01# set advertising data to Eddystone UUID
hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 06 03 03 aa fe 17 16 aa fe 00 -10 00 01 02 03 04 05 06 07 08 09 0a 0b 0e 0f 00 00 00 00
没错,不要惊讶,你的手机已经变成了Eddystone beacon节点。本文先不解释这两条神奇的命令(后续蓝牙分析文章以此为例,分析蓝牙BLE的advertising功能,大家稍安勿躁)。
接下来让我们在Android上下载一个APK,查看我们的成果。
4. 使用Android APP测试Beacon功能
4.1 APP下载
Android具备蓝牙4.0功能,并且是Android5.1(及之后)的版本。测试用的APK有两个(我所知道的):
1)iBeacon & Eddystone Scanner
Google开发的,可以从Google Play下载运行(地址为:https://play.google.com/store/apps/details?id=de.flurp.beaconscanner.app&hl=zh_CN)。
如果你的Android设备不能访问Google Play,也可以通过在线APK下载网站(https://apkpure.com/)将APK下载到电脑后安装。
如果无论怎样你都下载不到,找我吧,我把下载后的APK共享出来。
2)EddystoneValidator
Eddystone的github出品,网址如下:
https://github.com/google/eddystone/releases/download/v1.0.0/EddystoneValidator-release-1.0.0.apk
4.2 安装APP并测试
本文以“iBeacon & Eddystone Scanner”为例,另一个我没有截图,就不描述了。安装成功后打开,点击右下角的扫描按钮,会扫描出Beacon设备的列表,如下:
点击列表中的Beacon设备,就会出现如下的状态界面:
各状态的具体意义,本文就不过多解释了,大家玩玩就明白了。
5. 参考文档
[1] bluez,http://www.bluez.org/
[2] Eddystone beacon spec,https://github.com/google/eddystone
[3] Google beacon开发者页面,https://developers.google.com/beacons/
原创文章,转发请注明出处。蜗窝科技,www.wowotech.net。
标签: BLE eddystone beacon hcitool

评论:
2017-11-15 16:53
一台运行Linux系统(如Ubuntu、Debian)的PC,自身具有蓝牙4.0以上的功能,或者配备一个蓝牙4.0的dongle;
------------------------------------
1. 这个dongle是市面上的蓝牙适配器吗,如果不是,请问从哪里可以买到呀。
2. 市面上也有好多接收语音的蓝牙4.0适配器,但是我比较迷茫的是,接收语音不是用的传统蓝牙的协议吗,如A2DP HFP等。为啥都说蓝牙4.0音响啥的呀,语音不是3.0及其以下的吗。
我们的需求是这样的:有一款csr8670的语音手环,另一端是嵌入式linux的接收器接收语音手环传过来的数据并解析处理。我是打算找一款蓝牙适配器,然后吧bluez移植到板子上,然后在上面开发,这种思路对吗。请蜗窝大神指点。
2017-11-15 17:00
是的,随便买一个都没问题。
2. 市面上也有好多接收语音的蓝牙4.0适配器,但是我比较迷茫的是,接收语音不是用的传统蓝牙的协议吗,如A2DP HFP等。为啥都说蓝牙4.0音响啥的呀,语音不是3.0及其以下的吗。
语音估计是要走传统蓝牙了。至于为啥说4.0音响之类的,意思是它支持4.0 BLE功能吧。
我们的需求是这样的:有一款csr8670的语音手环,另一端是嵌入式linux的接收器接收语音手环传过来的数据并解析处理。我是打算找一款蓝牙适配器,然后吧bluez移植到板子上,然后在上面开发,这种思路对吗。请蜗窝大神指点。
对。
功能
最新评论
- wangjing
写得太好了 - wangjing
写得太好了! - DRAM
圖面都沒辦法顯示出來好像掛點了。 - Simbr
bus至少是不是还有个subsystem? - troy
@testtest:只要ldrex-modify-strex... - gh
Linux 内核在 sparse 内存模型基础上实现了vme...
文章分类
随机文章
文章存档
- 2025年4月(5)
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)
2018-09-18 11:00