基于Android平台上BLE的智能家居控制系统设计与实现
扫描二维码
随时随地手机看文章
引 言
近年来,随着物联网技术的发展和生活水平的提高,人们对居住环境的要求越来越高,智能家居随之成为物联网技术领域的一个重要研究课题,而家居系统的智能控制是其中的一个重要研究方向。低功耗蓝牙(Bluetooth Low Energy, BLE)是 2010 年推出的最新蓝牙版本,BLE 相对于传统蓝牙最大的特点是超低功耗,并且目前 BLE 的硬件成本已经降到一个合理水平,非常适合应用于智能家居系统控制领域,据Bluetooth SIG 高级市场总监柯瑞德分析,2013 年至 2018 年, BLE 的最大市场增长空间将会出现在智能家居系统领域。笔者研究了Android 手机 BLE 应用及智能家居控制,以智能插座为例,设计了一套基于 Android 智能手机的BLE 智能家居控制系统,实现对智能设备的实时控制功能。
1 Android系统中的 BLE
Bluetooth SIG 于 2010 年 6 月发布了蓝 牙 4.0 技术标准, 而 Android 智能手机全面支持 BLE 是在 2013 年 7 月Android4.3 系统发布后。相较于传统蓝牙,BLE 运行和待机功耗极低,一颗标准纽扣电池可以使其连续工作一年到几年时间。BLE 与传统蓝牙协议及开发差别较大,以下对BLE 通信协议及Android 中的BLE 开发做简单介绍。
1.1 BLE通信协议
低功耗蓝牙协议栈由控制器(Controller),主机(Host)和应用程序(Apps)组成,其协议栈如图 1 所示。各层的各种规范都基于 GATT 制定,它规定了发送和接收设备的各种属性值的方法。BLE 通信把各种属性表示为服务(Service)的集合,而每个Service 都由多个特征值(Characteristic)组成, Characteristic 可以理解为一个数据类型,它包括一个 value 和 0 至多个对此value 的描述(Descriptor)。BLE 在连接建立过程中可以分为中心设备(Central)和外围设备(Peripheral) 两个角色,Central 负责 scan advertisement,而 Peripheral 负责 make advertisement。在 BLE 连接建立后,两个连接的设备又可分为服务端(GATT server)和客户端(GATT client),发送数据的设备为Server,接收数据的设备为Client。
1.2 Android中BLE的开发
Android 平台的BLE 开发常用类如表 1 所列,开发主要包括以下步骤:
(1) BLE授权,为使应用能使用手机 BLE 功能,需要在AndroidManifest.xml 中进行授权。
<uses-permission android :name="android.permission.BLUETOOTH"/>
<uvses-permission android :name="android.permission.BLUETOOTH_ADMIN"/>
(2) 检查并启动BLE功能,验证手机是否支持BLE。如果支持, 通过蓝牙适配器 BluetoothAdapter来查看蓝牙是否已经开启, 也可以通过 Intent传递ACTION_REQUEST_ ENABLE参数调出蓝牙开启界面。
(3) 搜 索 BLE 设 备 , 使 用 BluetoothAdapter 的startLeScan方法配合 BluetoothAdapter.LeScanCallback回调参数进行BLE 广播搜索,搜索需要设置时间上限并在发现设备后停止搜索以减少电量消耗。如果只想搜索某些设备,可以加入一个 UUID 数组参数。
(4) 建立 GATT连接, 当搜索到设备之后, 可以使用BluetoothAdapter的getRemoteDevice方法根据 UUID获得目标 device,并通过BluetoothDevice的 connectGatt方法进行 BLE连接,之后即可进行数据交换。
2 系统设计
Android 智能手机作为智能家居控制系统中 BLE 通信的 主设备,负责搜索智能插座设备、发起连接、发送控制指令、 断开连接等操作。软件整体运行流程如图 2 所示。
Android 客户端主界面如图 3 所示,通过智能插座控制功能模块可以检查并打开手机蓝牙,添加设备,即开启 BLE 设备搜索,设置搜索时间上限为 180 s,发现插座设备后发起连接请求并进行密码配对验证,建立连接后把设备信息保存到Sqlite 数据库并添加到列表实现界面显示,之后可以点击开关按钮对插座通断电进行控制,即通过发送封装好的指定Service 代表通断电Characteristic 值。为实现多设备控制,在每次发送指令后断开 GATT 连接,当再次点击开关按钮时则先连接设备再发送相应指令。
3 实验结果及分析
3.1 功能测试
多次实验测试发现,在理想情况下系统实现了对集成 CSR1010 低功耗蓝牙芯片的智能插座通断控制功能。
3.2 性能测试
通过室内有障碍物及室外空旷环境下的实验测试发现, 系统在室内障碍物环境下有效控制距离为 13 ~ 15 米,室外 空旷环境下有效控制距离则达到 30 米以上,性能良好。
3.3 遇到的问题及解决方法
Android 智能手机 BLE 在建立 GATT 连接之后马上进 行 Characteristic 值传输有一定传输失败的概率。经研究实验, 在连接建立成功后延时 0.2 秒进行数据传输能使控制成功率 达到 99% 以上,使用效果良好。
4 结 语
本文介绍了一种 Android 平台上基于 BLE 的智能家居控 制系统,通过 Android App 控制集成了蓝牙芯片的智能插座, 整个系统结构明了、操作简单,经实验测试,系统对智能插 座通断控制准确、反应灵敏、控制距离优秀,完全能够满足 在室内复杂环境下工作的要求。