《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于ZigBee的空调集中控制系统
基于ZigBee的空调集中控制系统
来源:微型机与应用2013年第8期
王为亮,陶加祥,张万超,李 骥
(中国地质大学 机电学院,湖北 武汉430074)
摘要: 为了对已安装在多个分散点的混杂品牌空调进行统一高效管理,节约空调运行成本,提出了一种新颖的空调集中控制方案。首先给出了系统总体设计框图,然后依次对系统的各子模块进行论述。本设计方案的核心工作有两点,一是解决红外遥控器的码型识别问题,二是描述空调集中控制系统的具体工作过程和实现方法。
Abstract:
Key words :

摘  要: 为了对已安装在多个分散点的混杂品牌空调进行统一高效管理,节约空调运行成本,提出了一种新颖的空调集中控制方案。首先给出了系统总体设计框图,然后依次对系统的各子模块进行论述。本设计方案的核心工作有两点,一是解决红外遥控器的码型识别问题,二是描述空调集中控制系统的具体工作过程和实现方法。
关键词: 学习型遥控器ZigBee;空调集中控制;嵌入式系统

    在使用多个独立空调而非中央空调的场所,对多个位置分散、品牌型号混杂的独立空调进行集中而灵活的控制,可提高管理的便捷性且节省能源。目前,市面上已经出现了针对普通家庭使用的学习型万能遥控器。但这种遥控器只是将多个遥控器的功能整合到一个遥控器上,无网络功能,且需手工操作,不适合多人同时使用的场合。本文提出的空调集中控制方案以精确性、实用性、学习性和可扩展性为设计理念。方案将网络功能与数据库技术应用于嵌入式控制方案,提高了系统的灵活性和可扩展性。文章主要介绍了系统总体结构及各子模块的实现方法,对红外编码学习和数据库技术运用进行了详细研究。
1 系统总体方案
    集中控制系统的根本目的是将原遥控器所发出的红外信号进行解调,获得原遥控器功能键所对应的调制信号,然后根据这些调制信号,加上相配套的载波,再调制出原遥控器功能按键所发出的已调信号,最后通过该已调信号来控制空调而不使用原来的遥控器。基于上面的思路,设计了如图1所示的系统总体结构。
    在图1中,学习模块的作用是对原遥控器进行学习,并判断学习是否正确,如果学习正确就将解调出的信息进行缓存,然后学习模块通过与集中控制模块进行通信将其缓存数据存储在集中控制模块。学习模块并不总是系统必需的部分,在学习完成后,可以将其从系统中移除。

    集中控制模块是系统的核心,它由以ARM为核心的SoC以及一个ZigBee协调者(ZC)组成,可以响应用户的本地操作和网络操作。集中控制模块的主要任务是进行数据存储、数据查询和数据发送,这些功能主要由SoC来完成,ZigBee协调者负责与所有的单控制模块进行通信。单控制模块的作用是接收集中控制模块发送过来的数据包,从数据包中提取出调制码,再控制红外发射电路发送红外信号。

 


    相应于图1,图2给出了系统运转时的总框图,以数据流向和工作流程为依据。

