1 引言
信息技术已在人们生活的各个方面得到广泛应用。人们对家庭居住环境的要求越来越高。智能家居应运而生,与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间;还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用提供节约方案。简言之,智能家居就是以住宅为平台,利用网络、通信及控制技术管理家中设备,来创造一个高效、舒适、安全、便利、环保的居住环境。
智能家居在我国起步较晚,目前家居网络的应用复杂而分散,没有统一的标准。大体而言可分为高层的信息娱乐网络和底层的数据采集与控制网络。在底层以微控制器为核心作为智能家居网络结点是目前家居网络的主要实现方式。本文正是基于这种方式用NXP公司的ARM7微控制器LPC2478实现了智能家居监控系统。系统可以采集多路模拟量和开关量经处理后可以为本地用户或通过CAN总线为远程用户如物业管理中心提供实时家居环境状态信息。一旦家居环境状态改变用户可迅速做出反应,以最大限度地减少安全事故的发生。
2系统方案
本系统主控采用ARM微控制器中的LPC2478,它有512K字节的程序存储空间,丰富的片上资源,片上具有LCD控制器和两个CAN接口,它非常适合低功耗、低成本的嵌入式设计。图1中有8个模拟量输入,由于在实际家居状态监控数据中模拟量较少,加之LPC2478片上有可复用8路10位模数转换器,所以本系统直接以其片上资源实现A/D功能。采所采集的模拟量经微控制器处理之后通过PA口输出到LCD显示模块(LCM1)进行本地显示,以及经 CAN1口输出到远程主机,同时也可以通过UART0以RS-232串行通信方式传送到本地PC机.开关量经过总线隔离驱动芯片(74HC245)输入到微控制器的P0~P2口。微控制器处理之后经P3口输出到8D锁存器74HC573中,然后经过驱动电路控制如照明、空调等仅需要开关的家用电器.开启用逻辑“1”表示,关闭用逻辑“0”表示,与此同时微控制器同样经CAN1口输出到远程主机,键盘电路用于设置系统的工作状态及对采集量进行本地显示。
3系统软硬件设计
下位机软件设计主要可分为数据采集模块、通信模块、键盘及LCD控制模块、开关量输出控制模块。限于篇幅只介绍数据采集模块的具体实现方式。ARM微控制器应用轮询方式进行模拟量和开关量的采集。通过设置定时器/计数器0中断,每次中断时间20毫秒,用于模拟量(AI)采样定时;定时器/计数器1中断,中断时间250毫秒,每次中断时扫描开关量输入(DI)状态.主程序开始时进行定时/计数器0,定时/计数器1,AD,DI等的初始化,初始化主要是设置定时器的中断方式(设置定时器0溢出中断,定时器1比较中断),外部中断INT0,INT1中断方式(INT0下降沿产生异步中断请求,INT1上升沿产生异步中断请求);AD,DI处于可以接收模拟量和开关量的状态,然后程序进入循环状态,等待上位机控制信息的到来,如果有控制信息到来便把相应的标志位置 1,主程序跳转到相应的服务程序产生相应操作。
l 定时器0中断服务程序
定时器0中断主要完成模拟量的数据采集与平均值计算,其程序流程图如图2所示,具体为:定时器0中断时间为20毫秒,用于AD采样计时;当AD采样次数满 15次后判断采样结束标志,如果采样结束则计算平均值然后在LCD上进行显示后,产生AD中断,最后中断返回。
l 定时器1中断服务程序
定时器1主要完成扫描开关量输入状态,其中断程序流程图如图3所示.具体为:中断时间为250毫秒,如果有开关量输入,则置开关量输入标志为1,然后中断返回。
图2定时/计数器0中断服务程序流程图
图3定时/计数器1中断服务程序流程图
上位机监控管理软件设计采用分层结构,三个功能模块从下至上依次分布在三层之中.由下向上三层依次为底层,通信层和图形用户界面层(GUI层),如图4所示:
图4 上位机软件层次结构
系统设计在底层之上加通信层,这样就可以完成本系统自定义的通信协议,由于系统要完成数据采集功能,这里的通信层也包括了数据处理模块,这样做可以简化一些设计,减小代码编写量.通信层之上是图形用户界面层(GUI层),这层的功能是把数据流从通信层中读出来,以图形方式向用户表示,这样在用户使用系统的时候就会感到自由清晰,很好地完成工作。
本系统主要应用的是串行通信协议,这个协议是定义在物理层之上的,其具体协议行为发生在底层,我们不必关心它,只需对它的设置参数进行相应的设置.另外,为完成系统的功能要求还须自定义一个数据帧或命令帧格式.所以这里通信层中的通信协议包括了两方面的内容:一个是串行端口参数设置,另一个就是自定义的数据帧或命令帧。
串行端口设置参数主要有以下几个:波特率、数据位、奇偶校验位、停止位以及编码方式.本系统中的波特率设置为19200 bit/s;数据位设置为8位;由于通信距离较近所以没有奇偶校验;停止位设为1位;编码方式采用ASCII码方式。这里的设置通过对Visual Basic 2005中SerialPort类中的公共属性BaudRate、DataBits、Parity、StopBits、Encoding的设置即可完成。
Visual Basic 2005 中的SerialPort类用于控制串行端口文件资源.它具有如下特性:提供同步 I/O 和事件驱动的 I/O,对管脚和中断状态的访问以及对串行驱动程序属性的访问。
4 结论
基于ARM核心的微控制器无论在运算速度还是系统实现成本上都优于传统的8位单片机。本文利用NXP公司ARM7微控制器LPC2478设计完成了家居网络的底层监控系统。本系统充分利用LPC2478的丰富片上资源,如LCD控制器、CAN总线接口,辅之简单的外围电路实现监控系统的硬件部分。整个监控电路板的实现成本及功耗体积相比8位单片机实现方案,大大缩小,很适合家居智能化的工程实施。另外本文还提出了PC机监控管理软件的通信层结构及实现细节,可以为家居智能化改造提供技术基础。