集成式低功耗智能家居系统的设计与实现

2019-10-08 11:55乔明泽边凯宸王世喆
软件 2019年8期
关键词:树莓派微信小程序蓝牙

乔明泽 边凯宸 王世喆

摘  要: 为了降低智能家居系统的配置成本,并通过集成式的解决方案,尝试缓解智能家居市场的碎片化问题,提高用户的购买和使用体验。设计了一套基于Raspberry Pi平台,利用低功耗蓝牙?红外等无线数据传输技术进行辅助控制的智能家居系统。本平台可以通过手机微信小程序、PC智能语音助手“Cortana”对家用电器进行控制,实现了通过个人智能设备控制家用电器的目的。本套智能家居系统使用方便,购置成本低廉,具有较好的实用性和应用开发前景,将有望提高智能家居在我国的普及程度,缓解智能家居市场碎片化问题,使普通用户可以更方便的接触、体验到智能家居给生活带来的便利。

关键词: 树莓派;智能家居;蓝牙;微信小程序;语音助手

中图分类号: TP274    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.08.009

本文著录格式:乔明泽,边凯宸,王世喆,等. 集成式低功耗智能家居系统的设计与实现[J]. 软件,2019,40(8):4245

【Abstract】: In order to reduce the configuration cost of the smart home system, and through the integrated solution, try to alleviate the fragmentation problem of the smart home market and improve the user's purchase and use experience. This team designed a smart home system that based on Raspberry Pi platform, using wireless data transmission technologies such as low-power Bluetooth and infrared to assist in the control of household appliances. The platform can control household appliances through the mobile phone WeChat applet and the PC intelligent voice assistant “Cortana”, which could realize the purpose of controlling household appliances through personal smart devi?ces. This smart home system is easy to use, low in cost, good in practicality and application development prospects, and it is expected to increase the popularity of smart homes in China, alleviate the fragmentation of the smart home market, and make it easier for ordinary users to contact. Experience the convenience that smart home brings to life.

【Key words】: Raspberry Pi; Smart home; Bluetooth; WeChat applet; Voice assistant

0  引言

近年來,智能家居系统在我国已经开始逐渐普及,物联网产业取得了长足进步。目前市面上常见的智能家居系统有基于红外、ZigBee与蓝牙的系统[1]。华为?小米等数码科技巨头及国内各大家用电器厂商都已开始进行一定程度的智能家居系统的研发。然而目前智能家居的普及率仍处在较低水平,这与智能家居系统的高成本?碎片化以及人们对于智能家居系统的了解不足都有着很大关系,同时,市场上常见的智能家居系统在单一系统内搭建物联网所使用的通讯手段通常较为单一与局限。智能家居存在安装过程复杂、维护成本过高、稳定性差、终端设备使用不方便、用户体验欠佳等问题[2-3]。基于这种情况,项目小组设计了一款基于Raspberry Pi平台,利用低功耗蓝牙(Bluetooth Low Energy,BLE)、红外等无线数据传输技术进行辅助控制的智能家居系统。本系统的实现目标,是降低智能家居系统的配置成本,并通过集成式的解决方案,尝试缓解智能家居市场的碎片化问题,提高用户的购买和使用体验。

1  树莓派中控系统设计与实现

1.1  关于中控硬件的选择

(1)初版硬件选择为Arduino开发板,搭配HC-05蓝牙扩展芯片控制硬件,但是由于HC-05蓝牙芯片与Arduino开发板之间连接困难?开发板处理能力低下等问题,放弃了Arduino开发板。

(2)在之后的开发实验中采用了Raspberry Pi与HC-05蓝牙芯片搭配的开发方式。Raspberry Pi是一款基于Linux的单片机计算机。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件促进学校的基本计算机科学教育。树莓派配备一枚博通出产的ARM架构700 MHz BCM2835处理器,256 MB內存(B型已升级到512 MB内存),使用SD卡当作存储媒体,且拥有一个Ethernet?两个USB接口?以及HDMI(支持声音输出)和RCA端子输出支持[4]。(于2016年2月发布的第三代树莓派已经集成了WiFi和蓝牙模块,处理器也升级为博通BCM2837。项目组使用的为树莓派一代版本,并未配备蓝牙模块,故而外接了一枚HC-05蓝牙芯片。)

1.2  关于程序语言的选择

(1)在使用Arduino开发板时,使用的是Arduino语言,其基于C/C++。

(2)在改用Raspberry Pi之后,曾采用C语言结合wiringPi。但是由于接口使用相对复杂,最后放弃了该方案。

(3)最终版采用了Python语言,由于Python语言是一种高层次的解释型语言,所以语言的可读性很强。在编写程序的时候可以引用的库比较多,所以代码量比较小,有助于中控程序的编写?丰富与优化。

1.3  设计思路

(1)采用树莓派与HC-05芯片进行串口连接,在用户使用手机时,可以通过接收用户发过来的串口指令的方式进行控制。在实验的过程中,设备连接与控制正常。

