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(1)_Eddystone beacon的更多相关文章

  1. 玩转BLE(2)_使用bluepy扫描BLE的广播数据

    1. 前言 在linux平台下,bluez是一个很不错的软件,提供了很多基于命令行的测试工具,如hciconfig.hcitool.hcidump.bluetoothctl等.利用这些工具,我们可以方 ...

  2. 玩转BLE(3)_使用微信蓝牙精简协议伪造记步数据

    1. 前言 在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了): 物联网中的IOT设备有两个主要特点: 1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置.控制等功能). ...

  3. 蓝牙协议分析(8)_BLE安全机制之白名单

    1. 前言 在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险.想想下面的场景吧: 凌晨 ...

  4. 蓝牙协议分析(5)_BLE广播通信相关的技术分析

    1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用.关于广播通信,通过“玩转BLE(1)_Eddystone beacon” ...

  5. 1_BLE nRF51822 UART 与 BLE转发

    去年Noridc出了集成蓝牙4.0并能开口说话24L01通信芯片,这部电影可以非常小包装.和低功耗.非常适合于可穿戴设备,然后挖了一个免费的手在不久的将来AK II,又没了一个Becon的板子.先玩了 ...

  6. Bluetooth® Low Energy Beacons

    Bluetooth® Low Energy Beacons ABSTRACT (abstract ) 1.This application report presents the concept of ...

  7. BlueZ

    一.BlueZ在ubuntu PC上的基础应用 1.bluez的安装及基本功能 dong@ubuntu:~/bluez$ lsbluez-5.47.tar.xz   SPP-loopback.pydo ...

  8. [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

    蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...

  9. Android BLE 蓝牙编程(一)

    最近在研究这个,等我有时间来写吧! 终于在端午节给自己放个假,现在就来说说关于android蓝牙ble的 最近的学习成果吧!! 需要材料(写个简单教程吧--关于小米手环的哦!嘿嘿) Android 手 ...

随机推荐

  1. Matlab - 各种函数学习

    一.find函数 (1)find()函数的基本功能是返回向量或者矩阵中不为0的元素的位置索引. X = [1 0 4 -3 0 0 0 8 6]; index = find(X) 返回不为零的位置索引 ...

  2. 8.6 GOF设计模式四: 策略模式… Strategy Pattern

    策略模式… Strategy Pattern  在POS系统中,有时需要实行价格优惠, 该如何处理?  对普通客户或新客户报全价  对老客户统一折扣5%  对大客户统一折扣10%  注:课件 ...

  3. Vue之添加全局变量

    定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或 ...

  4. 使用cookie保存用户名和密码

    效果图如下 从数据库中随意使用一个账号登录 登陆成功来到人中心 返回登录界面 实现代码如下 package com.test.controller; import java.io.IOExceptio ...

  5. javascript高级程序设计第3版——第7章 函数表达式

    此张内容的难点在于闭包.而闭包又涉及到原型,原型链,执行上下环境,this的取值等知识点.(此章节对于闭包的内容篇幅较少,且写的很是艰涩难懂,推荐一位大牛的博客,对于闭包的前因后果以及作用机制写的很明 ...

  6. 解决Mac应用程序软件不出现在Launchpad里面的方法

    新装了几个软件,可是打开Lauchpad之后却在里面找不到,真是烦人!然后尝试了以下方法: 1.重启电脑,没用: 2.尝试打开“应用程序(英文名称:Applications)”并找到安装的软件,然后直 ...

  7. 通讯录管理系统(C语言)

    /* * 对通讯录进行插入.删除.排序.查找.单个显示功能 */ #include <stdio.h> #include <malloc.h> #include <str ...

  8. springboot配置视图控制器

    实现WebMvcConfigurer接口 /** * @descripte 配置自己的视图解析器 */@Configurationpublic class MyViewConfigController ...

  9. 3ci

  10. 【转载】Druid 介绍及配置

    原文链接:https://www.cnblogs.com/niejunlei/p/5977895.html 1. Druid是什么? Druid是Java语言中最好的数据库连接池.Druid能够提供强 ...