刘子源,郑佳春,陈惠滨,洪夏棋,钟永梅
(集美大学信息工程学院,福建 厦门 361021)
当前,空调已成为城市生活中必不可少的家用电器.然而,目前对于空调的控制大多是通过普通的遥控器,仅仅能够近距离手动控制空调,无法实现远程控制,智能化程度不高.如果因外出上班离开房间时忘记关空调,那势必会造成用电浪费.并且在炎热的夏天,刚进房间时空气又闷又热,即便开启空调后,也需要10~15 min才能达到所要的降温效果.因此,如何实现空调的远程控制,成为当前亟待解决的问题.当前,国内不少人员对复杂的空调遥控做了相关研究,如:利用语音识别技术的室内近距离空调控制[1];利用蓝牙技术的网络空调程控系统[2];利用双音多频信号通过电话网络的电话空调远程遥控器[3].然而这些研究大多只能近距离控制空调,虽然电话遥控器可远程控制,但操作过程复杂且功能少,仅可以实现开关空调.为了解决上述问题,本文采用方便快捷的短信通信方式远程控制空调,可以设定空调的工作状态、调节目标温度等,实现自动关机、提前预约开机等多种功能,使人们生活居住的环境更加舒适.
本系统由Android手机客户端与空调控制系统组成,如图1所示.
图1 系统框图Fig.1 Block diagram of system
系统分为以下3种工作模式.
1)本地控制.本地控制单元由MCU、红外模块和按键组成.由红外模块学习空调遥控器各按键对应的红外编码,并存储于本地EEPROM.按键发射所存储的红外编码便可对空调控制,其作用等同于一个普通遥控器.
2)无人控制.在本地控制的基础上,MCU连接人体感应模块以检测室内是否有人,若长时间室内无人,则关闭空调,以达到节能的目的.
3)远程控制.基于Android开发的应用程序将空调遥控器外观抽象成手机用户端的操作界面,当用户在界面按下相应功能键,向指定空调控制系统发送短信,空调控制系统通过CDMA模块获取短信信令,控制中心对信令解析后通过红外模块控制空调执行相应功能操作,从而实现空调远程控制的目的.此工作模式是本设计的核心内容.
系统以单片机C8051F020为核心控制器,通过两个标准的RS232串行口分别控制CDMA模块和红外模块,通过单片机的一个IO口连接人体感应模块.其硬件的原理图如图2所示.
系统配备AnyData公司的CDMA模块DTGS-800,其提供标准AT命令供任何主机终端接入,可实现短信收发、数据通信等功能.AT命令是以AT为首、〈CR〉字符结束的字符串,本设计中单片机发送AT命令“AT+SMSP=285”,将SMS发送编码格式设置为Unicode编码;使用AT命令“AT+SMSC?”,查询未读短信条数和地址;使用AT命令“AT+RSMS= 〈x〉”,读取指定地址的短信息.
红外模块采用高集成度嵌入式学习型红外模块IR-u64/448,内部具备高性能超低功耗32 bit微处理器,自动检测载波,可以学习不同红外码,是实现本系统控制器对空调控制的主要接口.其红外学习与红外发射的功能可通过串行口发送命令代码进行设定.红外模块提供如表1所示共12个字节的命令,其中命令代码若为0x01,则模块处于学习模式,为0x02则是发送模式.数据体是学习与发送的具体键号即红外编码.
图2 系统原理图Fig.2 System principle diagram
系统选择热释电红外传感器BIS0001作为人体感应模块,该模块是一种对温度敏感的传感器,当人体进入检测区,因人体温度与环境温度有差别,传感器输出高电平信号,人离开感应范围则自动延时关闭高电平,输出低电平.传感器通过加装光学透镜,其检测距离可达7 m,感应角度为110°,触发时间为0.5~200 s.传感器在安装过程中,感应区应尽量避免正对着发热电器和物体.
表1 红外模块命令格式Tab.1 The command format of infrared module
空调控制系统以CDMA模块与远程Android手机通信,单片机根据CDMA模块所接收的短信内容控制红外模块做相应工作,实现空调的开、关、温度设定、“上下扫风”、“左右扫风”、“睡眠”与“灯光”等.空调控制系统程序流程图如图3所示,系统根据面板提供按键,由用户选择进入遥控器学习模式或控制模式.当进入遥控器学习模式,系统学习空调相对应类型遥控器红外编码,存储于本地的EEPROM,并指定本地按键与各红外编码一一对应.
系统常态处于无人控制模式,MCU通过热释电红外传感器作为人体感应模块检测室内是否有人.人体感应模块输出低电平将触发定时器工作,输出高电平则关闭定时器.如果人体感应模块输出持续20 min的低电平,则定时器计时到20 min,空调控制系统将通过红外模块发送关机命令.
当用户触发面板按键,系统将工作于本地控制模式时,用户通过学习过程指定按键功能触发空调开、关、温度设定、“上下扫风”、“左右扫风”、“睡眠”与“灯光”控制.当系统通过CDMA模块检测到短信,系统将工作于远程模式.为了防止泛滥短信干扰,系统可由用户添加授权远程遥控的手机号码,当系统检测到授权手机号的短信号码发送的短信内容,对短信进行解析.当接收短信内容为“开”的短信,单片机通过红外模块发送开启空调红外编码;当授权手机号码发送短信内容为“关”的短信,单片机通过红外模块发送关闭空调红外编码;当授权手机号码发送短信内容为“开××℃”的短信,单片机通过红外模块发送调节目标温度值的空调红外编码.以此类推,系统以相应的方式处理接收授权手机号码发送短信内容,如:“上下扫风”、“左右扫风”、“睡眠”与“灯光”.
图3 空调控制系统程序流程图Fig.3 The procedure flow chart of air conditioning control system
Android终端的空调虚拟遥控器是将本地遥控器的功能按键虚拟成用户界面,当用户按下界面的按钮,Android手机便向空调控制系统的CDMA模块发送相应短信信令,空调控制系统根据收到的信息发送相应的红外编码,从而实现Android终端对空调的远程控制.
在Android界面的设计中使用了Android系统所提供的TextView和Button控件,其中TextView控件放在最顶部中央,用于显示设置的温度值,Button控件用于各种遥控功能的按键操作,共定义了9个Button按钮,分别为开、关、温度调升、温度调低、上下扫风、左右扫风、睡眠、灯光、确定操作按钮,所定义的按钮与空调实际的遥控器按钮功能一致,其总体布局如图4所示.
当用户按下界面的按钮后,启动短信信令发送功能.短信发送是通过对按钮控件设置监听器实现的,在监听器里对硬件系统的CDMA模块发送固定内容的短信,且不同按钮控件绑定不同的短信信令.如设置固定短信内容“开”到手机号码为“1804630****”的Button控件,设置该按钮的id名称为openbutton,对openbutton按钮设置如下监听器操作:
图4 Android界面Fig.4 Android interface
上述程序中,短信发送的关键程序是通过调用SmsManager对象的sendTextMessage()方法来完成的,其函数结构[4-5]如下所示:Sms-Manager.sendTextMessage(String destinationAddress,String scAddress,String text,PendingIntent sentIntent,PendingIntent deliveryIntent).SendTextMessage()方法需传入的5个参数:destinationAddress为目标手机号码,即收件人地址;scAddress为短信服务中心号码,即发送地址,如果为null则使用默认的短信服务中心号码;text为发送的短信内容;sentIntent为PendingIntent对象,提供发送服务,用于判断发送短信是否成功,可以为空;deliveryIntent也为PendingIntent对象,提供送达服务,当用户接收到短信时会返回该对象,可以为空.PendingIntent是一种特殊的Intent,PendingIntent执行的操作实质上是参数传进来的Intent的操作,在上述sendText-Message()方法中,设置PendingIntent对象paIntent,当短信发出时,若发送成功,paIntent会把其内部描述的 intent广播出去,否则产生错误代码并通过android.app.PendingIntent.OnFinished进行回调.
本文运用Android开发技术、单片机控制技术设计了空调控制系统,实现了无人环境下空调的自动控制,为人们创造便利、良好的生活环境提供了技术支持.本系统的设计方案和思路也可以应用于其他家电的远程控制,如电饭煲、热水器等[6],与汽车里的仪表控制系统结合,可以实现远程无人控制汽车熄火和自动上锁,具有良好的应用前景.
[1]李永新,孙刚,李尚荣,等.语音控制型空调遥控器设计[J].自动化与仪表,2004(1):15-18.
[2]麦汉荣,廖劲光,韩波,等.基于蓝牙技术的网络空调程控系统的设计与实现[J].电子技术应用,2008(1):85-89.
[3]张丽.基于MSP430单片机的电话空调遥控器[J].大众科技,2007(9):93-94.
[4]李兴华.Android开发实战经典[M].北京:清华大学出版社,2012:440-445.
[5]张冬玲,杨宁.Android应用开发教程[M].北京:清华大学出版社,2013:373-377.
[6]雷怡然.基于GSM短信息的热水器遥控系统[J].山西电子技术,2002(3):9-10.