- 1 -
基于异构网络的楼宇监控系统
许英越,李怀瑜*
(北京邮电大学电子工程学院,北京 100876)
摘要:本系统针对高效率楼宇环境参数监控以及如何将检测信号实时、低成本地传输到监测
点的问题,研究了采用应用 Zigbee 的无线传感器网络为主体,无线传感器网络与现有网络
连接的物理与逻辑接口为切换路径的方法,制定通讯协议和建立信息融合机制,使两者之间
的信息能够形成互补。最终实现了无线传感器网络、无线局域网、GSM 的网络融合,实现在
线,快速监测,降低成本,体现现代无线监控体系的人性化和信息化,可以推广到对家庭、
工厂和商贸市场等的商业应用。
关键词:无线传感器网络;异构网络;Zigbee;GSM
中图分类号:TN
Based on the Monitoring System of Heterogeneous Networks
Xu Yingyue, Li Huaiyu
(School of Electronic Engineering,Beijing University of Telecom and Technology,
Beijing 100876)
Abstract: Aimming at the issues of getting parameters of the relative machines in buildings
accurately and swiftly and transmiting the real-time senor signals to clients in a low-cost,using
wireless sensor networks which apply Zigbee as a mainbody , the system work out physical and logical
interface between WSN and other existing networks, enacting the communication protocol and
establishing a mechanism for information network convergence ,which complement the information
between two networks and gain higher monitoring efficiency .Utimately,all the networks
WSN,WLAN ,GSM are combined together. So it can realize on—line and real time measuring,
decrease the cost,increase the efficiency,which presents humanity and informatization of the modern
wireless sensor system and the most important it can be promoted to a commercial apply in
family,factory and shopping malls.
Keywords: Wireless sensor network(WSN);heterogeneous network;ZigBee;GSM
0 引言
随着人们需求的不断提高,目前的楼宇一般都铺有有线网络,这些网络通过预留的接
口可以随时接入。伴随着无线网络技术高速发展,又出现了许多新型的无线异构网络,如蜂
窝移动通信网络、卫星网络、GPRS、WLAN、移动自组织网络(MANET)、Wi-Fi、无线传
感器网络(WSN)等。当前一些办公楼就已经布设了无线局域网。这些新的网络使得连网方式
变得更加灵活多样。同时,出于安全等方面的考虑,基于各种传感器的立体化全方位楼宇监
控网也是必不可少的组成部分。这就使得新型楼宇中包含了众多的异构网络。身处这些新型
异构网络的用户能否相互通信特别是使用无线网络的用户或设备能否连接上 Internet 变得越
来越重要。如果这些异构网络之间无法互联,那么最终将产生许多大小不一的信息孤岛,这
是我们所不愿看到的。因此如何实现这些不同网络的无缝连接,即异构网络的融合是未来网
络发展的必然趋势。
- 2 -
1 系统设计
本系统是针对当前楼宇监控多种通信网络并存条件下的监控系统演示平台,采集自多种
传感器监控节点的楼宇内部设备及环境的监控信息,通过异构网络实现无缝传输,最终到达
本监控平台并通过图表等形式反馈给楼宇管理者。本平台使楼宇监控工作不再局限于传感器
网络,而可以借助其他多种网络实现范围更广、性能更好、反馈速度更快的楼宇监控系统。
图 1 系统框图
图 2 系统架构
2 硬件分析与设计
无线传感器网络(WSN)
节点模块设计
无线传感器网络是基于 Chipcon 公司推出的实现 ZIgBee 应用的 CC2430 片上系统。
CC2430 采用增强型的 8051 MCU、32/64/128KB 闪存、8KB SRAM 等高性能模块,并内置
了 ZigBee 协议栈。加上超低能耗,使得它可以用很低的费用构成 ZigBee 节点。
CC2430-F128 是 TI-Chipcon 公司推出的支持 IEEE 协议的片上系统
- 3 -
(SoC)。它在单个芯片上整合了 CC2420 RF 收发器、增强型工业标准的 8051 MCU、128KB
可编程闪存、8KB SRAM 等高性能模块。
图 3 CC2430内部电路结构图
CC2430 采用 μm CMOS 工艺生产,工作电压范围 - V。在接收和发射模式
下,电流损耗分别低于 27mA 和 25mA,在休眠模式下,电流消耗小于 μA。低功耗和宽
工作电压保证了电池供电的传感器节点能长时间工作。
其中,增强型工业标准 8051 MCU 核心具有比普通 8051 MCU 更强的功能,更低的功耗。
它使用标准 8051 指令集,每个时钟周期执行一个指令周期,是标准 8051 12 个时钟周期执
行一个指令周期的 12 倍。并且 CC2430 采用 32 MHz 晶振作为时钟,而普通 8051 MCU 采
用 12MHz 晶振,故 CC2430 指令执行的速度是普通 8051 MCU 的 32 倍。
其内部电路结构如图 3 所示。
上文提到 CC2430 只需很少的外围器件就可以工作,在 CC2430 的数据手册中给出了
CC2430 的应用电路图。本设计以 TI-Chipcon 提供的 EB 开发板为原型,设计出适合楼宇监
控网络系统的传感器节点,其电路图如图 4 所示。
- 4 -
中国科技论文在线
图 4 CC2430 节点电路图
温度湿度传感器模块
为了提高温度湿度的采样精度,本设计没有使用 CC2430 片内的温度传感器,而是外接
SHT11 温度湿度传感器。SHT11 是瑞士盛世瑞恩(Sensirion)传感器公司推出的一款数字温
度湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。其主
要特点如下:
(1)高度集成,将温度感测、湿度感测、信号变换、A/D 转换和加热器等功能集成到一
个芯片上;
(2)提供二线数字串行接口 SCK 和 DATA,接口简单,支持 CRC 传输校验,传输可靠
性高;
(3)测量精度可编程调节,内置 A/D 转换器,分辨率为 8 - 12 位,可以通过对芯片内部
寄存器编程来选择;
(4)测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高
质量的露点(Dew Point)计算功能;
由 SHT11 构成的温度湿度接口典型电路如图 5 所示。其中 SHT11 为从机(Slave),8051
作为主机(Master),它们通过串行总线进行通信。SHT11 采用两线制的类 I2C 接口,接口
型式很简单。本设计在接SHT11的3脚时钟线SCK,接SHT11的2脚数据线DATA,
并在 DATA 端接入一个 10 KΩ的上拉电阻。二线串行接口包括时钟线(SCK)和数据线
(DATA)。SCK 用来接收主机发送来的时钟信号,使 SHT11 与主机保持同步。DATA 为
三态引出端,既可输入数据,亦可输出测量数据,不用时成高阻状态。仅当 DATA 下降沿
过后且 SCK 处于上升沿时刻,SHT11 才能读数据或写数据,具体时序图见图 6
- 5 -
中国科技论文在线
图 5 SHT11 典型电路图
图 6 SHT11 时序图
无线局域网(WLAN)
本系统无线局域网的搭建是基于 Cisco 公司的 WAP54G-CN 无线接入点,即无线 AP。
它是用于无线网络的无线交换机,也是无线网络的核心。无线 AP 是移动计算机进入有线网
络的接入点,主要用于宽带家庭、大楼内部以及园区内部,典型距离覆盖几十米至上百米,
目前主要技术为 系列。大多数无线 AP 还带有接入点客户端模式(AP client),可以
和其他 AP 进行无线连接,延展网络的覆盖范围。
全球移动通信系统(GSM)
GSM 即全球移动通讯系统(Global System of Mobile Communication)的简称,它采用
全数字的信令和语音信道,是目前基于分时多址技术的移动通信体制中最成熟、最完善和应
用最广的系统。GSM 模块利用串行通信方式进行目标系统与模块数据传输和数据交换。GSM
提供的服务可以使得人们不受空间、地域的限制,随时随地获取所需信息,为在恶劣的现场
环境中营造相对平稳、安全、有效的各种监测系统提供了可能和方便,因此得到了广泛的应
用。
短信息服务(SMS)是 GSM 技术应用的一项重要内容,它具有以下突出的优点:一次
可传输 140 个字节的数据;短信息通过短消息中心转发到最终目标;在短消息传送过程中,
- 6 -
中国科技论文在线
不进行呼叫连接建立和释放的过程;传输距离不受限制,实现方便。
系统采用的 GSM 模块型号为西门子 TC35t。通过它可以实现系统方案中的短消息发送
服务。模块的工作电压为 V,可以工作在 900 MHz 和 1800 MHz 两个频段。模块有 AT
命令集接口,支持文本和 PDU 模式的短消息。
GSM 模块通过串口和主控设备服务器相连,采用 9600 bps 的波特率。
TC35 与计算机只要连接好串口的 TXD, RXD 通信线、IGT 启动脚、外接 SIM 卡以及
电源即可正常工作。TC35 的串行接口电平是 0~ V, TC35 模块工作电路如图 7 所示。
图7 TC35 模块工作电路
3 软件分析与设计
ZigBee 节点模块软件设计
ZigBee 节点模块软件设计的核心是 ZigBee 无线传输协议栈。本设计选用最适合 CC2430
硬件平台的、符合 ZigBee2006 规范的 TI Z-Stack 协议栈。在此基础上,针对传感器节点和
协调器分别设计它们的运行软件,达到采集数据、传输数据、处理数据的目的。
ZigBee 协议栈设计与选择
各个半导体公司在推出自己的 ZigBee 硬件产品的同时,大多会提供相应的软件开
发平台,包括 ZigBee 协议栈和集成开发工具(IDE)。目前主要有三种主流 ZigBee 协议栈,
它们是 Microchip Stack、MSSTATE_LRWPAN 和 TI 的 Z-Stack。它们之间的对比如表 1
- 7 -
中国科技论文在线
表 1 三种 ZigBee 协议栈对比
其中 Microchip Stack 只适用于 Microchip 的 PIC 单片机,不能编译成本设计选用的
CC2430 芯片支持的代码,故不在考虑范围之内。
MSSTATE_LRWPAN 是密西西比州立大学(Mississippi State University)的 Dr. Robert B.
Reese 在参考 Microchip Stack 的基础上自己编写的用于教学目的精简 ZigBee 协议栈。它不
仅支持 Microchip 的 PIC 系列单片机,还支持 CC2430 和 MSP430 + CC2420,是一个支持多
平台的开源协议栈。从表 中可以看出,相对另外两种 ZigBee 协议栈实现,
MSSTATE_LRWPAN 的支持的网络拓扑只有树形结构,不支持动态绑定和广播。它的优点
是公开所有源代码,且源代码规模较小,非常适合用于教育目的的 ZigBee 协议栈学习。因
为它不支持网状网络拓扑,而且父节点不能缓存睡眠子节点的消息,所以不符合本项目的设
计要求而不被采用。
Z-Stack 是 TI 公司提供的符合 ZigBee 2006 规范的协议栈。它实现的功能最为全面,并
且天生适用于 CC2430 芯片。缺点是代码规模较为庞大,而且底层函数的实现使用 lib 库封
装,无法进行修改。
经过调查研究和需求分析,本设计最终选用功能强大且适用于 CC2430 的 Z-Stack
版协议栈。它需要安装 IAR 公司的 IAR Embedded Workbench for MCS-51 版本 IDE 进
行编译和调试。
Z-Stack 研究与分析
ZigBee 协议栈在分层结构上很清晰。Z-Stack 主要封装了 HAL 硬件抽象层、MAC 介质
访问控制层、stack 协议层、OASL 操作系统层、AF 应用框架层等。本设计主要在 OSAL 操
- 8 -
中国科技论文在线
作系统层和 AF 应用框架层上进行开发。
Z-Stack 的运行需要配置一系列 ZigBee 相关参数,这些参数的合集被称为协议栈配置
(Stack Profile)错误!未找到引用源。。这些参数值是由 ZigBee 联盟定义的,同一 WPAN 网络中的
所有设备必须使用相同的参数配置,即相同的 Stack Profile。为了实现更好的互操作性和通
用性,ZigBee 联盟在 2006 年底推出了 ZigBee 2006 版本规范,重新定义相关协议栈参数。
这样不同厂商生产的 ZigBee 设备只要使用相同的参数配置即可实现相互兼容。
从项目的开发者角度来讲,这些参数也可根据实际需求配置,但这会影响到与其他使用
标准协议栈设备间的互通。如果项目实现的网络是一个封闭式的网络,则可以考虑修改相关
参数,这种网络被称为特定网络协议栈配置(Network-Specific)。
下面将从协议栈配置、协议栈寻址方式、协议栈绑定功能、协议栈路由协议等四个方面
来研究分析 Z-Stack。
协议栈配置
首先必须在 配置文件里定义 STACK_PROFILE_ID 以标识该协议栈是否
采用 ZigBee 联盟定义的标准配置文件。本设计采用网状拓扑结构,故定义 NWK_MODE 为
NWK_MODE_MESH;节点深度 MAX_NODE_DEPTH 为 5;安全级别 SECURITY_MODE
为 SECURITY_RESIDENTIAL 民用。
其次, 文件包含了大量网络相关的参数,比如无线频段和信道的选择、
WPAN 的 ID、设备启动的时延、发送消息的重试次数、绑定表的大小、节点轮询的时间间
隔等等。本设计对这些参数没有特殊要求,故采用默认设置。
另外,编译器还需要一些预定义参数,比如协调器需要连接 RS-232 串口,因此需要定
义 HAL_UART=TRUE、SERIAL_APP_PORT=0。另外,本设计没有使用节点外接键盘和
LCD,故需要预定义 HAL_KEY=FALSE、HAL_LCD=FALSE。
协议栈寻址方式
ZigBee 设备有两种寻址方式:64 bits 的 IEEE 地址(又称 MAC 地址)和 16 bits 网络地
址。64 bits 的 IEEE 地址是设备出厂时赋予的全球唯一地址,是由 IEEE 统一维护和分配的。
264的地址数量保证了世界上每一个 ZigBee 设备都能拥有自己独自的地址而不重复。16 bits
的网络地址是设备在加入 WPAN 的时候由该网络分配的,在一个 WPAN 里不能有两个拥有
相同 16 bits 地址的设备。根据 ZigBee 协议栈的地址分配算法,一个节点只需跟其父节点进
行通信即可得到网络中唯一的地址,减少了网络范围内的通信,同时也有助于网络规模的控
制。该地址分配方式需要的参数包括:最大深度 MAX_DEPTH、最大具路由功能的子节
MAX_ROUTERS,以及最大子节点 MAX_CHILDREN。其中 ZigBee 2006 规范定义
MAX_DEPTH = 5;MAX_ROUTERS = 6;MAX_CHILDREN = 20。
在 Z-Stack 里,应用程序通过 AF_DataReques()函数发送无线数据。该函数需要一个
afAddrType_t 类型的参数来表示发送数据的目标地址。它的定义如表 2。
表 2 afAddrType_t结构体定义
typedef struct
{
union
{
uint16 shortAddr;
}addr;
afAddrMode_t addrMode;
- 9 -
中国科技论文在线
byte endPoint;
} afAddrType_t;
该目标地址结构体包括了一个 16 bits 的短地址和 afAddrMode_t 类型的目标地址类型,
以及目标端口 endPoint。其中 endPoint 为目标节点的端口,它指定了处理该数据包的任务程
序(因为在操作系统层,任务和端口一一对应)。afAddrMode_t 是一个枚举类型,在
文件里找到它的定义如表 3。
表 3 afAddrMode_t枚举类型
typedef enum
{
afAddrNotPresent = AddrNotPresent,
afAddr16Bit = Addr16Bit,
afAddrGroup = AddrGroup,
afAddrBroadcast = AddrBroadcast
} afAddrMode_t;
根据以上 afAddrMode_t 的定义可知,节点之间发送无线数据包支持间接传输
(AddrNotPresent)、单播(Addr16Bit)、组播(AddrGroup)和广播(AddrBroadcast)四
种方式。
间接传输方式中,设置地址类型为 AddrNotPresent,表示目标地址未指定。通过发送方
的绑定表来确定目标地址,得到目标地址后即可以单播方式发送,这种特性称为源绑定
(Source Binding)。如果有多个目标设备,可通过复制多份封包以单播方式发送。ZigBee 2004
规范中,存储绑定表在协调器,这样发送方需将封包先通过单播方式传输给其协调器,再由
协调器根据绑定表间接传输给目标设备,这种特性称为协调器绑定(Coordinator Binding)。
单播方式中,使用己知的目标节点 16 bits 网络地址 Addrl6Bit 进行路由寻址。其中网络
协调器的网络地址固定为 0x0000。
广播方式中,地址设置为 AddrBroadcast,然后设置相应的广播地址,有三种地址:
(1)NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——发送消息给网络中所
有的设备(包括休眠节点)。对于休眠设备,消息暂存于其父节点直至休眠设备激活或者消
息 超 时 。 可 以 在 文 件 中 修 改 默 认 的 超 时 参 数
NWK_INDIRECT_MSG_TIMEOUT。
(2)NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——发送消息给网络里
所有能接收数据的设备(不包括休眠节点)。
(3)NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——发送消息给网络里
所有路由器和协调器。
组播方式中,地址模式设为 AddrGroup,以及 设为群标识。加入一个组
播群可通过调用 aps_AddGroup()函数来实现。组播可与间接寻址结合,即绑定表中的目标地
址可以是单播地址也可是组播地址。
在本系统中主要使用单播的数据传输方式。传感器节点向协调器固定地址 0x0000 发送
消息,协调器从服务器获得传感器节点的网络地址发送消息。
(1)协议栈绑定功能
正如上节协议栈寻址方式中所述,间接传输方式需要事先建立绑定表,建立绑定关系的
节点之间发送消息不需要知道对方的 16 bits 网络地址。绑定关系是在节点启动后建立的,
- 10 -
中国科技论文在线
通常需要用户同时按下要建立绑定关系的双方的按钮来手动建立。这大大增加了 ZigBee 应
用程序开发的灵活性,因为不用在程序编写的时候确定数据的接受和发送方。
(2)协议栈路由协议
路由对于应用层来说是完全透明的,当应用层简单地将数据包发送至网络层后,网络层
根据其目标地址信息确定相关的路径后转发,而应用层不需知道其中经过了多少次的跳变后
到达目标地址节点。路由协议控制数据包无线传输的整个过程的路径选择,并提供 ZigBee
网络自适应、自恢复的功能。
这里以本系统中使用的网状网络路由为例,介绍路由的整个过程。整个路由协议建立在
AODV(Ad hoc On demand Distance Vector)的基础上。当一个路由器从其应用层或其他节
点接收到一个单播包时,网络层将通过以下过程进行传输。如果目标地址为其邻接节点(包
括子节点),路由器就直接转发至目标地址;否则,路由器查询其路由表,如果存在相关信
息则通过路由表中的下一跳地址进行转发,如果不存在则需要进行路由发现,发现路由后重
复转发操作。
ZigBee 终端节点不具有路由功能,如果需要发送一个包至目标节点,先直接发送至其
父节点,由其父节点承担路由转发功能。同样,如果有一个数据包需发送至一个终端节点,
当需要路由发现时,由其父节点进行路由请求的应答与回复。路由器(包括协调器)在整个
过程中主要作用为路由发现及选择、路由维护和路由超时处理。
服务器端监控软件设计
为了让用户更方便直观地使用“传感器监控系统”,本项目在服务器端设计了可视化的监
控软件。监控软件能实时显示当前传感器网络的状况,包括活动节点状态、节点测量的温度、
湿度、电量等信息,还能控制节点外接的灌溉设施,以及通过 GSM 短信发送当前节点状态
给管理者。服务端监控软件是用户与无线传感器网络之间的人机交互接口,它的设计目标如
下:
A.网络节点活动状态的监控。包括传感器节点工作状态、节点地理位置、节点类型识别
等。
B.传感器节点测量结果显示。包括显示当前温度、湿度、电池电量等数值。
C.网络节点的实时控制。包括控制节点工作状态和节点外围设备。
D.控制 GSM 模块,向传感器监控管理者发布当前节点信息。
监控软件设计方案
(1)设计平台
服务器端监控软件采用面向对象的设计思想,用 C++构建对象模型和对象间的关系。开
发平台使用微软公司 Visual Studio 2008 套件中的 VC++;应用程序框架使用的是功能强大的
MFC 框架。VC++具有可视化编程的特点,它使得程序图形界面的设计更加简洁和直观。并
且由于 MFC 对 Windows 窗体对象的封装,方便了在 Windows 操作系统设计上面向对象的
软件程序。
(2)设计框图
服务器端监控软件采用串口数据驱动模式,它的设计框图如图 8 所示。其中箭头的方向
表示数据传输的方向。协调器节点和传感器节点从串口驱动获得数据,更新自身的状态。
GUI 定时查询节点状态,并将它们显示在屏幕上。另外 GUI 也拥有串口驱动的引用,能直
- 11 -
中国科技论文在线
接向串口发送数据。
串口驱动
传感器节点协调器节点
图形用户接口GUI
引用
图 8 监控软件平台设计框图
(3)设计模式
本设计中监控软件的数据主要来源是与协调器相连的串口。整个无线传感器网络的测量
数据都通过协调器用串口发送给服务器。因此,串口对象的变化是其他所有对象都关心的,
特别是节点对象。在本设计中,监控软件主要采用观察者设计模式(Observer design pattern),
对象之间的关系以松耦合的形式组合,互不依赖。这种模式的特点是:当一个受关注对象发
生变化的时候,所有依赖于它的对象都得到通知并被自动更新。当串口对象收到新数据的时
候,协调器节点和所有传感器节点都会得到通知。如果一个节点判断新收到的数据是属于自
己的,那么就会更新自己的状态,否则就不予处理。
图 9 Observer模式通用实现
图 9 为 Observer 模式通用实现。将消息源抽象成 Subject 类而将消息处理类抽象成
Observer 类。Subject 提供了 Attach Observer 和 Detach Observer 的服务,当有新事件发生时,
Subject 会启动自身的 Notify 服务,依次调用各个 Observer 的 Update 方法,通知新事件错误!
未找到引用源。。
在“楼宇监控系统”中串口对象、ZigBee 节点、ZigBee 传感器节点、协调器节点等都被
分别封装成类。其中,串口类和 ZigBee 节点类之间是 Subject 与 Observer 的关系;而传感
器节点类和协调器节点类分别从 ZigBee 节点类派生。
- 12 -
中国科技论文在线
串口类 CSerialSubject 的成员结构如图 10 所示。它派生自类 CSerialEx,并重载了 Open、
Close 和 OnEvent 方法。CSerialEx 是 Ramon de Klein 提供的了一个 Windows 平台上的串口
封装错误!未找到引用源。。它将复杂的 WIN32 串口设备 API 封装成简洁易用的 C++类。通过简单地
调用它的服务,程序可以打开、关闭串口,设置串口参数,同步/异步发送串口数据,开辟
串口监听线程,设置串口事件等等。它遵照 GNU 许可证协议,以开放源码的形式提供给
C++程序开发者免费使用。
CSerialEx
Class
public
~CSerialSubject()
AttachListener() : bool
Close() : LONG
CSerialSubject()
DetachListener() : bool
Open() : LONG
protected
m_NodeList : list<CNode*>
m_SerialBuffer : vector<byte>
OnEvent() : void
private
NotifyListener() : void
图 10 串口类CSerialSubject
CSerialSubject 提供 AttachListener 和 DetachListener 服务。ZigBee 节点可以调用这两个
方法订阅串口消息或退订串口消息,同时加入或退出 CSerialSubject 的订阅者节点链表
m_NodeList : list<CNode*>。
CSerialSubject 还重载了 CSerialEx 的纯虚函数 OnEvent。当串口发生新事件时,OnEvent
方法就会被调用。在 OnEvent 方法中,程序判断当前发生的新事件。如果是收到了新数据,
则存入缓冲区 m_SerialBuffer : vector<byte>,再调用 NotifyListener 方法通知所有订阅节点
(保存在 m_NodeList 链表中)。
ZigBee 节点类的继承体系如图 11 所示。CNode 类作为基类,包含了节点网络地址、IEEE
地址、节点状态等成员变量以及它们的访问方法。NewDataArrive 方法作为获得串口数据的
接口,等价于错误!未找到引用源。中 ConcreteObserver 类的 Update 方法。它分别被子类
CSensorNode 传感器节点类和 CCoordNode 协调器节点类重载,用于不同子类对串口数据的
不同处理。
CSensorNode 类作为传感器节点的模型,它的温度、湿度、电源电量等属性被封装成
CSensorNodeState 类。它还提供了 Watering 服务,用来控制传感器节点外接灌溉设备的开关。
CCoordNode 类同样继承自 CNode 类,它是协调器的模型。除了重载 NewDataArrive 方
法,它还维护了一个包含当前WPAN网络所有子节点的列表m_NodePtrVec : vector< CNode*
>,并提供添加、移除、查询等服务。
- 13 -
中国科技论文在线
Class
public
~CNode()
CNode() (+ 1 重载)
GetCurState() : CNodeState
GetIEEEAddr() : UINT64
GetNwkAddr() : UINT16
GetPosition() : POINT
IsActive() : bool
IsStateChanged() : bool
NewDataArrive() : void
SendCommand() : bool
SetActive() : void
SetPosition() : void
SetSerialSubject() : bool
protected
m_bActive : bool
m_bStateChanged : bool
m_CurState : CNodeState
m_Position : POINT
m_pSerial : CSerialSubject*
m_uIEEEAddr : UINT64
m_uNwkAddr : UINT16
CNode
Class
public
~CSensorNode()
CSensorNode() (+ 1 重载)
GetCurSensorState() : CSensorNodeState
IsWatering() : bool
NewDataArrive() : void
Watering() : void
protected
m_CurSensorState : CSensorNodeState
private
m_bIsWatering : bool
CNode
Class
public
~CCoordNode()
AddChild() : bool
CCoordNode() (+ 1 重载)
GetActiveNode() : vector<CNode*>
GetActiveNodeNumber() : size_t
GetNode() : CNode*
NewDataArrive() : void
RemoveChild() : bool
protected
m_NodePtrVec : vector<CNode*>
public
public
图 11 ZigBee 节点类
通过这样的设计模式,在程序中建立了实际对象的模型和相互关系。ZigBee 节点根据
串口数据实时更新自己的状态,而 GUI 层则通过定时轮询的方式刷新程序界面上的节点状
态。
串口通信协议设计
无线传感器网络的协调器和服务器之间使用 RS-232 串口通信。串口通信的配置参数为
38400 bps 波特率、8 bits 数据位、无奇偶校验、1 bit 停止位和无流控制。
本项目设计串口通信每次传输 5 个字节的数据包构成一个语义,协议格式如表 4 所示。
数据包第一个字节表示当前传送命令类型(见表 5)。第二三字节是命令的参数或传感器的
测量结果数据,最后两个字节是数据源节点的网络地址或命令目标节点的网络地址。
表 4 串口通信协议格式
类型 Header Command Network address
说明 表示命令类型 命令 传感器节点网络地址
字节 1 2 2
- 14 -
中国科技论文在线
表 5 串口协议命令类型
命令 定义 说明
OTA_HRD_ROUTER_REGI 0x02 传感器节点注册
OTA_HRD_TEMP 0x12 温度数据包
OTA_HRD_HUMI 0x13 湿度数据包
OTA_HRD_POWER 0x15 电量数据包
OTA_HRD_REQ_ALL 0x21 请求测量所有数据
OTA_HRD_REQ_TEMP 0x22 请求测量温度
OTA_HRD_REQ_HUMI 0x23 请求测量湿度
OTA_HRD_REQ_POWER 0x25 请求测量电量
OTA_HRD_ACT_WATER_ON 0x27 请求打开水阀
OTA_HRD_ACT_WATER_OFF 0x28 请求关闭水阀
GSM 模块软件设计
TC35 模块短信发送功能采用 AT 指令实现[5]。服务端可以通过相对应的 AT 指令对
TC35 模块进行初始化和短消息的接收发送。
本文使用 TEXT 模式进行短消息的接收发送,服务端通过以下系列 AT 指令对短消息
进行控制。
(1)初始化指令
设置短消息发送格式 AT+CMCF=1<CR>,设置 1 代表 TEXT 模式,<CR>是回
车符号,也就是 0x0d。指令正确则模块返回<CRLF>OK<CRLF>,<CRLF>是回车换
行符号。
设置短消息中心 AT+CSCA=?,在销售前 SIM 卡内保存着默认的短消息中心号码,所
以一般情况下可以不用设置短消息中心号码。
设 置 短 消 息 到达自动提示 AT + CNMI = 1,1,0,0,1<CR>,设置正确则模块返
回<CRLF>OK<CRLF>。设置此命令可使模块在短消息到达后向单片机发送指令<
CRLF > + CMTI: " SM " , INDEX( 信息存储位置)<CRLF>。
(2)发送短消息
在 TEXT 模式,如果发送短消息,则首先发送短消息的接收手机号码。AT+CMGS=
手机号码<CR>。等待 TC35 模块返回 ASCII 字符“>”,则可以将数据输入,数据以<
Z>(也就是 0X1A)作为结束符。短消息发送成功,模块返回<CRLF>OK<CRLF>。
(3)无线传感器网络监测短消息的发送
当无线传感器网络协调器节点接收到各节点的数据并进行分析后,对符合预先制定的发
送要求的数据进行处理,然后启动短消息发送流程,详细流程如图 12 所示。
- 15 -
中国科技论文在线
图12 无线传感器网络监测短消息的发送流程
程序界面设计
服务器端监控软件使用 MFC 作为应用框架,设计的监控程序主界面如错误!未找到引
用源。所示。左方是主楼某一层的全景图,按照实际位置布置若干个传感器。右方是当前节
点的传感器测量信息,包括温度、湿度、电池电量和网络 ID、系统时间等信息。其中温度、
湿度、电池电量不仅使用了精确的数字显示结果,还用温度计、湿度计、电量表的直观形式
显示。通过监控软件,用户就可以很容易地掌握监控点的当前状况。
程序中的温度计、电量表等仪表采用了 Boian Mitov 设计的 InstrumentLab 控件错误!未
找到引用源。。它是一个各种图形仪表类集合成的类库,提供了 Delphi、C++ Builder、RAD
Studio、Visual Studio 等多种版本,方便易用,并且对非商业用户免费。
使用该监控软件需要事先设置和无线传感器网络协调器相连的串口编号。串口设置界面
如错误!未找到引用源。所示。
图 13 连接协调器的串口设置
监控软件使用另外一个串口和 GSM 模块连接,设置 GSM 模块串口的界面如图 14
- 16 -
中国科技论文在线
图 14 GSM 串口设置界面
通过计算机 IP 地址的设置,可以通过无线局域网的方式进行监控。这样一台只要接入
同一个网络的计算机,随时随地都可以关注传感器节点信息。
图 15 服务端IP设置
客户端登陆到监控器前输入服务器的 IP。
- 17 -
中国科技论文在线
图 16 客户端IP登陆
4 结论
本文给出了基于异构网络的楼宇监控系统实现过程,适应了物联网的发展趋势。该系统
操作简单,稳定性好,根据环境特点用户可以自主选择监控实现方式。低功耗、低成本的优
势将使该系统能够广泛推广,实现商业化。
[参考文献]
[1] 郭爱煌. 基于 ZigBee 无线传感器网络系统设计与实现.. 同济大学:2008.
[2] ZigBee Alliance. ZigBee Specification. Dec. 1st, 2006.
[3] 杨柳. 基于 ZigBee 的无线传感器环境监测网络设计. 上海交通大学:2008.
[4] Chipcon. CC2430 Data Sheet. Chipcon. 2005.
[5] 海康威.陆爱明 基于 TC35 模块的无线接入终端设计 -电子产品世界 2005