39 基于ARM和ZigBee无线网络的智能家居系统设计_职称驿站
论文发表指导_期刊投稿推荐_期刊论文发表咨询_职称驿站

论文发表指导,期刊推荐,国际出版

职称驿站学术导航
关闭职称驿站导航

论文发表职称晋升 全方位咨询服务

学术出版,国际教著,国际期刊,SCI,SSCI,EI,SCOPUS,A&HCI等高端学术咨询

基于ARM和ZigBee无线网络的智能家居系统设计

来源:职称驿站所属分类:微电子应用论文
发布时间:2011-09-24浏览:155次

  摘要:设计了一种基于ARM和ZigBee无线网络的智能家居系统,阐述了智能家居系统的方案设计,并给出了关键环节的实现方法。该系统能实现对家居环境监测和家电控制,在现代生活中具有广阔的应用前景。
关键词: ARM;ZigBee;智能家居;嵌入式Web服务器

1引言
智能家居利用先进的计算机技术、网络通讯技术、电力自动化技术,将与家居生活有关的各种子系统有机地结合在一起,进行网络化的综合管理[1]。从目前的发展来看,嵌入式系统和无线网络技术应用在智能家居系统已成大势所趋。相比传统的家居系统,嵌入式系统和无线网络技术日益成熟,无线传感器产品成本低廉,而且能提供更大的灵活性、流动性,省去了花在综合布线上的费用和精力,因而更适应于家庭、小中型办公场所。
本文设计了一种具有数据传输稳定、功耗要求低、系统可靠、成本低廉等特点的智能家居系统。该系统以ARM处理器S3C2440和嵌入式Linux操作系统[2]为核心平台,通过ZigBee无线网络[3]把家电设备与嵌入式Web服务器[4]相连接,使得用户可以通过客户端的浏览器实现对家居环境的监测和家电设备的控制。
2系统方案设计
基于ARM和ZigBee无线网络的智能家居系统原理框图如图1所示。系统以S3C2440嵌入式处理器为核心,外扩NANDFlash、SDRAM、和网络通讯接口等。多个ZigBee无线模块节点CC2430组成无线网络,各终端节点连接传感器或者家电设备,通过无线传输的方式与ZigBee协调器进行通信,ZigBee协调器通过SPI接口与ARM进行数据传输[5]。其中S3C2440处理器是韩国三星基于ARM公司开发的ARM920T处理器核,ZigBee网络节点是成都无线龙公司开发的网络微型节点CC2430。
智能家居系统由客户端、嵌入式Web服务器和家电设备三部分组成,ARM中的嵌入式Web服务器是家电监控系统的核心,嵌入式Web服务器通过ZigBee和家电设备连接,通过网线和客户端相连接。因此,本系统的关键环节是:ZigBee通信网络、嵌入式Web服务器和SPI接口的Linux驱动。
本设计中选用嵌入式Linux操作系统作为软件开发平台,Linux内核版本为2.4.18,交叉编译工具为arm-1inux-gcc(2.95.3版本),根文件系统选用Cramfs,用户文件系统采用YAFFS格式。

