王耀青 解聪
摘 要: 为了实现对于空调的远程控制,设计一种基于Android的空调远程控制系统。系统利用CC2530作为主控制器,结合红外学习技术、WiFi无线通信技术,扩展了对空调的控制方式。采用ZigBee终端模块实现对红外数据的采集、存储,同时通过Android客户端发送控制命令驱动ZigBee终端实现对于空调的远程实时控制。基于Android平台和异步socket技术设计出一款与云服务器进行通信的APP应用程序。测试结果表明,该系统通过APP应用程序实现了对空调的远程实时控制和温度的采集。该方案经济合理,易于实现,可以应用在其他的家电领域。
关键词: 远程控制; Android; 红外数据处理; 云服务器; 数据采集; socket技术
中图分类号: TN929.5?34 文献标识码: A 文章编号: 1004?373X(2018)22?0030?04
Abstract: An air conditioning remote control system based on Android is designed to realize remote control of air conditioner. In the system, the control mode of air conditioner is extended by taking the CC2530 as the main controller, and combining with the infrared learning technology and WiFi wireless communication technology. The ZigBee terminal module is used in the system to realize acquisition and storage of infrared data. The control commands are sent by the Android client to drive the Zigbee terminal, so as to realize real?time remote control of air conditioner. An APP application program communicating with the cloud server is designed based on the Android platform and asynchronous socket technology. The test results show that the system can realize real?time remote control and temperature acquisition of air conditioner by using the APP application program. The scheme is economic, reasonable, easy to be implemented, and can be applied in other home appliances.
Keywords: remote control; Android; infrared data processing; cloud server; data acquisition; socket technology
近年来,随着物联网的发展,家用电器的网络远程智能化控制技术的不断深入,以Internet为核心的控制方式正在逐步融入传统的控制方式。相对于传统的红外控制方式,远程控制方式可以远距离对家用设备实施控制,而不受物理距离的限制。本文提出一种基于Android手机并通过云平台连接家居网关的方式,实现了对于空调的远程实时控制。本系统结合传统的遥控器控制方式,可以方便地实现近距离与远程对空调的实时控制。
整个系统由4个部分组成:Android客户端模块、云服务器模块、WiFi?ZigBee网关模块和ZigBee模块[1]。总体框架图如图1所示。
Android客户端模块作为控制终端,负责发送指令至云服务器模块以及接收系统反馈的网络数据,并作为终端显示在屏幕上。云服务器模块作为Android客户端与WiFi?ZigBee网关模块之间的桥梁,负责对接收到的数据进行转发。WiFi?ZigBee网关模块接收云服务器模块的数据,并对数据进行解析和处理后,将其发送给ZigBee模块。ZigBee模块作为执行机构,负责采集温度数据和红外编码数据,以及发送红外信号,实现对控制的实时控制。
系统的硬件部分主要由两个部分组成,分别是WiFi?ZigBee网关模块和ZigBee终端模块。两个模块共同作用完成数据的传输和对空调的控制。
2.1 WiFi?ZigBee网关模块
WiFi?ZigBee模块由WiFi模块和ZigBee协调器模块两个部分组成,两者之间通过串口进行连接,实现Internet网络和ZigBee网络两种不同网络之间的通信。
1) WiFi模块采用RT5350作为主控芯片,通过在RT5350芯片内刷入openwrt固件并进行相应的配置,连接到家庭的无线局域网中,实现网关与外部网络的互联。WiFi模块实现与云服务器和ZigBee协调器模块的通信,实现数据的上传和下载以及数据的实时传输。
2) ZigBee协调器模块采用CC2530芯片作为主控芯片,ZigBee协调器模块上电自动组建网络,当有新的ZigBee终端设备加入进来时,完成与ZigBee终端设备的连接通信,同时通过串口完成与WiFi模块数据的交互。
2.2 ZigBee终端模块
ZigBee终端模块采用CC2530芯片作为主控制器,结合温湿度传感器、红外接收模块、红外发送模块,实现温湿度数据和红外数据的采集和发送。
1) 温湿度传感器模块采用DHT11模块,内含1个电阻式感湿元件和1个NTC测温元件,能够精确地检测环境实时温湿度。
2) ZigBee模块使用HX1838作为红外接收模块采集红外数据。通过红外学习的方式对空调遥控器信号进行学习,通过检测HX1838模块数据引脚的高低电平的时间,完成信号的采集和编码,并将采集的数据保存在本地内存中[2]。
3) 红外发送模块通过内部定时器产生38 kHz的红外载波信号,将接收到的红外数据进行适当的处理后,加载到38 kHz的载波上,通过红外发射管发射出去,从而实现对空调的控制。
3.1 软件系统总体框架
本系统通过Android客户端发出控制命令,云服务器接收到控制命令后转发给与云服务器相连的网关,网关的WiFi模块经过WAN口接收控制命令,然后对接收到的控制命令进行处理和解析,将处理的结果发送给网关的协调器模块[3]。协调器模块以中转站的身份将接收到的命令发送给ZigBee控制终端,ZigBee终端响应控制命令执行相应的控制操作,最终实现Android智能手机对空调的远程控制。
系统软件设计主要分为ZigBee协调器模块、ZigBee终端节点模块、WiFi模块设计以及Android客户端模块四个部分。ZigBee终端节点模块实现对于空调的直接控制,ZigBee协调器模块和WiFi模块共同作用实现Internet网和ZigBee网络两种不同网络之间的通信,Android客户端模块完成命令的发送和网络数据的接收及显示。
3.2 ZigBee终端节点模块设计
ZigBee终端节点是整个系统的控制设备终端,通过在节点上配备了相应的传感器模块或控制模块,对环境进行实时监视和对电器设备实时控制[4]。系统利用Android手机发送的命令控制空调。空调的控制分为两个模式,分别是学习模式和发射模式。首先在ZigBee终端之中使用红外学习模式将空调的状态数据全部学习完成[5],并将学习到的数据存储到ZigBee终端的内存中,之后自动进入红外的发送模式,通过Android发送红外发射指令控制空调。利用ZigBee自组网的特点,实现ZigBee终端与协调器的组网连接[6]。ZigBee终端不断检测WiFi?ZigBee网关与ZigBee终端之间的数据,当ZigBee终端检测到从网关发送的命令时,就启动ZigBee终端上相应的控制命令,通过判断网关发送的控制命令,解析出命令是红外控制命令还是温度控制命令。当终端检测到温度控制命令时,就将DHT11检测到的温湿度数据通过网关发送给云服务器,并最终发送到Android客户端之中。当终端检测到红外控制命令时,就启动红外發送模块发送出红外信号,实现对空调的实时控制。终端节点控制图如图2所示。
3.2.1 红外数据的采集
不同生产厂家空调的协议差别很大,编码方式多种多样。为解决不同的协议差别,本文采用红外学习的方法采集空调红外数据,利用设定的周期对数字信号进行采集,进行数据压缩后保存到本地的内存中。数字I/O采集一般有两种方案:一是利用外部中断直接捕获数字信号变换,可以根据信号特性设置为上升沿或下降沿中断;二是直接用GPIO端口定时读入。经对比试验,方案2代码占用资源更少,且采样时间可以预测,也完全满足要求[7]。而中断1中需要多个中断服务程序,且在协议栈之中,由于系统执行轮询的操作系统,对于高频率的中断反应不及时,导致采样结果不精确。
3.2.2 温度数据的采集
系统采用DHT11模块采集室内的温湿度数据,当接收到温湿度命令时,开启温湿度采集过程,并将采集的结果通过终端节点上报给网关。
3.3 ZigBee协调器模块设计
ZigBee主控制器负责网络的建立、维护和数据的中转,主要任务是为各个终端设备分配地址,建立和维护网络,完成和各个传感器节点间的信息交换和通信[8],通过串口通信完成与openwrt系统的数据交换。ZigBee协调器不停地检测串口,当接收到来自WiFi模块的数据时,及时采集串口中的数据,并通过ZigBee事件机制,设置这个任务产生了哪类事件,当系统再次轮询时,查询事件标志位,调用相应的事件处理函数,将数据发送到ZigBee终端节点。同时ZigBee终端模块通过响应控制命令,将采集到的数据通过网关最终将结果上报到云服务器。
3.4 WiFi模块设计
网关实现WiFi模块与ZigBee终端和外部云服务器的通信,是ZigBee网络和Internet网络之间通信的桥梁[9]。在网关内部使用串口协议进行两种不同网络之间的通信。WiFi模块通过建立socket套接字与云服务器进行通信,并不断地监听是否有云服务器远程调用,并将监听的结果写入到串口中,供协调器模块读取。同时不断地检测是否有ZigBee数据帧写入到串口中,并将从串口中读取到的数据通过tcp协议发送至云服务器。WiFi模块软件流程图如图3所示。
RT5350模块与ZigBee协调器的协议转换是利用串口实现的,在WiFi模块中将串口初始化为与协调器模块相同的串口数据格式,依次设置串口控制器波特率,数据位、停止位、奇偶检验位,同时设置读取串口的最大时间,防止串口堵塞。当串口存在数据时,协调器和RT5350模块根据需要分别读取串口数据。
3.5 Android客户端模块设计
Android客户端是整个远程控制的移动终端,通过对Android应用程序的操作完成整个控制过程。Android应用程序APP与云服务器通过云服务器分配的唯一accesskey进行登录连接,保证整个过程的安全性。APP应用程序与云服务器连接成功后,将命令发送给云服务器,云服务器响应命令完成命令的转发,完成整个系统的远程控制。
本系统的网络通信模块基于TCP/IP协议的socket通信机制,实现Android客户端与云服务器的连接。当连接到云服务器之后,开启新线程,在子线程内创建socket输入输出流,发送网络数据和接收网络数据。当接收到网络数据时,通过handle[10]机制将接收到的数据发送给主线程并在主页面上显示出来。在主线程之中设置事件监听器,当按钮被按下时,触发子线程的命令发送函数,将按钮对应的控制命令发送给云服务器,通过监听云服务器返回值,确定命令是否发送成功。
本文使用Herk云作为整个系统的云服务器模块对数据进行控制,根据命令将获取到的数据发送给Android客户端和网关。并且由于此云服务器特点的单一性,每一个连接到此云服务器的设备都会分配一个唯一的标志符(csrftoken),只有用户终端的标识符与设备终端的标识符匹配,才能连接到被控设备,并且与之进行通信,极大地保证了整个系统的安全性。云服务器与设备终端和用户终端采用HTTP协议进行通信,用户终端和设备终端分别使用注册到云服务器获取的用户密钥userAccessKey和设备密钥deviceAccessKey进行登录,取得云端的访问权限。Android客户端和设备终端可以将数据及时地传送给云服务器,同时也可以将云平台下发的数据发送给设备终端和用户终端,实现对数据的转发,最终实现Android客户端、云端以及网关之间的通信。
系统功能的测试是检验整个系统是否能够达到正确控制的必要步骤,在实验中,分别测试温度数据的采集和空调的实时控制。先使用APP发送控制命令,检测当前环境下的实际温度值,将检测到的温度值进行上传,最终上报到Android客户端,并通过客户端程序将温度值显示出来。检测到的温度值以及空调调节的温度值如图4所示。
其次,在手机中通过按钮发送控制命令,控制空调的开关状态和温度调节。通过红外接收模块,ZigBee终端通过串口收到的控制空调开机的一组红外编码为:{ 175 170 23 62 23 19 23 61 23 61 23 19 22 19 23 62 22 20 22 19 22…}。对这组红外编码经过处理并存储后,通过Android手机发送的控制命令驱动红外发送模块控制空调。经过测试,该系统能够精确地实现对空调的控制。
本文系统充分利用ZigBee终端的I/O资源与自组网功能,实现了空调红外数据的学习和存储,同时将ZigBee终端与WiFi?ZigBee网关结合起来,实现了ZigBee模块的入网功能,增强了与外部的聯系。同时在系统之中引入云平台,将云平台与Android手机以及空调相结合,实现了对传统空调控制方式的改造。在增加用户体验舒适度的同时,扩展了智能家居的智能化程度,更有利于今后智能家居的进一步扩展。
参考文献
[1] 张紫谦,衷卫声,梁凯.基于Android终端的物联网家居环境监测系统设计[J].测控技术,2016,35(2):108?111.
ZHANG Ziqian, ZHONG Weisheng, LIANG Kai. Design of the Internet of Things home environment monitoring system based on Android terminal [J]. Measurement & control technology, 2016, 35(2): 108?111.
[2] 陈双叶,咸耀山,丁迎来,等.基于WiFi控制的具有自学习能力的红外遥控装置[J].信息通信技术,2016,10(3):70?75.
CHEN Shuangye, XIAN Yaoshan, DING Yinglai, et al. Infrared remote control device with self?learning ability based on WiFi control [J]. Information and communications technologies, 2016, 10(3):70?75.
[3] 周平,吕勇,易恺迪,等.基于PC的智能家电无线红外遥控系统[J].现代计算机,2015(1):36?41.
ZHOU Ping, L? Yong, YI Kaidi, et al. Wireless infrared control system of intelligent appliances based on PC [J]. Modern computer, 2015(1): 36?41.
[4] 李宇,王卫星,陈润泽.基于ZigBee的物联网智能家居系统[J].电子测试,2016(5):71?75.
LI Yu, WANG Weixing, CHEN Runze. The design of Internet of Things smart home system based on ZigBee [J]. Electronic test, 2016(5): 71?75.
[5] 任峰,屈璟,崔志诚.一种带红外遥控功能的智能插座的设计与实现[J].电脑知识与技术,2016,12(32):180.