目前智能家居流行的组网方案有4类:基于TcP/IP协议的控制网络;基于EIB(European InstallaTIon Bus)总线的控制网络;基于电力载波的控制网络;基于无线协议(ZigBee)的控制网络。本文采用TCP/IP协议与CAN总线协议,两种协议取长补短,使整个系统性能更加稳定,功能更加丰富。
完整的智能家居系统包括5个部分:主控模块、电器控制子系统、照明控制子系统、安全控制子系统和网络控制子系统,5个部分功能上各司其职,逻辑上构成一个完整的控制实体。整个系统为人们提供智能、舒适、安全的家庭环境,同时提供远程信息监控能力。
主控模块是智能家居的大脑,子系统是智能家居的四肢。主控模块,负责子系统的信息集中、存储、分析和决策。嵌入式芯片发展使主控模块越来越精巧,功能日益丰富。
电器控制子系统,负责监控电器的运行状态,执行主控模块的控制指令。网络家电的发展扫清了不同家电的识别和互连的障碍,也简化了电器控制子系统的设计。照明控制子系统,又名情景控制,核心是对光影和色彩的智能控制。该子系统控制灯光在角度、明暗、颜色等方面的组合以满足不同的情景需求。该子系统也满足时间控制的概念,具有机械动作传感器、人体移动传感器和照度传感器等。
安全控制子系统,针对引起安全问题的诸多因素,起到防范和报警的作用,烟雾传感器、温度传感器、一氧化碳传感器负责环境安全控制;可视对讲系统预防陌生人的干扰;门磁传感器和窗磁传感器起到防盗作用。
远程控制系统子系统,满足家庭网络和公共网络的联网控制功能。孤立的家庭网络使智能家居大打折扣,而和GPRS(General Packet RADIo Service)网络和Internet互联,又使智能家居别样精彩。
智能家居系统的组成如图1所示。智能家居是一个庞大的系统,主控模块是系统的控制中枢和通信中枢,家庭网络是系统的神经系统,传输系统信息流和控制流。家居中的设备众多,设备的接口各异,要实现各种设备的智能控制面对巨大挑战。针对目前智能家居系统功能单一、联网能力差的缺点,本设计采用分布式技术、总线技术和嵌入式技术构造了一个多功能、通信能力强的智能家居主控模块。
1 主控模块的功能和硬件设计
嵌入式技术的发展,特别是嵌入式控制芯片在功耗、速度、集成度方面的持续发展,使用单片控制芯片完成整个系统的控制成为可能。主控模块从图2中可以看出要完成以下工作:和子系统的联网、GPRS通信功能、以太网通信功能、显示功能、监控软件等。其中GPRS通信和以太网通信逻辑上属于网络控制子系统,但是这两种功能是在主控模块上实现的,这样一方面提高了集成度和稳定性;另一方面充分利用了主控模块在硬件和软件上的资源。
arm芯片选用S3C2410,该芯片的很多特性很适合做智能家居的主控模块。内置的STN/CSTN/TFT LCD控制器和4线制电阻式触摸屏控制器简化液晶显示的电路设计;标准工作频率为203 MHz,运算能力强,功耗低,可满足主控模块的运算要求;外围接口丰富,为主控模块的联网功能提供良好的支持。GPRS模块选用支持AT命令集的西门子 MC35I模块,它与主控模块通过串口进行通信;以太网芯片选用Realtek RTL8139以太网控制器;主控模块和子系统之间由CAN总线组网,主控模块上相应的有CAN通信电路;FLASH,SDRAM,EEPROM和SD卡都是信息存储介质,设计EEPROM来存储系统配置信息,配置64 MB NANDFLASH和64 MB SDRAM;语音电路输出提醒或警告声音等;信息包含时间信息才有意义,主控模块上时钟电路提供精确的时间;液晶屏可以直观地显示各种信息,有利于增强系统的亲和力,选用8.O英寸TFT液晶屏。
2 主控模块和子系统的CAN总线通信
主控模块的处理能力有限,多个子系统和主控模块由现场总线组网构成一个分布式控制系统。各个子系统在主控模块的控制下协同工作。主控模块和子系统之间主要传输信息流和控制流。主控模块到子系统传输的主要是控制流,这些控制流完成子系统的配置或者命令子系统完成特定的任务。子系统到主机传输的主要是数据流,数据流主要包含子系统中各设备的运行状态或传感器数据等。主控模块和子系统的通信可以采用有线方式或无线方式。鉴于有线方式速度快、可靠性高、成本低、技术成熟等优点,本系统采用CAN总线完成主控模块和子系统的联网。系统的联网结构如图3所示。
CAN协议是最流行的现场总线协议。为保证协议的灵活性,该协议只定义了数据链路层和物理层,一般CAN控制器会实现这两层协议,针对具体应用需要开发应用层协议。CAN应用层协议标准有DeviceNet和CANOpen。这两种协议是面向大型系统,针对工厂自动化控制和汽车电子开发的,所以智能家居需要使用自定义的CAN应用层协议。智能家居中子系统和主控模块采用点对点的通信方式。自定义应用层协议基于非对称型主从式网络结构。应用层帧结构定义如图 4所示。Dir(1 bit):数据传输的方向,0表示主控模块到子系统;1表示子系统到主控模块。
Address(7 bit):CAN总线网络中设备的地址编号。
Type(3 bit):帧类型,分为:广播单帧,广播多帧开始,广播多帧结束,普通单帧,普通多帧开始,普通多帧结束。
Index(2 bit):索引号,指示多帧时,某帧的索引编号,多帧最长4帧。
Count(3 bit):帧包含的字节数。
Data(8 byte):帧中的数据负载。
为了防止由于数据交换错误而影响整个系统安全,有两种策略可以考虑:提高系统数据传输的可靠性;软件处理中增加必要的容错处理。CAN协议采用数据块编码的方式通信,CAN总线在40 m以下具有高速(1 Mbit/s)数据传输能力。CAN协议非常适合主控模块和其他子系统之间的通信和控制。
3 主控模块的软件设计
3.1 主控模块的软件架构
智能家居主控模块要完成4个子系统的协同工作,采用模块化设计思想,需要4个软件模块分别处理4个子任务,主控模块的软件架构如图5所示,主任务协调4个子任务正常工作。每个子系统又可以划分成很多更细的任务。如果采用结构化的程序方法,程序设计非常复杂,系统会存在很多潜在问题。嵌入式硬件资源日益丰富,成本也较低廉,资源的增强使软件有更多的资源可以利用。主控模块的硬件资源非常丰富,软件系统也非常庞大,软件系统无法避免在访问资源时遇到冲突、数据同步、数据交换的问题,所以需要一个嵌入式操作系统统一管理硬件资源,并对软件开发提供良好的基础环境,比如:内存管理、进程管理、存储管理、文件系统、设备管理、消息机制、数据同步、数据交换、多线程、套接字等。操作系统虽然占据一定的存储空间,但是给软件开发带来的便利更加可观。操作系统采用 Linux2.6内核。主控模块没有特殊的外设,驱动开发和内核开发的任务量就很小。开发工作主要集中在子系统的任务开发和监控软件的开发上。Linux 开发是在宿主机上建立交叉编译环境,根据硬件的配置确定编译选项,编译后得到Linux的可执行映像。
3.2 主控模块的主程序
智能控制主控模块硬件上资源丰富,软件上有Linux操作系统的支持,主控模块的软件开发运用了模块化思想,模块的划分依据是高内聚低耦合,将逻辑上紧密耦合的一组功能划分为一个模块。模块划分结果以数据流图呈现出来。主控模块的数据流图如图6所示。安全控制子系统、电器控制子系统和照明控制子系统的数据流和控制流,通过CAN总线网络传输到主控模块,主控模块的CAN通信监控子线程解析CAN网络中传输的数据。接着,主控模块的数据分发处理器子线程根据数据的类型将数据分发到相应的数据处理程序。处理后的数据存储到数据库中,并在界面直观显示分析后的信息。
网络模块在逻辑上是一个独立的模块,在实现上由于其特殊性是在主控模块实现的。远程PC通过Internet方式,手机通过GPRS方式将网络流发送到网络模块,网络模块会调用网络信息处理模块处理网络流,数据处理后或存储或通过CAN总线转发到其它控制子系统。
4 系统的测试
测试主控模块的性能主要体现在通信速度和通信质量。为了获得这些参数,需要测试主控模块和子系统之间的数据传输能力。测试方式是:无竞争点对点双向数据传输测试;有竞争点对点双向数据传输测试。测试指标是:传输时间和误码率。传输200 KB的数据量测试结果如表1所示。
测试结果表明主控模块和子系统之间的通信比较稳定,数据传输速率较高,可以满足实时性要求。测试中误码率很低,一方面说明CAN协议的稳定性;另一方面由于在数据测试中的数据量较小,从而出现错误的概率就小。
5 结论
智能家居系统是一个复杂的系统,由于控制对象过多,单个智能控制系统无法完成控制任务,需要构成一个家庭控制网络。智能控制系统主控模块在网络中起到调度和协调的作用。本文分析了家庭控制网络的结构,提出了主控模块的软硬件模型和设计方案,提出了主控模块和其他功能子系统联网的一种实用通信方案。
较其它方案,本方案内部采用CAN总线协议,具有组网方便、性能稳定、成本低廉的特点;外部采用TCP/IP协议,具有远程控制能力、扩展性强的特点。最后介绍了主控模块软件的设计和主控模块和其它功能子系统之间数据传输性能测试。测试结果表明,主控模块结构合理,和子系统通信能力强,能较好地完成主控模块和子系统之间数据流和控制流的双向传输。