基于CC1110的井下无线传感器监测网络的设计与实现*
2010-12-07袁向全刘蕴络
王 超,李 翔,袁向全,刘蕴络
(1.北京科技大学信息工程学院,北京100083;2.西部矿业股份有限公司,青海 西宁810001)
0 引言
矿井的安全生产一直是备受关注的,通过对井下的安全生产环境进行实时的监测,可以提前有效地发现危险,提高生产安全管理水平。本文介绍了一种基于CC1110的井下无线传感器监控网络,给出了网络中信息采集节点和传输节点的硬件构成方法、网络拓扑结构以及网络协议栈的构成。该网络是基于多跳的自组织网络,通过部署在监测区域的大量微型传感器节点,协作地感知、采集和处理网络覆盖区域中感知对象的信息,并经由网关发送到数据库中,以便综合分析预警[1]。
1 系统硬件设计
无线传感器网络(WSNs)中,传感器节点是网络中最基本的单元,是构成WSNs的基础[2]。本文采用CC1110芯片设计WSNs节点,构建矿井下WSNs。网络中有2种节点,终端数据采集节点和数据汇聚传输节点。数据采集节点和数据汇聚传输节点都采用了以CC1110芯片为核心,配合无线通信电路而构成的无线通信模块。数据采集节点在无线通信模块的基础上增加了各种传感器;而数据接收传输节点则在无线通信模块的基础上增加了存储芯片、串行通信电路等,以便数据的存储以及与网关的相连。
1.1 无线通信模块设计
TI公司的CC1110芯片是一种包含了射频单元的单芯片无线传感器模块,内嵌了加强型51内核单片机,8通道8~14 bit A/D转换器、位定时器、串口及多个 IO接口[3]。芯片功耗极低,工作温度范围为-40~85℃,可在恶劣环境工作,如矿井下等。
1.2 射频模块设计
CC1110芯片的RF性能优异,可用频率范围为300~348 MHz,391~464 MHz和 782~ 928 MHz,最大输出功率可达10 dBm,最大数据率可达500 kbps,可以选择2—FSK,GFSK,MSK等多种调制方式。对于矿井下的WSNs,考虑到传输性能和井下的独立性,采用的频率为915 MHz,传输速率选择250 kbps和2—FSK调制。该频点传输性能最好,并且对其他设备没有影响[4]。除器件选择高速的电容器和电感器外,在设计PCB的版图时,特别注意了PCB布局的对称性和阻抗的控制。制板前,通过仿真保证了信号的完整性。选择了915MHz的外接天线。这些措施保证了射频部分良好的传输性。
1.3 传感器设备的接入
数据采集节点是在无线通信模块的基础上外接了传感器。传感器的信息经过CC1110的A/D采集后变为数字信号,发送给数据传输节点。
数据采集节点可以根据矿井下的实际需要选择合适的传感器,如,温度、湿度、甲烷含量、氧气含量、压强等。传感器数据采集节点的设计框图如图1所示。
图1 传感器节点框图Fig 1 Block diagram of sensor nodes
2 无线网络设计
在无线网络的设计上,采用了SimpliciTI网络协议。它是由TI公司推出的,针对简单、小型RF网络的,专有低功耗RF协议,能在CC1110控制器上收发运行,适合用来设计小型WSNs。
2.1 SimpliciTI网络协议
SimpliciTI网络协议的模块包括网络管理、数据中心、跳频、范围扩展、加密、低功耗网络。协议主要分为3层:应用层、网络层和硬件逻辑层,加密在网络层处理。硬件逻辑层包括射频层(radio)和板级驱动包(BSP)。不存在传统网络中的物理层(PHY)和数据链路层(MAC/LLC),数据直接从射频层接收,板级驱动包提供了射频层与网络层的通信接口。
2.2 SimpliciTI网络结构
SimpliciTI支持2种基本网络拓扑结构:星状网络拓扑和点对点对等网络拓扑,同时支持网络拓扑扩展,即在星状网络的基础上,使用范围扩展设备使网络扩展为串状网络[5]。本文网络设计并没有使用范围扩展设备,而是通过串口实现在不同子网之间的数据传输,达到构建主干网的目的。
2.3 数据帧格式
数据帧大小为:最小22字节,最大74字节。其中,数据长度,目的地址,源地址,PORT,设备信息,交换记录,有效数据等进行CRC校验。有效数据载荷为0~52字节,如表1所示。
表1 数据帧格式Tab 1 Format of data frame
对于帧中的有效数据,根据传感器和网关部分的设计,将其长度设置为14字节,各个数据位分别为G,子网号,n,节点号,温度,湿度,瓦斯,压强,氧气,数据所占字节数,如表2所示。
表2 有效数据格式Tab 2 Format of valid data
3 系统软件设计
软件主要包含两部分,数据汇聚传输节点,也叫数据中心(access point,AP)设计,数据采集终端节点(end device,ED)设计。
3.1 网络拓扑结构
图2中只给出了2个子网和1个网关,通过网关的转换,数据进入互联网,并传输到远端的服务器。该拓扑图中,单个子网使用星状网络拓扑。0号子网的AP在接收了2个ED-S所采集的传感器数据后,将其依次发送至该子网中的ED-R。ED-R并没有承担一般终端节点发送数据帧的任务,而是接收本子网中AP发送的数据帧。ED-R将收到的数据存入Buf中,整个Buf中的数据通过串口发送到1号子网的AP上,同时1号子网的AP也接收本子网中的ED-S发送的数据帧,再将所有数据依次发至ED-R上,同样,这个ED-R将收到的所有数据存入Buf,再打包发送到下一层。这个过程可以一直延续下去,组建出多个子网构成主干网,但需要考虑到节点的实际数据承载能力,应根据实际情况对拓扑结构进行适当的修改。
图2 网络拓扑图Fig 2 Network topology
3.2 数据中心(AP)程序设计
AP进行BSP的初始化,通过SMPL_Init()打开射频,完成对网络部分的初始化工作。建立星状网络,等待ED加入。对串口初始化后,打开串口中断,等待接收下层子网ED-R通过串口发送来的数据。其中,定义了结构体Uart_R,用于存放串口接收的数据。每次发送的串口数据帧长可以在Framelenth中进行修改。AP中设置了每个网络唯一的4bit JOIN_TOKEN,只有该数值相同的节点才能加入这个网络,保证了2个AP不会同时对新加入的节点进行回应。JOIN_TOKEN可以在smpl_nwk_config.dat文件中进行修改设置。成功建立网络后,只要未达到AP所能接受的最大连接数NUM_CONNECTIONS,AP就始终监听是否有终端节点的连接请求。最大连接数NUM_CONNECTIONS可在smpl_config.dat中修改设置。若收到新节点的加入信息,AP为每个ED分配ID,并向ED发送应答信息。在收到数据帧之后,AP根据ID号将数据保存入缓存中,按照先入先出规则将这些数据帧无线发送至本子网中的 ED-R。为了判断串口状态,定义了结构体 Uart_S,当状态为“接收完毕RXOVER”或者“定时器关闭TIMEROVER”时,串口已经完成接收工作,可以对数据进行处理。由于下层子网ED-R发送的串口数据是成块发送,无法直接通过无线发送,需要重新按照SimpliciTI的数据帧协议格式,将其中的有效数据,分为独立帧结构,分别发送至ED-R。每次串口工作完毕,都要对Uart_R中数据缓存进行清空。程序流程如图3所示。
图3 AP主函数程序流程图Fig 3 Flow chart of the main function program in AP
3.3 终端节点(ED)设计
ED在经过BSP,串口等的初始化以后,AP发送加入网络的请求,加入成功后同AP进行连接,其流程如图4所示。
图4 ED主函数流程图Fig 4 Flow chart of the main function()in ED
在星状网络中,ED要加入AP建立的网络中,需要向AP发送连接请求命令。AP允许ED加入并分配ID,对其请求进行应答。在主函数中体现为link to(),其流程如图5。
图5 link to()函数流程图Fig 5 Flow chart of the link to()function
图5为一般数据采集节点ED的程序流程,主要负责采集传感器数据,封装为数据帧之后发送至子网汇聚结点AP。本设计中的数据采集节点能分别采集5只传感器的数据,每只传感器数据占用一个片内通道,采样精度为12位,用2个字节表示。将寄存器ADCCON3设置为“0x0F+ch”的格式,根据不同传感器的通道号,每次可以对相应传感器的数据进行A/D转换。寄存器ADCCON1的EOC位用来指示当前转换是否结束。一次A/D转换完成后,将转换结果低八位ADCL存入adc_value[1],高八位ADCH存入 adc_value[0],对2个数据进行移位处理,最终使得采集到的12位数据的高四位存放于adc_value[0]中,低八位存放于adc_value[1]中。在link to()函数中,读取这2个数值,完成对传感器原始数据的采集。
构建2个子网,还需要另外一个接收节点ED-R,该节点用于接收AP发送来的数据帧,并将其存入Buf中,通过串口发送至下一个子网中的AP或者直接发至网关,将数据交给上层服务器处理。
对于ED-R的主函数流程,与其他所有ED相同,只是在link to中,成功分配ID之后,需要进行一些修改,ED-R不需要采集传感器数据,只需将射频控制IOCTL_OBJ_RADIO设置为Rx接收状态。设置串口发送缓存Buf,当接收到数据帧后,根据帧中有效数据的子网号G和节点号n,保存入Buf相应位置。处理完毕,通过串口通信将Buf发送到下个子网AP。设置计数器Number,发送10次之后,清空整个Buf,满足数据的实时更新要求。这部分流程图如图6所示。
图6 ED-R link to()流程图Fig 6 Flow chart of the link to()in ED-R
4 测试结果
设计的CC1110传感器节点在传输距离为30 m,通信频率为915 MHz,调制方式2-FSK,速率为250 kbps时进行了测试,测试结果如表3所示。
表3 测试结果Tab 3 Results of tests
由测试结果可以看出:节点在5个不同的发射功率设定下,通过无线收发数据,均能保证低丢包率和错误率,具备较高的可靠性。
5 结束语
基于CC1110设计的井下WSNs,经过多节点多子网的组网测试,达到预期目标。底层传感器节点采集各种井下的环境和设备参量数据,通过无线网络发送至网关,并经由网关发送到远端的监控平台,达到了远程实时监测的目的,保障了生产安全。
[1]任丰原,黄海宁,林 闯.无线传感器网络[J].软件学报,2003,14(7):1282-1291.
[2]Mondinelli F,ltM Z,Sajna K.Self-localizing sensor network architectures[J].IEEE Transaction on Instrumentation and measurement,2004,53(2):277-283.
[3]Texas Instruments CC1110 Datasheet[EB/OL].[2008—07—11].http:∥focus.ti.com/lit/ds/symlink/cc1110f 32.pdf.
[4]程伟明.无线移动自组网及其关键技术[J].数据通信,2002(3):56-58.
[5]李文仲,段朝玉.CC1110/CC2510无线单片机和无线自组织网络入门与实战[M].北京:北京航空航天大学,2008:221-224.