刘英明
(长春汽车工业高等专科学校 电气工程学院,吉林 长春 130013)
由于科学技术飞速发展,通过总线技术和自动控制技术即可对家庭住宅中各种保险安全设备、家用电器进行监控与管理,这种系统被称为Smart Home,即现在智能家居的原型[1-3]。本文提出了一种基于CC2530的无线智能门锁系统。在这套系统中,智能门锁的状态可实时在Android手机客户端上实时显示。智能锁的打开关闭状态等信息都存储在本地文件系统上,用户可以随时进行查阅或者对非法开门信息进行跟踪。除此之外,该系统还集成了温湿度检测、语音控制等功能,方便用户查看和控制智能门锁。本文的智能门锁系统可以实现智能家居终端和移动客户端的双向通信:智能无线门锁终端设备在获得门锁状态、温湿度等数据后将其发送给本地服务器,本地服务器在获取到这些数据后再通过Wi-Fi网络将其发送至无线门锁系统配套的APP。同时在移动客户端中加入语音控制等技术,可以通过上述途径反向控制无线门锁设备。这套智能无线门锁系统有价格低、设备功耗低、兼容性高等优点,有广阔的应用前景[4]。
本设计建立基于CC2530芯片的智能无线门锁系统,该系统包括三个部分,分别是无线门锁终端设备、本地服务器和配套的Android客户端。系统的架构如图1所示,智能无线门锁终端设备通过串口连接到本地服务器,本地服务器通过串口连接到无线AP,并将数据发送给安卓客户端,客户端显示数据给用户或发送命令控制智能家居设备。
图1 智能门锁系统总体架构
系统数据传输的情况如下,智能门锁终端设备将采集到的,智能门锁终端设备状态信号和温湿度数据发送给本地服务器(透传模块),本地服务器接收到数据后,通过无线网络,发送给安卓客户端。系统的控制传输情况如下:用户使用安卓客户端将控制指令,通过无线网络发送给本地服务器(透传模块),本地服务器接收到指令后,再将指令发送给智能门锁终端设备。
本部分的主要内容是硬件终端设备的开发。首先介绍终端设备的嵌入式软件开发环境,然后介绍在系统终端设备上进行具体开发的流程。
本系统的嵌入式开发环境是I A R E m b e d d e d Workbench IDE-8051,版本为10.30.1。该集成开发环境适用于大量8位、16位以及32位的微处理器和微控制器,该集成式开发环境提供一个框架,该框架将可用高度优化的编译器、汇编器、链接器等工具完整地嵌入其中[5]。
开发者使用IAR工具可以大大节约工作时间。在开发新项目的时候,即使在使用习惯的开发环境中也能执行。不仅如此,它还为用户提供容易学习和容易继承代码的开发环境,以及支持大多数特殊目标的开发环境。
ZigBee网络中包括Coordinator,Router和End-Device这三种逻辑设备类型。ZigBee网络由一个Coordinator以及多个Router或多个End-Device组成。Coordinator负责整个网络的开始。Coordinator选择频道和个人局域网络ID(Personal Area Network ID),开始整个网络。Coordinator的作用主要和网络启动和构成有关,当然也可以用来帮助建立局域网络安全层和应用层之间的绑定。上述工作完成后,Coordinator会在功能上就转变为Router;Router的功能主要是让其他设备加入网络。通常Router必须使用主电源供电,因为希望它是一直处于活动状态。但是,在使用树状网络拓扑结构的情况下,Router被允许在一定期间内工作一次,因此可以用电池供电。End-Device可以是电池驱动的设备,因为该设备没有维护网络结构的责任,可以睡眠或者唤醒。一般来说,End-Device的存储空间(尤其是RAM)要求比较小。
ZigBee网络支持星型、簇状和网状三种网络拓扑结构,三种拓扑结构如图2所示,下面详细介绍星型拓扑结构。星型拓扑结构使用一个完整功能设备作为个人局域网启动的关键节点。该ZigBee节点设备类型被配置为协调器,通过网络层的相关功能,选择一个没有被其他网络使用的个人局域网标识符,进而启动一个新的网络。星型拓扑结构具有组网方便并且网络的机构容易维护等优点,但是其缺点也很明显,如网络的覆盖范围小、协调器的射频覆盖范围限制等。如果和星型网络一样使用一个完整功能设备作为个人局域网协调器,但采用多个路由器参与转发信息,这种通信方式被称为点对点通信。点对点网络结构覆盖面积大,可以达到转发消息绕过障碍物的效果,但是该种拓扑结构下,网络传输延时大、组网复杂、稳定性不容易维护。
图2 ZigBee 网络拓扑结构
无线门锁系统的硬件由深联智达公司生产的CC2530模组和本地服务器组成。CC2530模块的硬件简化结构中片内资源主要包括串口(UART)、普通I/O和外部中断,LED模块以及RF(无线电)等。
本地服务器采用HLK-M35透传模块,图3为该透传模块的硬件简化结构[6]。
图3 透传模块硬件图
2.3.1 门锁模拟程序
采用本地服务器上的GPIO1口作为门锁状态的模拟,该口外接LED灯,起到提示作用。当该口为低电瓶,即绿灯亮起时,表示门处于打开状态;当该口为高电平,即绿灯熄灭时,表示无线门锁处于关闭状态。使用AT指令控制,该门锁的状态。当客户端连接到该模块时,发送“hlkATat+GW=1,0”指令时,门锁被模拟打开,指示灯亮起;当客户端发送“hlkATat+GW=1,1”指令时,门锁被模拟关闭,指示灯熄灭。
2.3.2 温湿度获取程序
温湿度获取模块使用SHT10温湿度传感器。在本设计使用到的模块中,微电路板集成传感器元件和信号处理电路,输出完全校准的数字信号。该传感器具有高性价比、高响应速度、接口简单、体积小等特点。该传感器属于Sensirion温湿度传感器家族[7],本设计使用的是贴片封装系列。在本设计中SHT10连接在CC2530芯片的P0_4和P0_5。硬件简化结构如图4所示。
图4 温湿度模块硬件图
从SHT10读到的温度数据值t和湿度数据值h,通过公式(1)和公式(2)转换可以达到实际的温度值T(摄氏度)和湿度值H(相对湿度),由于数据转换的原因,小数点2位以后的数据没有实际意义。
本部分首先简要介绍Android操作系统和常用四大开发组件,然后介绍Android客户端的总体设计,最后介绍Android客户端的各个功能以及具体实现。
在Android应用程序开发中经常会用到四大开发组件,每个组件都是系统或用户可以通过其进入应用程序的入口点,这些组件之间相互配合,实现对应的功能需求[8]。
Android的四大开发组件使其在程序开发过程中拥有很多独到之处。开发者可以通过自己开发的应用程序去启动其他应用程序的组件。同时,开发者如果希望用户使用设备相机拍摄照片,则可以借助另一个应用程序执行此操作,而自身开发的应用程序可以使用它来代替自己开发活动来拍摄照片。开发者不需要并入相机应用程序中的代码,甚至不需要链接到它们。相反,开发者只需在捕获照片的相机应用程序中启动活动即可。完成后,照片甚至会返回到应用程序,以便使用。对用户而言,相机似乎实际上是应用程序的一部分。
Android客户端软件可以分为五大模块,如图5所示。
图5 客户端软件总体设计
(1)设备绑定模块:Android客户端通过Wi-Fi连接到本地服务器后,客户端后台会自动识别服务器的IP地址,以确保连接到正确的设备上。
(2)网络通信模块:客户端后台启动服务,在Android客户端后台与本地服务器建立TCP长连接,获取门锁状态和温湿度信号并控制门锁状态,完成与服务器数据的双向传输。
(3)数据存取模块:客户端后台将获取到的温湿度数据等存储在本地文件系统上,方便用户进行后续的查询。
(4)状态显示模块:在完成网络数据通信并将其存储到Android手机文件系统后,客户端提取本地文件中的门锁状态、温湿度数据等信息,在对应的Android控件上进行显示。
(5)语音控制模块:客户端集成科大讯飞离线语音识别SDK,可通过如“开门”“关门”语音命令完成门锁模拟打开和关闭等操作。
3.3.1 设备绑定
用户启动Android客户端,通过Wi-Fi连接到本地服务器,点击“连接”页面,客户端后台判断是否连接到对应的本地服务器。若连接成功则播放过场动画,进入状态显示模块。如果连接的网络不是正确的网络,将会提示用户信息出错[9]。
3.3.2 状态显示
客户端进入状态显示界面时,后台会开启网络通信模块和数据存取模块,实时获取门锁状态和温湿度状态等信息,并通过下拉刷新将门锁状态及温湿度数据显示在对应的控件中。刷新数据后的页面如图6所示。
图6 用户界面
3.3.3 语音控制
用户点击上方“语音控制”图标即可进入语音控制模块,通过相应语音指令模拟控制门锁。当使用语音控制门锁打开和门锁关闭会出现相应的动画,如图7所示。
图7 语音控制效果图
本文完成了一个基于CC2530芯片的智能无线门锁系统。本文详细阐述了无线门锁终端设备的硬件开发的要点与温湿度采集的算法流程,本系统本文的硬件设备包括两部分,一部分是CC2530芯片模组,主要使用网络传输模块和温湿度传感器模块,另一部分是Wi-Fi透传模块,主要用于接收CC2530模组传来的数据以及向配套的Android客户端发送数据。本文完成了Android客户端的开发,使用Android四大开发组件完成了客户端的开发,包括设备绑定、状态显示、网络通信、数据存取等功能的实现。
本设备价格低,在门锁上面集成了温湿度传感器,使用范围更加广泛。同时在客户端上集成了科大讯飞的语音识别功能,方便用户使用。
本文虽然实现了一个智能无线门锁系统,但是现阶段存在许多不足,比如:
(1)支持的终端设备类型还不够丰富,以后可以借鉴厂商开发标准,支持接入市面上常见的门锁设备。
(2)客户端的功能比较基础,没有添加删除设备等功能,为了用户的使用体验,需要增加更多功能。
(3)对于软硬件开发的测试还不够,只进行了简单的功能性测试,没有进行更全面的测试。
(4)系统中的安全加密机制还不够成熟,而该系统直接涉及用户的居家隐私,因此后续需要添加相应的安全措施。
(5)在保证数据安全的前提下,本地服务器的数据可以上传到云服务器,方便用户进行远程的连接。