嵌入式联网技术
随着信息时代的到来和网络技术的飞速发展, 实现家庭信息化、网络化是当今智能家居设备系统发展的新趋势。智能家居系统是将相对独立的家用电器构成一个统一的系统, 进而实现对这些设备和家庭环境的智能管理、远程监控和资源共享。其目的是为人们提供一个安全、舒适、高效和便利的生活环境。本文介绍一种基于嵌入式Web 和ZigBee 技术的网络化智能家居系统的设计和实现方案。
系统有远端PC、嵌入式网关、USB 摄像头和ZigBee 组成的家庭内部无线网络四部分组成。设计思想是在每一个家庭设备上都装上ZigBee 模块和相应传感器来组成一个终端节点,用来实时监控设备的状态, 并且把采集到的数据以无线方式发给ZigBee 协调器,这样就由ZigBee 协调器和各终端设备组成了一个无线连接的星型结构的家庭内部网络。嵌入式网关是系统的中枢,可以把USB 摄像头采集的视频信息和来自协调器接收的终端节点信号传送到Internet 上, 这样就把内部网络连接到互联网上。特别是USB 摄像头的使用,让用户可以直观的看到家里的一切变化, 弥补了大部分智能家居系统只可以查看家庭设备数字信息的不足。用户可以通过远程PC 机访问家庭内部网络,查看家庭设备的数字信息和视频信息,实现远程监控的目的。
本系统选用S3C2440A 作为核心控制器, 它是Samsung 公司推出的一款基于ARM920T 核的处理器, 采用了16/32 位RISC 处理器, 具有外部存储器控制器,LCD 控制器,4 通道DMA控制器,三通道UART,两通道SPI,两路全速USB 主设备芯片,带有MMU 虚拟存储器单元,这一特性可以移植linux 系统和建立Web 服务器,主频400MHz,有130 个I/O 端口和24 路外部中断源,有多种通信接口,体积小,功耗和成本低,可靠性高,特别适合作为嵌入式微处理器。
NAND FLASH 存储模块选择Samsung 公司生产的K9F1208U0M-YCB0 64M*8bits 的高性能存储芯片。掉电后信息不会丢失,用于存储启动代码、内核和文件系统。
SDRAM 是系统的内存, 它不具有掉电保持数据的特性,其存取速度大大高于Flash 存储器, 在系统中主要作程序的运行空间、数据和堆栈区。系统中SDRAM 选用K4S561632C-TC75芯片。K4S561632C-TC75 的存储容量为16M*16 位(32M 字节),数据宽度为16 位,由于S3C2440A 是32 位的,外部总线也是32位的, 为了最大限度发挥处理器的性能, 本系统选用两片K4S561632C-TC75 芯片并联起来,以构成32 位内存系统。
系统选用CS8900A 芯片建立网络接口。CS8900A 是Cirrus公司生产的一款单芯片、全双工、全面支持IEEE802.3 标准的高集成以太网控制器。在本系统中网络控制器发挥着重要作用,它负责将监控数据发送到Internet, 并把来自Internet的控制指令传送至底层。
对于图像采集传感器,采用以中星微公司的ZC301 感光芯片为核心的USB 摄像头作为图像采集模块。中星微301 系列高清芯片拥有影像光源自动增益补强技术,自动白平衡、边缘增强以及伽马矫正等先进的摄像控制技术。
无线收发芯片采用Chipcon (已于2006 年被TI 公司收购)公司生产的CC2430。CC2430 芯片除了整合ZigBee 射频(RF)前端、内存和微控制器外, 还具有128KB 可编程内存和8KB 的RAM、模拟数字转换器(ADC) 、定时器(Timer) 、AES-128协同处理器、看门狗定时器以及21 个可编程I/O 引脚等。因此选择CC2430 做为无线收发部分, 使用起来非常容易上手。由于CC2430 的高度集成度, 外围需要很少的器件可以组成最小系统。它结合Chipcon 公司全球先进的ZigBee 协议栈、工具包和参考设计,展示了领先的ZigBee 解决方案。其产品广泛应用于汽车、工控系统、家居系统和无线传感器网络等领域。
系统软件主要包括移植Linux 操作系统,USB 摄像头驱动的编写,ZigBee 协调器工作程序和终端设备的收发程序,嵌入式Web 服务器的移植等等。
本系统选用2.6 版本的Linux 内核, 首先从ftp://ftp.kernel.org/pub/linux/kernel/下载内核源码。在编译内核前先要修改根目录下的Makefile 文件,
ARCH=arm
CROSS COMPILE=arm-linux-gcc
然后运行make menuconfig 进入配置菜单, 选择需要的选项, 配置完成后保存退出, 依次执行内核编译命令:make dep ;make clean;make zImage 编译成功后会在/linux/arch/arm/boot/下找到编译好的内核镜像文件zImage。然后可以用Bootloader 菜单命令把内核镜像烧写到NAND FLASH 中。
在Linux kernel 源码目录中driver/usb/usb-skeleton.c 提供了一个基础的USB 驱动程序。通过它仅需要修改极少的部分,就可以完成一个USB 设备的驱动。重新编译内核生成摄像头驱动文件,然后执行insmod 加载USB 摄像头驱动,Linux 系统就在/dev 目录下注册了USB 视频设备/dev/video0。
摄像头驱动程序安装好后为了进行视频采集必须加入Video4Linux 模块,Video4Linux 是Linux 中关于视频设备的内核驱动,它为针对视频设备的应用程序提供一系列接口函数。对于USB 口摄像头, 其驱动程序中需要提供基本的I/O 操作接口函数open、close、read、write 等的实现。对中断的处理实现,内存映射功能以及I/O 通道的控制接口函数ioctl 的实现等, 并把它们定义在struct file_operations 中。这样当应用程序对设备文件进行诸如open、close、read、write 等系统调用函数时,Linux 内核将通过file_operations 结构体访问驱动程序提供的函数。
ZigBee 家庭无线网络主要负责对现场各种信息的监控以及数据的采集, 并将内部处理过的数据经家庭网关传送到外部网络。本系统中ZigBee 协调器主要用于建立无线网络,分配地址,向终端节点发送控制命令和接收终端节点的工作状态,并将接收到的状态数据全部上传至Web 服务器, 最后通过Internet传送到远端的用户端。终端设备节点主要有加入网络,接收控制命令,以及发送状态信息给协调器等。协调器主程序流程如图2所示。
Web 服务器的作用是监听用户的服务请求, 并根据用户的请求给出相应的服务。服务器和客户端浏览器之间的通信协议是超文本传输协议HTTP。HTTP 协议规定了发送和请求的标准方式, 浏览器和服务器之间传输的消息格式及各种控制信息。Linux 支持boa、httpd、thttpd 等几种Web 服务器, 其中boa 是一款单任务的Web 服务器软件,源代码开放,速度快,性能优秀,支持能够实现动态Web 技术的CGI(Common Gateway Interface)技术,特别适合应用在嵌入式系统中。
CGI 提供了一个Web 服务器的外部程序通道,运行在服务器上,由浏览器输入触发,是Web 服务器和系统中其他程序连接的通道。CGI 程序就是符合这种接口的程序。服务器接收到用户的请求,并将数据送给CGI 程序,CGI 程序接收到数据后,启动编写好的应用程序,并按照用户提供的数据执行。应用程序执行完成后,返回执行结果,并通过Web 服务器传送给用户浏览器显示。
本系统采用了CGI 来实现动态Web 技术,CGI 规定了Web服务器调用其他可执行程序(CGI 程序)的接口协议标准。Web服务器通过CGI 程序实现和浏览器的交互,也就是CGI 程序接受浏览器发送给Web 服务器的信息进行处理,将响应结果再回送给Web 服务器及浏览器。CGI 程序可以用多种程序设计语言编写, 本系统选用C 语言编写的CGI 程序。嵌入式Web 服务器工作流程如图3 所示。
将服务器用网线和电脑主机相连, 服务器的地址设为192.168.1.6,电脑主机地址为192.168.1.8(只要主机IP 和服务器IP 处在同一个网段就可以)。
系统的网页包括家电系统、安防系统和视频画面三个页面,这三个画面可以相互切换, 在浏览器输入服务器IP 对系统进行测试,并选择摄像头远程控制画面,摄像头采集的视频画面截图如图4 所示。
本文设计的智能家居综合控制系统,采用ZigBee 技术组建家庭内部无线网络, 用USB 摄像头实时采集家庭视频信息,在S3C2440A 为控制核心的硬件平台移植嵌入式Linux 操作系统和Web 服务器完成家庭网关的设计,经过实际测试,本系统达到了家庭信息网络化的目的,实现了对家庭设备远程监控的愿望。系统的功能强大,功耗低,实现简单,具有广阔的应用前景。
本文的创新点:(1)采用ZigBee 技术避免了传统家庭监控系统的布线难问题。(2)USB 摄像头的使用让我们不但可以查看设备的数字信息,还可以直观的看到动态画面。(3)Web 服务器和CGI 技术的使用, 可以实现利用远端PC 机操控家庭的设备,达到了远程监控的目的。
全部0条评论
快来发表一下你的评论吧 !