(2)由于Raspberry Pi上面拥有40Pin的引脚,并且有线连接的安全性比较高,所以采用引脚对硬件进行直接控制的方式比较稳妥。在此思路基础上,我们团队决定使用引脚对硬件进行控制。

(3)调查市面上的用电器基本情况后,我们发现可以将市面上的用电器大体分为两类,分别是双状态电器(只有开和关两状态的用电器)和多状态电器(例如风扇有多个挡位),在进行更深度调查后,我们发现双状态用电器可以采用供电控制的方式进行控制。例如电灯只需要控制其是否供电,就可以对其进行完全控制。而多状态电器大多可以采用红外对其遥控,所以可以采用树莓派+红外二极管的方式对信号进行模拟。以上思路可以控制家庭内大多数用电器。

(4)编程采用Python语言,脚本在树莓派开机后自动执行,等待蓝牙设备的信号传入。如果传入信号,根据传入的状态码自动运行对应的程序功能块。

2  手机端交互程序设计与实现

蓝牙(Bluetooth),一种无线技术标准, 使用2.4—2.485 GHz的ISM波段的UHF无线电波,可实现固定设备?移动设备之间的短距离数据交换。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。蓝牙模块是利用无线蓝牙技术进行蓝牙传输的一种模块,蓝牙模块对外联络网络环境,对内联络单片机,在智能家居系统中起到非常重要的衔接作用。

2.1  工作原理

本模块旨在实现:手机连接蓝牙发送指令,蓝牙模块接收到指令,开启适配器,进行设备连接。最后,蓝牙模块将指令发送给单片机接口,完成无线传输。

在智能家居系统中采用BLE(低功耗蓝牙)通讯技术具有以下优势:

(1)功耗低且传输速率较快

蓝牙的短数据封包特性是其低功耗技术特点的根本,传输速度大概每秒195-215 KB左右,最高24 Mbps,也就是每秒3 MB。而功耗主要由传输速率和距离来决定,低功耗蓝牙一开始是蓝牙4.0核心规格的一部分,专门在低功耗?低带宽?低成本与低复杂性方面做了优化。

(2)建立连接时间短

蓝牙用应用程序打开到建立连接只需要短短的3 ms,同时能以数毫秒的传输速度完成经认可的数据传递后并立即关闭连接。

(3)兼容性较强

蓝牙的普及性广,也是基于其兼容性较强,几乎能够兼容所有数码设备,让各种数码设备之间能够无线沟通。

同时,选用蓝牙做智能家居系统的无线连接技术也有几点缺陷待改进,如:有一定传输距离的约束?蓝牙的安全性不容易保证?稳定性也有待加强。在本实验中,针对蓝牙模块,我们采用了微信小程序开发方式,调用微信官方的蓝牙API文档,使用微信小程序对蓝牙进行操作。

2.2  程序设计

2.2.1  蓝牙建立连接过程梳理

首先,开启蓝牙适配,获取蓝牙适配器状态,判断设备蓝牙是否可用。判断蓝牙适配器可用时开启扫描蓝牙设备和开启获取已连接的蓝牙设备。如果开启扫描蓝牙设备失败,自动再次开启扫描。开启扫描蓝牙设备成功后开启监听已扫描的设备。开始连接设备,获取已连接蓝牙设备ID及name。开始连接某设备时停止扫描设备,停止循环获取已连接设备。连接成功后停止扫描设备,停止循环获取已连接设备。

2.2.2  关键步骤说明

Step1. 调用wx.openBluetoothAdapter(),初始化小程序蓝牙模块,生效周期为调用wx.openBlue?too-thAdapter至调用wx.closeBluetoothAdapter或小程序被销毁为止。

Step2. 开启蓝牙适配,判断蓝牙是否可用wx.openBluetoothAdapter(OBJECT);

Step3. 调用wx.onBluetoothAdapterState?Chan?ge()监听蓝牙适配器状态变化事件;

Step4. 调用wx.onBluetoothDeviceFound()监听寻找到新设备的事件,在log文件中记录下来设备ID和name。若初始适配器失败,给出提示,“检测手机蓝牙是否打开”;

Step5. 調用wx.closeBluetoothAdapter()关闭蓝牙模块,使其进入未初始化状态。调用该方法将断开所有已建立的链接并释放系统资源。在使用小程序蓝牙流程后调用,与wx.openBluetoothAdapter()成对调用;

Step6. 调用wx.startBluetoothDevicesDiscovery()开始搜寻附近的蓝牙外围设备。此操作比较耗费系统资源,在搜索并连接到设备后需要立即调用 stop 方法停止搜索。即调用方法wx.stopBluetooth?Devi?ces-Discovery()停止搜寻附近的蓝牙外围设备。若已经找到需要的蓝牙设备并不需要继续搜索时,调用该接口停止蓝牙搜索;

猜你喜欢
树莓派微信小程序蓝牙
蓝牙音箱的直线之美
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
当图书馆遇上微信小程序
紧急:蓝牙指尖陀螺自燃!安全隐患频出
智能安全防盗探测小车
基于嵌入式技术的农村医疗系统设计