基于ARM和Linux的智能嵌入式网络监控系统
2013-10-17廖建尚陈益民曹成涛
廖建尚,陈益民,曹成涛
(1.广东交通职业技术学院计算机工程学院,广东广州 510520;2.广东工业大学信息工程学院,广东广州 510520)
智能家居是以住宅为平台,集系统、结构、服务、管理和控制于一体,利用先进的网络通信技术、电力自动化技术、计算机技术以及无线电技术,将与居家生活有关的各种设备有机结合,同时通过网络综合管理家中设备,创造优质、高效、安全、健康和环保的居住生活环境空间。
智能家居的主要功能有:安全监控、家电控制、家居商务、办公和家庭医疗保健、监护、通信服务以及网络教育。
智能家居的稳定发展需注意:(1)由于无线射频识别等设备被用于智能家居系统中,应及时解决标准问题,这样行业才能健康发展。(2)解决产品价格问题,智能家居生产商可与建筑开发商合作,打造智能建筑和智能小区,大范围推广应用从而降低成本。文中提出了一种基于ARM和Linux的智能家居嵌入式网络监控系统的低成本解决方案。
1 智能家居系统设计
该研究采用ARM硬件平台,使用S3C2440,操作系统采用 Linux-2.6.30.4[1],服务器采用 BOA,服务器程序利用CGI语言编写,设计目标是通过互联网远程登录服务器,并通过B/S的运行方式远程监测和控制家居情况,总体架构如图1所示。
图1 智能家居系统设计架构图
2 开发系统的相关技术
2.1 嵌入式微处理器
S3C2440是三星公司推出的ARM微处理器,采用ARM920T的内核,实现了MMU、AMBA BUS和哈佛高速缓冲体系结构,具有丰富的外设接口,有60个中断源,24个外部中断以及130个多功能输入/输出口,有AHB和APB总线,同时支持NAND Flash启动、DMA控制以及I2C总线、I2S总线、SPI和USB主从设备等。
2.2 外围电路
该系统所使用的外围电路主要有:DM9000完成网络TCP/IP通信;数字温度传感器DS18B20完成温度采集监控功能;红外感DYP-ME003完成室内安全监测;步进电机模拟实现窗帘开闭等功能。
2.3 Linux嵌入式操作系统
Linux是类Unix操作系统,在嵌入式系统方面应用广泛,目前的嵌入式系统多数选择Linux作为嵌入式操作系统,其具体特点有:(1)可裁减内核,系统稳定,支持多种任务。(2)支持多种CPU和各种体系结构(如 X86、ARM、MIPS等)。(3)提供完整的开发工具和SDK开发包。(4)支持各种嵌入式芯片的驱动和大量的硬件设备驱动。(5)开放源码,丰富的软件资源,可任意修改。
2.4 嵌入式Web服务器
随着Internet的广泛应用,在嵌入式设备交互中也逐渐采用基于Web的访问方式,在嵌入式设备上运行Web服务器,用户端可通过Web浏览器对嵌入式设备进行管理和监控。作为一种单任务Web服务器,BOA只能依次完成用户请求,但BOA支持CGI语言,可为其程序创建出一个新的进程来执行新任务。
3 系统功能设计
功能设计主要完成Linux驱动程序[2]和应用程序的设计,应用程序通过调用驱动程序从而实现对硬件的控制[3]。其中,驱动程序主要完成了 LED 驱动[4]、DS18B20温度传感器驱动、红外传感器驱动和电机驱动程序设计,驱动程序全部采用字符设备驱动程序,应用程序主要完成远程访问端模块、温度监测模块、红外监测模块、灯光控制模块和窗帘控制模块等软件设计,该应用程序使用CGI语言实现[5]。软件整体设计如图2所示。
图2 智能家居网络监控系统整体设计图
3.1 LED驱动软件设计
发光二极管,是一种可将电能转化为可见光的固态半导体器件,可直接将电能转化为光;使用板上LED模拟灯光控制,达到控制LED灯光的效果。
该开发板使用的4个LED分别占用了S3C2440的GPIO中的 GPB5、GPB6、GPB7和 GPB8的 GPIO管脚,LED电路是共阳极电路,因此对管脚设为低电平,则LED灯亮;设为高电平,则灯灭。
驱动程序主要对GPB的控制寄存器GPBCON和数据寄存器GPBDAT进行操作,GPB5主要对应GPBCON第10位、11位以及GPFDAT的第5位进行操作;对GPFCON[11:10]设为 01 为输出;GPFDAT[5]设为输出则可对管脚进行置1和0的操作,其他3个IO操作相同。
Linux驱动程序主要利用ioctl发送命令,设置cmd为不同的值则操作不同的LED,传送参数到驱动的值分别为1和0,1表示高电平,则灯灭;0表示低电平,则灯亮。
3.2 温度传感器驱动软件设计
DS18B20采用独特的单总线接口方式,每只DS18B20均有一个唯一存储在ROM中的64位编码。最前面8位是单线系列编码:28 h,接着的48位是一个唯一序列号,最后8位是以上56位的CRC编码,驱动程序编写:
(1)选定S3C2440一个GPIO作为连接DS18B20数据线,经查电路图和 S3C2440的芯片手册,选择GPF3为连接线。
(2)主要对GPF的控制寄存器GPFCON和数据寄存器GPFDAT进行操作,GPF3主要对应GPFCON第6、7位以及GPFDAT的第3位进行操作;对GPFCON[7:6]设 00 为输入,设 01 为输出;GPFDAT[3]设为输入时,相应位即为管脚的状态,设为输出则可对管脚进行置1、0操作。
(3)结合 S3C2440的 GPFCON和 GPFDAT及DS18B20时序利用C语言编写Linux下驱动程序,该程序采用实现read接口函数的字符设备驱动。
3.3 红外传感器驱动软件设计
采用DYP-ME003监测智能家居室内安全状态,DYP-ME003是热释电红外传感器,是一种可检测人或动物发射的红外线而输出电信号的传感器,人进入其感应范围则输出高电平,离开感应范围则自动延时关闭高电平,输出低电平。
(1)选定 S3C2440中一个 GPIO作为连接DS18B20数据线,经查电路图和S3C2440的芯片手册,选择GPF4为连接线。
(2)主要对GPF的控制寄存器GPFCON和数据寄存器GPFDAT进行操作,GPF4主要对应GPFCON第8位、9位以及GPFDAT的第4位进行操作;对GPFCON[9:8]设00为输入,相应位即为管脚状态。
(3)结合S3C2440的GPFCON和GPFDAT及DYP-ME003原理图可利用C语言编写Linux下驱动程序,该程序采用实现read接口函数的字符设备驱动,并申请外部中断,GPF4对应的中断源为EINT4,当发现目标时,将同时触发LED和蜂鸣器报警。
3.4 步进电机驱动软件设计
该设计采用了5相4线制步进电机,因此开发板共需4个IO管脚连接电机,设计步骤为:
(1)选定S3C2440中4个GPIO作为连接DS18B20数据线,选择GPG7、GPG9、GPG10和GPG11为连接线。
(2)主要对GPG的控制寄存器GPGCON和数据寄存器GPGDAT进行操作,GPG7主要对应GPGCON第14、15位以及 GPFDAT的第 7位进行操作;对GPFCON[15:14]设01为输出,管脚状态即为相应位的状态,其他GPG9、GPG10和GPG11依次类推。
(3)结合S3C2440GPGCON和GPGDAT及步进电机驱动原理,可利用C语言编写Linux下驱动程序,该程序采用实现ioctl接口函数的字符设备驱动,具体流程图如下。
图3 步进电机驱动流程图
3.5 远程访问端模块设计
该模块的功能为:用户可在计算机的浏览器上,通过嵌入式设备上搭建的嵌入式Web服务器,对用户室内传感器获取的数据进行实时监测,并通过网络通信及数据交换来实现改变室内家电的状态。
登录模块完成用户名与密码的校验,验证后进入管理界面;界面模块包括各模块的操作,并支持操作进入各子系统操作;温度监测界面子系统显示各房间的温度;家电管理子系统显示家电的状态,同时可操作界面来设置各类家电;灯光管理界面显示和操纵各房间的灯管控制情况。每个模块通过核心接口同时利用CGI传输数据和操作指令,完成家电的操作和数据保存,其流程如图4所示。
图4 远程访问端模块流程图
3.6 温度监测模块软件设计
温度监测模块具有检测温度的功能,可在各房间布署温度传感器,使用DS18B20温度传感器采集温度,并检测所处位置的温度值。在未发生报警时,每隔10 s进行1次采集;达到报警值后,每隔5 s采集1次,并触发灯光和蜂鸣器报警,当达到危险值时,采集数据通过cgi传送到Web浏览器显示实时数据。并通过操作Web界面发送指令到服务器端进行相应操作,如图5所示。
图5 温度监测子系统流程图
3.7 红外监测模块软件设计
红外监测模块使用的硬件是:DYP-ME003,服务器启动时自动加载驱动,通过Web浏览器可定时读取红外监测数据,以便观察各房间的情况[6]。若发现目标,即触发报警蜂鸣器和LED报警,具体流程如图6所示。
图6 红外监测子系统流程图
3.8 灯光控制模块软件设计
该模块的主要功能是:通过操纵该灯光模块,响应Internet网络控制命令,实现对家庭照明设备的控制。即控制家中某个灯管的点亮或熄灭。模块采用板上LED灯模拟实际的照明系统。并建立一个文件对LED灯的状态进行保存,故在/project/web/data目录下建立一个文本文件:led_data.txt,将每次对LED灯的操作均进行led_data.txt的数据实时更新。图7为模块数据逻辑流程图。
图7 灯光控制子系统流程图
3.9 窗帘控制模块软件设计
该模块的主要功能是:通过操纵步进电机,利用CGI语言传送控制命令来对其进行操纵,在/project/web/data目录下建立一个文本文件:curtain_data.txt,每次对于各家电的操作均以curtain_data.txt的数据进行实时更新保存,也可根据curtain_data.txt的情况显示在Web浏览器上,方便对窗帘进行实时操作从而实现窗帘的开合,图8为该模块的数据流程图。
4 系统运行测试
4.1 温度监测模块测试
登录后进入温度监测界面,可显示各房间的温度值,如图9所示。
4.2 红外监测模块测试
点击红外监测程序可进入红外监测子系统,该程序可显示各房间内的安全状况,如图10所示。
图10 红外监测子系统运行图
4.3 灯光控制模块测试
点击灯光控制模块可进入灯光控制子系统,该程序可显示和控制各房间内的电灯,如图11所示。
图11 灯光控制子系统运行图
5 结束语
文中设计了基于嵌入式平台的智能家居系统方案,实现了基于 Linux的设备驱动程序,其中包括DS18B20温度传感、红外传感、LED和步进电机,使用CGI语言完成应用程序设计,实现了智能家居系统设备的远程监控,通过互联网及时监控家中的具体情况,包括温度信息、灯光控制和家电控制等。选择以嵌入式为解决方案,有效解决了对PC机的依赖,Web服务器选择BOA作为嵌入式服务器,实现了网络远程监控数据交互。
[1]DANIEL P.Bovet.Understanding the linux kernel[M].北京:中国电力出版社,2007.
[2]SREEKRISHNAN V.Essential linux device drivers[M].北京:人民邮电出版社,2009.
[3]JONAHAN C.Linux device drivers[M].北京:中国电力出版社,2006.
[4]SREEKRISHNAN V.Essential linux device drivers[M].北京:人民邮电出版社,2009.
[5]沈玉龙,王琨.智能家居控制系统设计[J].电子科技,2004(5):47-50,54.
[6]巩艳华.基于ARM7处理器的嵌入式智能家居监控系统[J].电子科技,2009,22(8):39-42.