图1智能家居系统硬件结构图
3ZigBee通信网络的建立
ZigBee无线传感网络主要功能是传输家居实时信息和控制消息。本系统采用的无线传感器网络硬件平台为成都无线龙通讯公司的无线单片机专业开发系统C51RF-3-PK,该系统的处理器是支持ZigBee协议的SoC射频(RF)芯片CC2430,并且免费提供基于最新ZigBee协议规范的协议栈Z-Stack,协议的应用开发环境为IAREmbeddedWorkbenchfor8051。ZigBee通信网络的建立主要涉及应用数据收发和串口通信的应用程序设计。
3.1应用数据收发模块
在ZigBee网络中,应用层定义了两种数据服务传输格式:KVP(键值对)和。本系统选择采用MSG(消息)数据服务格式。ZigBee网络应用数据收发模块分为数据发送子程序和数据接收子程序。
在Z-Stack协议中,应用层通过调用AF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)函数来发送数据。其中,dstAddr带有目的地址的地址类型和地址信息,cID为待发送数据的16位簇信息(clusterID),len表示待发送数据的长度大小,*buf为待发送数据的首指针。为实现节点消息的管理,本文将簇信息节点间发送的消息进行分类,分类如下表1所示。
表1应用层ClusterID定义表
ClusterIDName ClusterID 说明
C_COMMOND 0x0100 控制中心节点发送指令到该传感器节点
C_SET_PERIOD 0x0200 控制中心节点设置传感器节点采样周期
S_DATA 0x0300 传感器节点发送数据信息到控制中心节点
S_NODE_INFOR 0x0400 传感器节点发送节点信息到中心节点
.... 其他 扩展保留
在Z-Stack中,当节点接收到数据时,操作系统抽象层(OSAL)会产生一个AF_INCOMING_MSG_CMD事件通知,用户只需要在该事件下对接收到的消息进行处理即可。消息的处理过程中,用户可根据消息中的ClusterID分别进行处理。本系统按照表1中ClusterID的定义,控制中心节点的每个ClusterID下的功能函数如下所示。
...
If(event==AF_INCOMING_MSG_CMD)
{My_MessageMSGCB(afIncomingMSGPacket_t*pkt)
{…
switch(pkt->clusterId)
{caseS_DATA://接收到传感器发来的数据信息;
s_data_process(pkt);//处理接收到的数据消息;
break;
caseS_NODE_INFOR://接收到传感器发来的节点信息;
node_infor_process(pkt);//处理接收到的节点信息;
break;
}

}}
...
3.2串口通信模块
在Z-Stack中,节点的串口通信单元实现文件为hal_uart.c/.h,只需要进行适当的配置就可以调用该单元,实现数据的收发。该模块功能函数包括:串口初始化voidHalUARTInit(void)、开串口uint8HalUARTOpen(uint8port,halUARTCfg_t*config)、关串口voidHalUARTClose(uint8port)以及读串口uint16HalUARTRead(uint8port,uint8*buf,uint16len)和写串口uint16HalUARTWrite(uint8port,uint8*buf,uint16len)等。本系统选用串口0与管理中心通信,对其串口0的配置如下所示:
uartConfig.configured=TRUE;
uartConfig.baudRate=HAL_UART_BR_38400;//比特率:38400
uartConfig.flowControl=FALSE;//不使用流控制
uartConfig.flowControlThreshold=SERIAL_APP_THRESH;
uartConfig.rx.maxBufSize=SERIAL_APP_RX_MAX;
uartConfig.tx.maxBufSize=SERIAL_APP_TX_MAX;
uartConfig.idleTimeout=SERIAL_APP_IDLE;
uartConfig.intEnable=TRUE;
uartConfig.callBackFunc=rxcb;//串口数据接收回调函数
4嵌入式Web服务器的实现
嵌入式Web服务器能将采集的家居信息供远程用户在PC上查看,用户可以通过Web页面了解家中的实时信息并进行必要的控制。本系统选用Boa作为嵌入式Web服务器。Boa对所有活动的HTTP连接在内部进行处理,通过建立请求列表来处理多路HTTP连接请求,Boa的HTTP请求处理速度和效率很高,只为每个CGI连接创建新的进程,在最大程度上节省系统资源。
4.1Boa程序移植
回到上层目录执行命令:make&strip,在/etc目录下得到了Boa的应用程序。
4.2Boa的配置
Boa配置文件主要有两个,一个是Boa源码包中的example/boa.conf,另一个是从宿主机的/etc目录下不需做任何修改而拷贝过来mime.type文件。其中,boa.conf配置文件对Boa的启动和运行起着非常关键的作用。下面是本系统中具体的一个boa.conf文件配置。

Port80
User0
Group0
ErrorLog/usr/log/boa/error_log
AccessLog/usr/log/boa/access_log
ServerNamewww.your.org.here
DocumentRoot/usr/www
UserDirpublic_html
DirectoryIndexindex.html
DirectoryMaker
/usr/lib/boa/boa_indexer
KeepAliveMax1000
KeepAliveimeout10
MimeTypes
/etc/mime.types
DefaultTypetext/plain
CGIPath
/etc/boa:/usr/www/boa:
/usr/www/cgi-bin
ScriptAlias/cgi-bin/
/usr/www/cgi-bin/

