摘要:针对传统远程通信方式在嵌入式监控系统中的低速、传输距离短、布线复杂等问题,提出了一种基于ZigBee与μIP协议栈的嵌入式网络监控系统。选用STM32F103C6作为监控系统下位机的主控芯片,与ENC28J60以太网控制器通过SPI接口相连,在μIP协议栈的基础上实现下位机与远程监控主机的网络通信功能,并在ZigBee协议栈的基础上通过CC2530芯片组建无线传感器网络,通过串口与主控芯片通信。
关键词:ZigBee;μIP;无线传感器网络;远程监控;STM32F103C6
引言
嵌入式系统因具有低功耗、实时性强、可靠性高等优点而日益普及,随着网络对人们的生活越来越重要,网络通信功能也成为嵌入式系统的发展趋势。传统的远程监控系统多采用8位或16位主控芯片,通过485总线、红外线等方式进行远程通信。这样的远程监控系统存在反应速度慢、数据传输速率低、布线复杂、易受干扰等缺点。本系统采用32位的STM32F103C6作为主控芯片,现场采集的数据通过ZigBee无线传感器网络,用ENC28J60以太网控制器实现嵌入式系统与远程监控主机的网络通信。该系统可以广泛应用于工业现场、楼宇等需要进行远程监控的场所,具有实时性强、多用户、监控方便、成本低等优点。
1 系统总体结构设计
根据系统的功能,可以把整个监控系统分为3部分:数据采集部分、数据处理与控制部分、远程监控部分。监控系统总体结构如图1所示。
数据采集部分采用CC2530芯片与ZStack协议栈组建的ZigBee无线传感器网络。终端设备对现场的温度、湿度等数据进行采集,通过路由器把数据传送到协调器。协调器与主控芯片STM32F103C6通过RS-232串口通信。
数据处理与控制部分(嵌入式服务器)是整个监控系统的核心,负责接收ZigBee网络采集的数据,并通过以太网把数据发送给远程监控主机,接收远程监控主机发送的命令并执行相应的控制功能。嵌入式服务器由STM32F103C6芯片与ENC28J60以太网控制芯片组成,采用μIP协议栈实现可靠的端到端服务。
远程监控部分由PC机与应用软件组成。应用软件为Visual Studio 2010开发的监控软件,可供用户实时地查看监控对象的参数,并控制远程设备。
2 硬件设计
2.1 数据采集部分
该部分采用TI公司的CC2530芯片。CC2530通过I/O口与数据采集芯片相连,把采集到的数据经过ZigBee无线传感器网络传到数据处理与控制部分。
CC2530除具有代码预取功能的低功耗8051微控制器内核外,还具有8 KB内存、最高128 KB闪存、5通道DMA、一个16位定时器和一个8位定时器、8路输入和可配置分辨率的12位ADC、2个支持多种串行通信协议的强大USART,21个通用I/O口,适应2.4 GHz IEEE802.15.4标准的RF收发器。其具有极高的接收灵敏度和抗干扰性能,只需要一个晶振和极少的外接元件即可正常运行。CC2530与外围器件的连接关系如图2所示。
2.2 数据处理与控制部分
该部分是整个监控系统的核心,主要由STM32F103C6芯片与ENC28J60芯片组成。数据处理与控制部分的连接原理如图3所示。STM32F103 C6接收CC2530采集的数据,并在μIP协议栈的基础上把数据封装成符合以太网格式的数据包发送给远程监控主机。同时,控制ZigBee无线传感器网络、接收远程监控主机的命令,对电动机、电灯、风扇、空调、总开关等设备进行控制。
STM32F103C6采用ARM Cortex-M3(32位RISC)内核,最高运行频率可达72 MHz。具有丰富的片上资源:32 KB的Flash、10 KB的SRAM、2个通用定时器和1个高级定时器、1个SPI接口、1个I2C总线接口、2个USART接口、1个USB接口、1个CAN总线接口、2个12位同步ADC模块。
ENC28J60集成了10BASE-T PHY和MAC,带接收器和冲突抑制电路,是兼容IEEE 802.3的以太网控制器。支持一个带自动极性检测和校正的10BASE—T端口,支持全双工和半双工模式,具有可编程在发生冲突时自动重发、可编程填充和CRC生成、可编程自动拒绝错误数据包的特性,并带一个最高速度可达10 Mbps的SPI接口。具备8 KB发送/接收数据包双端口SRAM,支持单播、组播和广播数据包,可以自动收发、过滤数据包。ENC28J60通过SPI接口与STM32F103C6连接,接收STM32F103C6的数据并把数据转化成符合IEEE 802.3标准的以太网数据包,实现网络通信。
HR911105A是单口RJ45插座,符合IEEE802.3、IEEE802.3ab标准,自适应10/100/1000M以太网,内部集成了网络隔离变压器,具有强大的电磁干扰抑制功能。
2.3 远程监控部分
该部分由PC机组成,PC机数量可以根据用户的数量确定,可以分布于不同的地理位置,通过网线与嵌入式服务器连接,获取嵌入式服务器的数据并发送用户的控制命令给嵌入式服务器。
3 系统软件设计
3.1 嵌入式服务器软件总体设计
嵌入式服务器程序是本系统中最重要的功能实现模块。主要实现3部分功能:接收ZigBee无线网络的数据和传输数据采集控制命令,建立客户机一服务器(C/S)模式的网络通信机制以及控制外围器件。
在本系统中,由STM32F103C6组成的嵌入式服务器即为C/S模式中的服务器,监控PC为客户机。嵌入式服务器软件系统是由μC/OS嵌入式实时操作系统、μIP协议栈、应用程序组成的。嵌入式服务器上电后对系统进行初始化,等待ZigBee网络就绪,接收监控PC发送的命令,根据命令采集数据或控制外围器件。嵌入式服务器软件的流程如图4所示。
3.2 ZigBee无线传感器网络
ZigBee协议是基于国际标准化组织(ISO)的开放系统互连(OSI)基本参考模型,ISO/OSI模型有7层,而ZigBee仅实现了低功耗、低数据传输率的无线网络必需的部分:物理层(PHY)、介质访问控制层(MAC)、网络层(NWK)和应用层(APL)。最低的两层:物理层和介质访问控制层,由IEEE 802.15.4标准定义。网络层和应用层由ZigBee标准定义。在应用层内提供了应用支持子层和ZigBee设备对象。
ZigBee网络包含3种设备类型:协调器(ZC)、路由器(ZR)、终端设备(ZE)。ZigBee无线传感器网络拓扑结构如图5所示。
协调器负责启动和控制网络,存储关于网络的信息;路由器负责中转数据包,扩展网络覆盖面,提供备份路由以防网络拥挤和设备通信失败,支持子设备。终端设备可以发送或接收信息,但不能执行路由操作,必须被联系到协调器或者一个路由器,并且终端设备不支持子设备。在本系统中终端设备负责采集温度、湿度、烟雾、光照等数据,协调器通过RS-232接口与嵌入式服务器连接,把采集到的数据传送到嵌入式服务器。
本系统采用TI公司符合ZigBee2007协议栈标准的Z—Stack协议栈实现ZigBee无线网络。系统上电后,各结点首先实行硬件初始化,然后初始化ZigBee无线网络,网络组建完成并且运行正常后,终端设备进行数据采集,并通过路由器结点把数据传递给协调器。ZigBee无线网络的工作顺序如图6所示。
3.3 μIP协议栈
μIP协议栈是由瑞典计算机科学研究所的AdamDunkels开发,并在BSD风格的许可证下发布的免费、开放源代码的协议栈。完整TCP/IP协议栈的实现分别需要几百KB的程序存储空间和内存,这对8位或16位芯片组成的系统来说,需消耗太多的资源而无法得到应用。对于大多数应用来说,实现完整的TCP/IP协议栈是没有必要的。μIP设计成仅仅实现完整TCP/IP协议栈里必需的特性,其中包括IP、ICMP、μDP和TCP协议,整个协议栈是用C语言实现的,并且只能处理一个网络接口。
应用程序调用μIP协议栈提供的用户接口函数实现网络通信功能。发送数据时,μIP协议栈把应用程序的数据封装成符合以太网标准的数据包,再调用底层驱动程序把数据发送到以太网中的目标机器。一旦以太网控制器接收到符合要求的数据包,则μIP协议栈提取包中的有效数据传递给应用程序。μIP协议栈与底层驱动、应用程序的调用关系如图7所示。
3.4 监控系统测试结果
把程序下载到嵌入式服务器,硬件连接完毕后整个系统上电。在远程监控主机中打开监控程序,对本系统进行测试,结果如图8所示。
结语
通过对该监控系统进行运行测试,本系统可以接收远程监控PC发送的监控命令,并根据命令将ZigBee无线传感器网络采集到的数据通过以太网发送给远程监控PC、控制现场设备,实现了远距离监测与控制功能。本设计解决了传统远程监控系统中传输距离短、布线复杂与实时性差等问题,具有重要的实际意义。