1、基于ARM9的智能家居网关设计与实现摘要随着芯片技术和计算机软件技术的飞速发展、人们生活水平的不断提高,家居智能化控制被越来越多的人关注,人们希望通过该技术能够更加方便简洁的对家居环境进行控制,由此智能家居便应运而生,本次设计便是根据智能家居的基本功能,通过对嵌入式ARM系统平台搭建和服务器的实现,设计并实现了智能家居网关的设计。本文主要研究基于ARM9内核的S3C2440 芯片的嵌入式智能家居网关的设计与实现。文章首先介绍了嵌入式智能家居的当前应用背景和发展情况,整体论述了系统的软硬件开发平台,主要详细的介绍了系统软硬件平台的整体搭建过程,其中包括了交叉编译环境的建立、Bootloader启
2、动引导程序的移植、linux-2.6.35内核的移植以及简易yaffs文件系统的制作;接着探讨了Web服务程序Boa和嵌入式数据库SQLite的移植;最后设计和实现了一个嵌入式智能家居服务器,主要通过编写CGI程序来实现客户端和服务器端的动态页面交互。整个系统完成了家居环境的简单信息检测,远程Web服务器的访问,同时实现了通过Internet和本地对信息的检测以及对设备的简单控制功能。经过测试表明,本系统具有良好的通用性、实用性和扩展性,可以应用到具体的嵌入式智能家居系统的开发中。关键词: 嵌入式 智能家居 ARM9 Web服务器The ARM9-based Imbedded Intellig
3、ent Home Gateway Design and ImplementedAbstractWith chip technology and the rapid development of computer software technology, continuous improvement of peoples living standard, intelligent home control are concerned by more and more people.People want to control more simply and conveniently to the
4、home environment, so the smart home have come into being.Based on the basic functions of smart home, through the platform to build embedded ARM systems and server implementation, design and implementation of intelligent home gateway is realized.In this paper, the ARM9-based embedded intelligent home
5、 gateway is designed and implemented. In this article, firstly, the embedded intelligent home application background and development of the current situation are introduced, the whole process of the system including hardware and software development platform mainly discussed, and the hardware and so
6、ftware platform including the establishment of cross-compiler environment, the transplantation of the bootloader and linux-2.6.35 kernel,the made of the simple yaffs file system are introduced in detail;Seconendly, the Boa Web server program explores and embedded SQLite database migration is debated
7、;Finally, an embedded intelligent home server which mainly achieve client and server-side dynamic pages interactive is designed and implemented by writing CGI programs.In this whole system, a simple home environment information detection and the access of remote Web server are completed, a simple co
8、ntrol function and device detections which is achieved by the Internet and local access are all realized.After testing, the system shows the good versatility, practicality and scalability and can be applied to specific embedded intelligent home system development.Key words: Embedded Intelligent home
9、 ARM9 Web server目录1 引言11.1研究背景及现状11.2研究目的11.3内容大纲22 嵌入式系统平台的搭建32.1 设计平台简介32.2嵌入式开发环境的搭建32.2.1 交叉编译环境的构建32.2.2 配置NFS文件传输方式42.3嵌入式系统平台的建立42.3.1 BootLoader的移植42.3.2 Linux内核的移植52.3.3 yaffs文件系统移植82.4 make工具简介92.5 本章小结103 下位机ZIGBEE配置123.1 Zigbee简介123.2 Zigbee协议栈简介123.3 Zigbee协议的消息格式及帧格式133.4 节点简介133.5 本章小
10、结154 服务器的搭建164.1 Boa服务器的移植164.1.1 Boa服务器简介164.1.2 Boa的移植174.2 HTML网页制作184.2.1 HTML简述184.2.2 HTML效果204.3 CGI交互程序的编写204.3.1 CGI 简介214.3.2 CGI 程序的接口规范214.3.3 CGI 程序设计234.4 嵌入式SQLite数据库254.4.1 SQLite数据库简介254.4.2 SQLite数据库的接口(API)函数264.4.3 SQLite数据库的移植264.5 本章小结275 上位机QT GUI设计285.1 QtEmbedded简介285.2 Qt 开
11、发环境的搭建295.3 Qt 程序设计295.4 Qt Creator设计简介305.4.1 Qt Creator开发环境305.4.2 Qt Creator工程创建过程简介305.4.2工程文件分析315.5 本章小结336 功能测试346.1 服务器测试346.2 Zigbee测试356.3 Qt Gui测试356.4 整体测试356.5 本章小结367 总结37谢辞38参考文献39附录40XXXX 毕 业 设 计1 引言1.1研究背景及现状随着芯片技术和计算机系统的发展,如何更加简洁方便的提高家居生活的质量成为当今社会的热门话题,相对应的家具智能化即智能家居的理念便应运而生。当下无线传感
12、器网络技术的理论突破,及支持相关无线协议的芯片的成功研制,利用无线技术组建局域网将变的越来越容易。信息化的时代对传统住宅的智能化、无线化、舒适性和安全性提出了新的挑战,随着人们生活水平地提高,对家居环境的要求从以前单纯的物理空间,到现在的延伸为一个安全、方便、舒适的居住环境。智能家居系统正是在这样的情形下,成为新世纪的热门话题。智能家居实际上就是一个先进的计算机系统,通过各种有线无线通信技术、计算机技术、布线技术以及传感技术,将家庭内部进行合理的规划从而划分为相关的子系统,并组建为一个有机的整体,通过统一的管理,让家居生活变得更加舒适、安全、高效。其一,智能家居系统可以实现主人采用更先进的方法
13、来控制家电设备,比如通过手机、Internet网络、语音识别等远程控制家用电器;其二,家居系统内部各个设备彼此可以通信,无需手动操作即可实现自动控制。嵌入式系统接入Internet也成为了嵌入式应用领域的热点之一。将嵌入式Web服务器移植到目标嵌入式系统后接入Internet,从而使该嵌入式系统成为一个功能齐全的小型Web服务器,在远程即可通过浏览器(比如IE)获取该Web服务器发布的信息,进而实现远程的实时监控和维护。嵌入式Web服务器接入Intemet后,面临着处理来自远程客户端的连接请求和传输大量的数据的任务,这就要求一方面嵌入式硬件的处理能力要更强;另一方面随着传输数据的增多,并且数据
14、类型的复杂化,在嵌入式系统中单纯的以文件存储数据的传统存储形式远远满足不了需求,解决办法是使用数据库来存储并且管理数据。在搭建嵌入式网关时使用数据库将极大的提高系统的整体性能,缩短系统的开发周期,同时通过数据库自带的安全性检查可以提高系统的整体安全性。正是基于以上背景,本论文搭建了ARM9+嵌入式Linux的嵌入式软硬件平台,在此软硬件平台之上实现了对Web服务器Boa和数据库Sqlite的移植,采用C语言和Qt设计了一个从下位机获取相关数据并进行处理和显示的平台。1.2研究目的 本论文主要是通过对Linux内核的移植为服务器的实现搭建基础平台,进而完成智能家居服务器网关的实现。本论文在智能家
15、居局嵌入式网关的经典架构的基础上根据本课题的特点做出了适当修改以适应本次设计的需求从而分成下位机Zigbee串口通信模块、上位机Gui模块、上位机Boa服务器的搭建、服务器交互html模块等,各个模块采用C、Html、Qt等语言编程,并编译连接生成目标平台的二进制的可执行文件,然后烧录至目标板NAND flash,配置目标板的启动加载文档以实现程序的开机启动从而使其脱离开发人员的管理仍可以正常工作。1.3内容大纲本文共分为七章,第一章为引言,包括研究目的,研究背景及现状等;第二章为嵌入式系统平台的搭建,主要包括交叉编译环境的构建,u-boot、linux内核的移植和yaffs文件系统的制作;第
16、三章主要阐述了Zigbee下位机的设计思路;第四章主要为嵌入式网关服务器的整体搭建;第五章为Qt Gui的整体设计。2 嵌入式系统平台的搭建2.1 设计平台简介在电子硬件设计技术领域,ARM是Advanced RISC Machines的缩写,是嵌入式微处理器行业的一家知名企业,该企业设计了大量廉价、高性能、低功耗的RISC处理器相关技术及软件。本论文的硬件平台中央处理器(CPU)为三星公司基于ARM920T内核开发的S3C2440。S3C2440适用于POS机、手持PDA设备、数字多媒体设备等,具有低价位、低功耗、高性能等优点。平台主要由微处理器、存储模块、控制模块、以太网接口模块、USB接
17、口模块、液晶显示模块、仿真调试模块组成。下面重点介绍与嵌入式Web服务器应用相关的几个模块:微处理器S3C2440、存储模块、以太网接口模块。S3C2440采用了ARM公司设计的ARM92OT内核。S3C2440既支持NANDFlash启动,又支持NORFlash启动,可以通过OMO引脚进行选择,当OMO为低电平时,系统将从NAND Flash启动系统;当OMO为高电平或者是处于悬空状态时,系统从将NORFlash启动1。本此设计的网络控制器使用的是DAVICOM公司的DM9000芯片,该控制器携带有有标准的10M/100M以太网自适应,16K的大容量FIFO,4路的多功能输入输出总线,采用全
18、双工工作模式等。本次设计的硬件平台使用了16位总线控制的DM9000以太网控制器芯片,数据总线DATA0DATA15分别与DM9000的数据总线SD0SD15连接,地址线SA4SA4进行了相应的连接,片选线nGCG3与芯片的AEN相连。DM9000芯片的工作基址为0X300。 2.2嵌入式开发环境的搭建由于嵌入式系统资源的相对缺乏从而不能在本机上(目标机)直接进行开发调试,因此嵌入式开发形成了独特的交叉开发调试方式。即完成软件的编写工作以后,先在宿主机上采用适合目标机的编译器对软件进行编译,然后将编译后的二进制可执行程序下载到目标机上相应的交叉调试。2.2.1 交叉编译环境的构建本次设计采用的
19、是arm-linux-gcc交叉编译工具的4.3.2版本,1、下载arm-linux-gcc-4.3.2.tar.gz到虚拟机的用户目录下并进入该目录,然后执行下列命令解压编译链到目标目录下#mkdir /usr/local/arm#tar zxvf arm-linux-gcc-4.3.2.tar.gz /usr/local/arm2、完成后会在/usr/local/arm下生成4.3.2目录,然后执行一下命令以配置当前环境变量#export PATH=$PATH:/usr/local/arm/4.3.2/bin3、执行下列命令查看交叉编译环境是否成功搭建#which arm-linux-gc
20、c2.2.2 配置NFS文件传输方式NFS(Network File System)最初由SUN公司开发,目的就是让不同体系结构的硬件,不同的操作系统系统通过网络可以彼此之间共享文件。在本次设计中,NFS服务器可以让目标机通过网络将宿主机所共享的文件挂载在本地目录上,在宿主机看来,访问共享的文件就相当于访问自己的磁盘分区一样,十分方便快捷3。针对宿主机的环境,具体的配置如下:1、 安装NFS服务器,执行#apt-get install nfs-kernel-server nfs-common2、 配置NFS服务器的工作位置,执行#vi /etc/exports 在文件尾加上/ *(rw,syn
21、c,no_root_squash)3、 重启服务生效,执行#service nfs-kernel-server restart2.3嵌入式系统平台的建立平台的搭建分为三部分分别是BootLoader的移植、Linux内核的移植和yaffs文件系统的移植。2.3.1 BootLoader的移植BootLoader在嵌入式系统中的作用相当于PC机中BIOS启动引导设备,其主要作用是为系统的启动做相关的引导和加载准备。CPU上电后运行的第一段代码是从存储设备的0x0地址开始运行的也就是BootLoader,它首先会对嵌入式平台的硬件资源进行相对简单的初始化,并设置好函数堆栈指针,然后加载系统内核到内
22、存中,最后设置PC值跳转到内核的内存入口地址,将系统的控制权交给操作系统的内核函数。在嵌入式领域中,BootLoader是依赖于所处硬件环境的,对于不同的处理器体系结构和外围资源来说决定着将使用不同的BootLoader。在本次设计采用的ARM9体系的处理器中,系统上电后执行的第一条指令在内存中的地址是0x0,在这个地址里应该存放的是系统的引导程序,以使得系统在上电启动的后,CPU首先执行的就是Bootloader程序。BootLoader一般包括两种工作模式:命令和加载模式2。嵌入式系统工作在正常的时候都是采用的加载模式,BootLoader把操作系统内核由系统的NAND Flash存储器中
23、直接拷贝加载到RAM中并运行。这是由于RAM存储器的存取速度要比NAND Flash存储器快的多,而且NAND Flash不支持内存的随机存取,采用这种工作方式会大大提高代码的执行效率,提高了系统的实时性。在第一次烧录BootLoader、系统内核和根文件系统以及其他应用软件的时候,采用的应该是命令模式。在该模式下,从宿主机上下载的文件将被BootLoader保存到目标机的RAM中,然后再被烧写到NAND Flash的对应地址中。开发完成后,以后也会采用命令模式对系统的底层软件进行更新。这两种工作模式,只是在嵌入式系统的开发初期中有区别。系统开发完成后,从用户的角度来看,BootLoader是
24、工作在加载模式的,只起到加载系统的作用。本次设计采用对Linux支持完善的开源的启动加载程序U-boot,其具有强大的代码可移植性和良好的运行效率。U-boot的源文件由上千个文件组成,其主要文件结构和功能如下:board:开发板相关的文件目录,根据厂商进行分类,如当前平台属于三星则其平台相关文件在board/samsung/下。cpu:体系结构相关的文件目录,按架构进行分类,当前平台采用S3C2440则其相关文件在cpu/s3c2440下,包括第一阶段启动代码start.S。common:包含所有的U-boot下载模式下各种命令的实现源码,通常每一个.c都对应着一条命令的实现。include
25、:包含编译过程中需要的头文件和开发板的配置信息。doc:开发使用文档,主要介绍不同平台的配置编译方法。drivers:设备的驱动文件,如SD卡,网卡,显示屏等。fs:所支持的文件系统,如fat等,用于访问带文件系统的存储设备tools:工具软件,如mkimage用于制作内核镜像,scripts用于生成指定的config.mk配置文件,还有支持GDB的调试工具等移植步骤如下:1、 将下载的u-boot.tar.bz2拷贝到虚拟机中,解压缩并进入目录中#tar jxvf u-boot.tar.bz2#cd u-boot2、自动配置当前平台环境,执行#make s3c2440_config3、编译#
26、make完成后会在当前目录下生成u-boot.bin二进制镜像文件,经该文件烧写到NAND Flash的0x0地址处即可完成u-boot的全部移植工作。2.3.2 Linux内核的移植嵌入式硬件系统为嵌入式软件系统运行提供了可供其运行的物理平台,是整个嵌入式设备的基础,而嵌入式系统内核则是整个嵌入式系统平台的核心部分。因此嵌入式操作系统与嵌入式硬件设备,特别是处理器及其外部设备是紧紧相关的。对不同的硬件平台上运行的嵌入式操作系统内核通常是不相关的,必须依据具体的硬件设备平台进行相应的配置和编译。由于Linux操作系统的内核源代码全部使用C语言编写,使得其具有良好的可移植性,只需要一些简单的修改
27、就能移植到不同的处理器平台上。同时Linux是一款符合GNU标准的开源操作系统,用户可以免费下载和使用,并能够根据需要对其进行定制4。因此Linux操作系统成为了嵌入式系统开发首选的操作系统。Linux内核的源文件的文件数目多达上万个,共有十七个子目录,下面列举其中的主要文件目录:arch:与处理器体系结构相关的代码,对应于每个支持的体系结构,都有一个对应的子目录,如i386、arm等,相应的目录下有处理器相关的硬件汇编启动代码。driveres:存放设备驱动代码的目录,如block块设备驱动、char字符设备驱动、mtd存储类设备驱动等。fs:存放文件系统对应的代码,如cramfs、yaff
28、s、jffs2等。include:包含编译内核所需的绝大部分头文件和配置信息。lib:于处理器体系结构无关的内核库代码,对应的与体系结构相关的内核库代码存放在arch/arm/lib下init:内核初始化代码,其中的main.c中的start_kernel函数式系统引导起来后运行的第一个函数,是内核开始工作的起点。ipc:提供进程间通信的相关代码。mm:存放与处理器体系结构无关的内存管理代码,对应的与处理器体系结构相关的内存管理代码放于arch/arm/mm下。kernel:内核管理的核心代码。net:存放网络相关的不封代码,其每个子目录都对应于网络的一个方面。scripts:存放脚本文件,如
29、配置内核时用到的make menuconfig命令等。Documentation:内核的相关文档,如版本说明,结构说明等Linux内核2.6版本对S3C2440处理器的支持十分完善,在S3C2440处理器上移植Linux只需要要较少的修改。本论文采用Linux2.6.35内核进行移植,并且采用S3C2440的默认配置文件,步骤如下:下载linux-2.6.35.tar.gz到用户目录下并解压,执行#tar zxvf linux-2.6.35.tar.gz#cd linux-2.6.351、 配置内核的编译环境以适应嵌入式硬件平台,执行#vi Makefile 修改ARCH=arm CROSS_
30、COMPILE=arm-linux-2、 将S3C2440的默认配置文件拷贝到当前目录,并配置内核加载该配置文件,执行#cp arch/arm/configs/s3c2440_defconfig ./#make menuconfig 如图2.1所示图2.1 内核配置选项选择Load an Alternate Configuration file选项载入配置文件,如图2.2图2.2 加载内核配置文件然后选择Boot options选项,配置内核的启动参数,如图2.3和图2.4图2.3 设置启动参数选项图2.4 配置内核的启动参数值完成后保存退出,执行#make zImage在arch/arm/b
31、oot下生成目标内核镜像文件zImage,然后通过USB下载线将内核烧进开发板,重新启动开发板后将能够看到内核的启动画面。2.3.3 yaffs文件系统移植yaffs(Yet Another Flash File System)文件系统是针对于NAND Flash专门设计得出的嵌入式文件系统,目前共有yaffs和yaffs2两个不同的版本,它们的区别在于yaffs2能够支持容量更大的NAND Flash芯片。yaffs文件系统在某些方面类似于JFFS 文件系统,但不同的是JFFS文件系统的设计目标是主要针对的是NOR Flash的应用场合,但是NOR Flash和NAND Flash在本质上有
32、着很大的区别,即NAND Flash不支持内存的随机读取,所以尽管JFFS1 文件系统也可以被应用到NAND Flash,但是由于其对内存的操作和启动方式方面针对于NOR Flash的特性做了一些优化,所以对NAND Flash来说通常并不是好的方案,又因为本次设计涉及到Qt的动态连接库,因此本次设计采用带Qt库的yaffs文件系统5。1、 将yaffs文件系统的源码拷贝至某一目录下,并进入该目录,执行#tar zxvf rootfs_qt210_QT4.7.0_20121210.tar.gz#mv rootfs_qt210_QT4.7.0_20121210 rootfs2、 安装制作工具bu
33、sybox,拷贝busybox-1.13.3.tar.gz到当前目录,执行#tar zxvf busybox-1.13.3.tar.gz#cd busybox-1.13.3#vi Makefile修改CROSS_COMPILE?= arm-linux-ARCH ?= arm3、编译busybox,执行#makeCONFIG_PREFIX=rootfsinstall#cp bin/mkyaffs2image ./拷贝/etc下相应文件到./rootfs/etc/4、 制作yaffs镜像文件#cd ./#./mkyaffs2image rootfs rootfs.yaffs在当前目录下生成目标内核
34、镜像文件rootfs.yaffs,然后通过USB下载线将文件烧进开发板,重新启动开发板后通过串口终端可以看到命令提示符,证明烧录成功,如下图所示。图2.3 文件系统成功移植效果图2.4 make工具简介大型工程中的源文件数量庞大,make工具提供了方便的管理和编译这些文件的方案,按其类型、功能和模块的不同分别放在若干个子目录中,在makefile定义通过定义出一系列的规则来进行指定,哪些文件是需要被先编译的,哪些文件是需要被后编译的,而哪些文件则是需要重新被编译,而那些文件则需要被忽略,而且能够进行某些更为复杂的操作6。makefile所实现的好处是能够实现自动化编译,一旦写好makefile
35、文件,只需要执行make命令,整个的工程将能够实现自动编译,极大的提高了大型软件开发工程的效率。make命令是一个工具,是被用来解释makefile文件中所指定的命令并执行,一般来说,集成开发环境(IDE)都包含有这个命令,比如:Delphi中的make,Visual C+下的nmake,Linux上GNU工具下的make。由此可见,make工具成为了一种在工程管理方面的有效编译方法。make工具最为主要的功能就是通过解析makefile文件来描述各源程序之间的依赖关系并能够自动的维护和选择性编译。而makefile 文件则需要按照某种特定语法规则进行编写,文件中必须要说明如何编译具有相关性的
36、源文件并最终连接生成可执行文件,并要求定义各源文件间依赖的关系。makefile文件的基本规则如下:target . : prerequisites .command.目标文件:所有依赖文件执行指令 .target也就是目标文件,可以是工程文件,也可以是可执行的单个文件。也可以是一个标签。prerequisites是要生成目标文件所需要的所有文件或是目标。而command也就是make需要执行的命令部分。这是一个简单的文件依赖关系,也就是说,target这一个或多个目标文件依赖于prerequisites列表中的所有文件,其生成的规则被定义在command中。也就是说只要prerequisit
37、es中有一个或以上的文件比目标文件的时间标签要新的话,command所定义的命令就会被执行(注:每个command必须要以Tab键开始,否者编译器将无法识别该command,能够大量的减少重复编译,提高了工程的管理和编译效率7。2.5 本章小结本章主要论述了实现PC交叉开发和嵌入式底层平台的搭建工作,其中包括了宿主机GNU交叉编译链的安装、NFS文件共享和目的主机U-boot的编译移植、Linux内核的移植、yaffs文件系统的制作等,为嵌入式服务器的搭建建立起底层的平台支持,最后介绍了make工具的用法和makefile编写文档基本的语法规则,方便了大型工程的管理编译或有大量文件需要被编译的
38、情况。3 下位机Zigbee配置3.1 Zigbee简介ZigBee是一种低速率的适用于短距离传输的无线网络协议。ZigBee协议从下到上分为物理层、媒体访问控制层、传输层、网络层、应用层等8。其中物理层和媒体访问控制层均遵循IEEE 802.15.4标准的规定。ZigBee网络的主要特点是功耗低、成本低、速率低、支持大量节点、支持多种网络拓扑结构、复杂度低、快速、安全、可靠。ZigBee网络设备可分为协调器、路由器、传感器节点等。Zigbee作为一种短距离无线通信技术,由于其网络可以便捷的为用户提供无线数据传输功能,因此在物联网领域具有非常强的可应用性。以美国TI公司CC2430芯片为代表的
39、Zigbee SOC解决方案在国内高校企业掀起了一股Zigbee技术应用的热潮。因为CC2430集成了51单片机核,用C51语言编写程序,所以相比于众多的Zigbee芯片,CC2430颇受青睐。开发套件包括由专业人士精心设计的Zigbee产品开发模板、完整的原理图、协议栈及例程源码。Zigbee的开发基于Z-Stack协议栈,开发软件使用IAR Embedded Workbench,成都无线龙公司的Zigbee开发套件可与IAR for MCS-51集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发Zigbee终端最好最实用的开发工具。3.2 Zigbee协议栈简介如图3.1所示,
40、Zigbee的协议栈的各层与802.15.4 MAC层是通过服务接入点实现通信的,服务接入点是某一个特定介质层所提供服务的与其上层的通信接口,Zigbee协议栈的部分层有两个接口分别是数据和管理实体接口。数据接口的目标是为其上层提供所需要的数据服务,管理实体接口的目标是向上层提供访问内部参、置信息和数据管理的服务。图3.1 Zigbee堆栈结构3.3 Zigbee协议的消息格式及帧格式Zigbee协议的消息格式组成及帧格式类型描述如下:1、消息格式Zigbee的消息是由127个字节组成的,它主要包括以下几个部分:MAC报头:该报头包含当前被传输消息的源物理地址及目的地址若消息被路由转发,则该地
41、址有可能不是实际地址,产生及使用该报头对于应用代码是不可见的。NWK报头:该报头中包含了消息的实际源地址及最终的目的地址,该报头的产生以及使用对应用代码来说是不可见的。APS报头:该报头中包含了当前的配置ID,簇ID以及当前消息的目的地址,同样的,报头的产生及使用过程是不可见的。有效载荷:该域中包含了需要被应用层处理的Zigbee协议帧。2、ZigBee协议帧格式Zigbee协议共定义了两种帧格式分别是KVP及MSG。KVP是ZigBee协议规范定义的特殊的数据传输机制,通过该规定来将数据传输格式和内容标准化,主要用于传输较简单的变量值格式。MSG是ZigBee协议规范中定义的特殊的数据传输机
42、制,其在数据传输所采用的格式和内容上并不作任何的特殊规定,主要用于传输专用的例如数据流和文件数据等数据量相对较大的数据。KVP帧专用于相对较规范的信息传输格式,采用键值对的数据形式,按某种特殊规定的数据格式进行数据传输,通常用来传输一个或几个简单的属性变量值;MSG帧没有具体数据格式上的规定,通常用于复杂信息的传输。KVP、MSG是通讯中的常用的两种数据格式。如果将帧比作一封电子邮件,那么目的邮箱和源邮箱等信息都存于帧头、帧尾,里面的信息内容就是特定的数据格式KVP或MSG。根据具体的配置文件(Porfile),KVP一般用于简单属性数据,MSG用于较复杂的,数据量较大信息。3.4 节点简介本
43、次设计中所采用的Zigbee芯片是Chipcon推出的CC2430,是世界首款完全符合2.4GHz的IEEE制定的802.15.4标准的一款射频收发器。包括众多新功能,是一款完全适用于Zigbee芯片产品的RF器件。它基于是Chipcon的SmartRF03技术,以0.18um的CMOS工艺制成的仅仅需极少的外部器件,性能相对更为稳定且功耗更低。CC2430的可选择和敏感指数均超过了IEEE制定的802.15.4标准的要求,可以确保短距离通信过程的有效和可靠性。利用该芯片实现的通信设备能够支持的数据传输率高达250kbps可以实现快速组网技术。CC2430芯片内置了模数转换模块,这就极大地方便
44、了实现温湿度、光强的模拟信号的采集与处理工作。对协议栈的main函数部分修改部分,实现对部分寄存器的读写操作即可实现外部信息的采集,然后调用发送和串口操作函数即可实现信息的传输9。1、温度传感器简介采用DS18B20芯片,DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,其具有独特的串行数据接口,只需要一条数据线线通信实现数据的传输,简化了分布式温度传感器的应用范围,无需外部其他元件,可以使用用数据总线供电,电压有效范围为3.0 V至5.5 V,测量温度范围为-55 C至+125 。范围内精度能够达到0.5 C。描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。
45、信息被发送到/从DS18B20 通过一条数据线接口,所以中央微处理器与DS18B20只需有一条数据线连接。不需要外接电源,因为每一个DS18B20都包含一个独特的序号,多个DS18B20芯片可以同时存在于一条数据总线。这使得多个温度传感器能够放置在许多不同的地方。2、光敏传感器简介光敏传感器的工作原理主要是利用光敏元件将光信号转换为电信号,其最为0敏感的波长在可见光波长附近,还包括红外线和紫外线。光敏传感器不仅仅局限于对光的探测,还可以作为特定的探测元件组成其他特殊传感器,对许多非电量进行有效的检测,只要通过将这些非电量转换为光信号并采用光敏传感器监测的机制即可得到其数据。光敏传感器中最为简单
46、常用的电子器件就是光敏电阻,它能感应出光线的明暗变化,输出微弱的电流,通过简单的电子线路放大的处理便能够得到光强信号值。3、红外线传感器简介一般的生命体会释放红外线,红外线传感器通过对周围红外线强度的探测,可以得到红外线强度值,通过数据管教上传数据值。4、可燃气体传感器可燃气体传感器是能够对单一或多种可燃气体浓度产生响应的探测器。可燃气体传感器包括催化型、红外光学型。催化型的可燃气体传感器是采用相对难熔对金属铂丝加热后其电阻的波动来测定可燃气体的浓度。当可燃气体进入该型探测器有效范围时时,铂丝的表面会产生氧化反应(无焰燃烧),其反应所产生的热量会使铂丝的表面温度变换,而铂丝的电阻率会随着温度产
47、生变化,从而得到环境数据。红外光学型可燃气体传感器则是利用红外线传感器通过对红外线光源的吸收率来检测环境内的碳氢类可燃气体。效果如图3.2所示:图3.2 节点效果图3.5 本章小结本章主要介绍了基于Zigbee的下位机通过温度、光敏、红外、可燃气体等传感器数据采集模块,实现了对环境数据的基本采集、发送和接收功能,为上位机的数据处理模块提供底层支持。4 服务器的搭建4.1 Boa服务器的移植4.1.1 Boa服务器简介在Linux系统中最常用的支持http协议的服务程序有三个:Boa、httpd和Tttpd。其中httpd功能最弱,只能够支持静态页面,不支持认证,不支持cgi,Thttpd和Boa所提供的功能基本一样,都支持认证、cgi等。但是Thttpd在运行过程中所占用的资源要远远大于Boa服务器。可见Boa更适合作为嵌入式领域的web服务器。所以本次设计选择Boa服务器。Boa是1991年由 Paul Phillips开发的一个运行于类unix计算机系统的高性能网络服务器。Boa的设计目标是速度和安全性,它的安全性体现于服务器不会被未通过认证的用户访问,并且能对信息进行加密处理。Boa服务器可以处理来自客户端浏览器的数据请求方式包括post方式和get方式,并且支持cgi后台服务程序10。Boa服务程序的执行流程如图4.1所示。图4.1 Boa服务器流
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100