2 学习模块
2.1 码型识别

    在学习过程中,码型识别是重点也是难点。红外遥控的编码方式纷繁复杂,从调试方式可分为调制码和脉冲码,从数据表示法可分为码宽表示和相位表示,另外每种码型的数据码组合方式、引导码、重复码定义都有所不同[1]。
    根据前面所提到实用性原则,排除边缘功能键的学习而只对核心功能键(例如开、关、制冷、辅热、温度加、温度减功能键)进行学习是很好的选择。这样可以尽量避开对重复码、翻转码的学习,减少按键学习数量和降低学习复杂性。另外,如果核心功能按键要涉及到重复码、翻转码的学习,可以利用原遥控器提供的交互性界面来作为辅助。
    各厂商红外编码协议的不同给码型识别带来了很大的困难。编码中对数据0和1的表示多种多样,更有甚者并不直接表示0和1。例如用4种不同波形来表示00、01、10、11这4种组合。由此可见,在学习过程中识别0、1是很困难的。
    如果对0、1不加判别,而只是分别测量学习高低电平时间,则不管学习过程还是发射过程都要简单得多[1]。下面是一个说明这一学习过程的例子。
    图3中的已调红外信号,数据0由528 μs的低电平加上527 μs的低电平表示,数据1由528 μs的低电平加上1 582 ?滋s的低电平表示。可以计算出该信号持续时间为42 ms。现在以“电平类别+持续时间+电平类别+持续时间+电平类别+ …”的方式来对它进行重新编码(其中0表示低电平,1表示高电平,持续时间是相应电平保持的时长),则对图3的信号重新编码为:    1+8440+0+4220+1+528+0+527+1+528+0+527+1+528+0+527+1+528+0+1582+1+528+0+1582+1+528+0+527+1+528+0+1582+1+528+0+1582+1+528+0+4220+1+528+0+1582+1+528+0+527+1+528+0+527+1+528+0+527+1+528+0+1582+1+528+0+527+1+528+0+1582+1+528+0+527+1+528

    上面的编码若用字符串来表示,要占用296个字符的空间,即296 B。可以看出这种编码将耗费更多的存储空间,并且对于发码结束的判断也存在难点。在前文提到,本方案将重新编码的数据先进行缓存,最后还要存入存储容量足够大的集中控制模块,所以对于存储空间的问题可以得到解决。对于发码结束判断的问题,本文提出“饱和截尾校正法”。该方法的解释如下:在学习过程中,对码的学习时间尽量延长,目的是确保学习一定完成。由于学习后要验证码型识别的正确性,验证的过程中可以截去冗余的编码信息。测试编码时,在保证码的学习正确的前提下,从后往前逐步删除已经正确学习的编码的尾部,直到编码不能再执行正确控制功能,此时完成学习。
2.2 学习的流程
    图4是对一个遥控器进行学习的过程。每一个遥控器的调制方式只需在最初判断一次,对于每一个要学习的按键,先学习后测试,然后再存入单片机的ROM,当所有要学习的按键学习完后,再将单片机中ROM的内容一次性读入ARM的ROM中进行存储。考虑到单片机ROM的大小,学习完一个遥控器就进行清空。

3 集中控制模块
    集中控制模块是系统的核心,它由一个 ZigBee模块和一个基于ARM的SoC组成,系统依靠它进行自动控制。
3.1 ZigBee模块
    ZigBee是一种基于IEEE802.15.4标准的无线通信协议。根据该协议可以提供短距离、低功耗的无线通信技术。ZigBee技术具有功耗低、可靠性和安全性高、网络容量大、成本低等特点,它的通信距离在100 m左右。
    ZigBee可以形成星形、树形和网状网络,这些网络结构由ZigBee协调器(ZC)、ZigBee路由器(ZR)和ZigBee终端结点(ZE)这3种结点类型组成。本设计方案使用星形拓扑结构。星形网络由一个协调器与多个全功能设备(FFD)或精简功能设备(RFD)组成,在该网络结构中,只有协调器与终端设备间才存在直接的通信。
    ZigBee协议栈建立在IEEE802.15.4的PHY层和MAC子层协议之上。它另外实现了网络层(NWK)和应用层(APL)。在应用层内提供了应用支持子层(APS)和 ZigBee设备对象(ZDO)。应用框架中则加入了用户自定义的应用对象[2]。本设计方案主要是利用ZigBee网络来传送控制命令,在传送过程中要用到ZigBee协议,在编程中主要关注的是协议栈中的应用层。