由于本系统中Linux的根文件系统是只读的Cramfs格式,/usr目录为可读写的YAFFS格式,因此,需要将编译好的boa和配置文件下载到ARM板的/usr目录下。具体步骤是:在sur目录下建www目录,把boa、boa.conf、mime.type保存在该目录下。根据boa.conf的配置还需要:创建日志文件所在目录/usr/log/boa,创建HTML文档的主目录/usr/www,创建CGI脚本所在目录/usr/www/cgi-bin。
5Linux驱动程序开发
嵌入式Web服务器是通过SPI总线和ZigBee协调器(CC2430)通信的,驱动程序的主要任务就是把Web服务器传送过来的命令数据发送给ZigBee协调器,或是接收来自ZigBee协调器发送过来的数据。驱动程序的编写就是根据芯片之间制定的通信协议,填写file_operations数据结构,完成设备初始化、数据的发送和接收及其它控制命令的接收等工作。
应用程序使用驱动程序时,首先调用系统open函数打开此设备的驱动文件,然后,系统将调用设备驱动程序中的spi_open()函数。此函数初始化所用到的接口,操作成功后返回0,否则返回非0。
staticintspi_open(structmode*inode,structfile*filp)
{……
init_spi();//初始化引脚,设置SPI的工作模式
……
}
当用户需要发送数据时,系统将调用函数:
staticssize_tspi_write(structfile*filp,constchar*buf,size_tcount,loff_t*f_pos)
{
char*w_buf;
w_buf=(unsignedchar*)kmalloc(count*sizeof(unsignedchar),0);
copy_from_user(w_buf,buf,count);
spi_send(w_buf);//调用发送子函数,通过SPI接口把数据发送出去
kfree(w_buf);
return0;
}
此函数的主要作用是把数据从用户空间拷贝到内核空间,然后通过SPI总线把数据发送到ZigBee协调器。
6结论
本文设计了一种基于ARM和ZigBee无线网络的智能家居系统,用户可以通过Internet对家居环境和家电设备进行远程监控,能实现无线传感器网络和嵌入式系统的结合运用。相比传统的家居系统,本方案具有良好的工作稳定性和实时性,外围扩充接口丰富,网络节点体积小,安装、布置简单方便,在低功耗和低成本方面具有很强的优势。

参考文献
[1]杨士元.数字家居网络技术及应用[M].北京:电子工业出版社,2002.
[2]马春鸣.基于ARM处理器的嵌入式系统实现[M].北京:北京邮电大学,2005.
[3]DrewGislason.ZigbeeWirelessNetworking[M].Washington:Newnes,2008.
[4]吴军霞.基于ARM的嵌入式Web服务器的研究[D].武汉:武汉大学,2007.
[5]刘淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006.

《基于ARM和ZigBee无线网络的智能家居系统设计》

本文由职称驿站首发,您身边的高端学术顾问

文章名称: 基于ARM和ZigBee无线网络的智能家居系统设计

文章地址: https://m.zhichengyz.com/p-10249

相关内容推荐
一定不能错过!4本见刊快录用高的核心期刊推荐,覆盖多学科
oa sci生物类期刊有哪些?推荐10本
会计著作副主编评高级会计职称有用吗
肠道免疫相关的SCI期刊推荐9本
高级工程师职称评定要发论文还是出版著作
41本民族学与文学方向AMI收录期刊
土木工程2区sci期刊推荐9本
A类核心学术论文难发吗
未能解决您的问题?马上联系学术顾问

未能解决您的问题?

不要急哦,马上联系学术顾问,获取答案!

免费获取
扫码关注公众号

扫码关注公众号

微信扫码加好友

微信扫码加好友

职称驿站 www.zhichengyz.com 版权所有 仿冒必究
冀ICP备16002873号-3