3.2 基于ARM的SoC
    ARM是一款功能强大的处理器,以它为核心扩展而成的片上系统(SoC)可以移植多种嵌入式操作系统,因而可以提供强大的软件功能。ARM模块是ZC和学习模块的桥梁。
    为了实现数据的方便管理和集中控制,可以向ARM板中移植sqlite。sqlite是一款使用广泛的开源数据库软件,它占用资源少,便于移植。sqlite使用类似于sql的结构化查询语言,支持5种存储类型:空值(NULL)、无符号整型(INTEGER)、浮点型(REAL)、文本字符串(TEXT)和存储Blob数据(BLOB),这些存储类型完全满足需求。为了对所有空调进行管理,建立ac_type表、ac_name表和ac_type_function系列表来存储数据。ac_type表用来表示所有同类型空调的公共信息,ac_type_function表则是存储每一种不同类型遥控器被学习的功能键所对应的编码信息,ac_name表用来描述每一个空调的基本信息。数据表的构建很灵活,可以方便地删除、添加和修改数据表,而数据库中表的相应变化与空调的变化相对应。为了直观形象地说明数据如何存储,给出了3个具体的表加以说明,如表1~表3所示。

    表1中的编码字段是由学习模块和原遥控器发出的红外信号进行解调再编码形成的字符串。表2中的调制方式字段记录遥控器所使用的是何种类型的调制方式。表3对每一个空调的信息进行了详细的记录,地址字段对应每一个ZigBee芯片的MAC地址,通过ZigBee芯片的MAC地址可以唯一定位空调。
    当要控制某一个或多个空调时,具体的方法是先要对数据库进行查询,然后读出所需要的字段数据,接着要对数据进行“组合”。如要关掉一个空调,先要进行一系列的查询,查询完后可得出组合字符串格式“地址+载波频率+调制方式+编码”。这些数据将通过ZigBee协议进行封装,单控制模块正是通过这些数据还原原遥控器红外信号。
    向ARM SoC中移植开源的Web服务器即可将其构建成一个小型服务器,从而可以响应用户从网络中发来的控制请求。结合数据库技术,集中控制系统可实现“软件化控制”,使得控制动作、方式、权限和个性化可灵活定做。不仅实现集中化控制,并且可以因个人而灵活使用。
3.3 数据封装
    当应用程序需要发送数据时,将通过应用支持子层(APS)数据实体发送数据请求到APS,下面的每一层都会为数据附加相应的帧头,组成要发送的帧信息[3]。图5显示了在ZigBee协议中数据是如何层层封装的。
    在分层的通信协议中,层与层之间通过服务接入点(SAP)相连接。SAP是层与层之间的唯一接口,其具体的服务以通信原语的形式供上层调用。在上层调用下层服务时,只要遵循统一的原语规范,并不需要去了解如何处理原语,这样就做到了数据层与层之间的透明传输[4]。

4 单控制模块
      单控制模块中ZE负责接收和解封装ZC发送过来的数据包,单片机的工作就是根据解封装出来的数据信息控制红外发射电路。
      单控制模块中的所有ZE与集中控制系统中的ZC形成星形网络,每一个空调与一个ZE相对应。图6中左边的流程是集中控制模块向单控制模块发送数据包的过程。ARM中的主控程序接受用户操作请求,根据用户命令查询数据库,获得要控制空调的记录信息,记录信息经层层封装成帧,通过ZC发送到相应的ZE。右边的流程是单控制模块发送红外控制信号的过程,ZE接收到数据,在应用层对它进行解析,得到想要的数据,然后由单片机对编码进行调制,从而产生调制的红外控制信号。

    本文提出的空调集中控制方案具有很好的兼容性、实用性和扩展性。另外它还可以很好地适应物联网的发展,如果空调厂商在空调内置ZigBee模块,那么这种无线的集中控制方案硬件设计将会更加精简,并且实现预定的功能将更加方便。
参考文献
[1] 顾晓红.学习型遥控器中的码型识别[J].电子与封装,2009,9(10):42-43.
[2] ONDREJ S,ZDENEK B,PETR F,et al.ZigBee technology and device design[C].Networking,International Conference  on Systems and International Conference on Mobile Communications and Learning Technologies,2006.
[3] 章伟聪,俞新武,李忠成.基于CC2530及ZigBee协议栈设计无线网络传感器节点[J].计算机系统应用,2011,20(7):186-189.
[4] 赖联有.ZigBee协议分析及其实现[J].齐齐哈尔大学学报,2010,26(1):50-53.