引言
北斗卫星导航系统(BeiDou Navigation Satellite System,BDS)是中国正在实施的自主研发、独立运行的全球卫星导航系统[1]。北斗卫星导航系统致力于向全球用户提供高质量的定位、导航和授时服务,包括向全球免费提供定位、测速和授时服务。目前,北斗卫星系统的建设正按计划稳步推进,目前已成功发射了16颗北斗导航卫星,服务范围覆盖了亚太地区。
无线传感器网络(Wireless Sensor Network, WSN)是由大量的静止或移动的传感器以自组织和多跳的方式构成的无线网络,以协作地感知、采集、处理和传输网络覆盖地理区域内被感知对象的信息,并最终把这些信息发送给网络的所有者[2]。在无线传感网技术中,最为符合低功耗、低成本、高可靠性要求的当属ZigBee技术。ZigBee技术是一种工作在全球、美国和欧洲3个频段上的无线通信技术,基于无线通信协议。它具有低功耗、低成本、低复杂度、自动组网的特点,主要适合于短距离无线通信、组网、自动控制和远程控制等领域,并可以嵌入至各种设备中[3]。
这两种热门技术特点鲜明,如果将它们结合,即把定位导航技术与短距离组网技术结合,就可以实现更广泛和更复杂的应用,满足对于不同规模和要求的检测、定位、导航等各项需求,方便数据传输,弥补现有技术产品的空白。
1 创新功能
1.1 精确定位
ZigBee节点广泛应用于野外环境勘测、智能交通监控等领域,单纯的ZigBee节点采集的数据是一维数据,孤立的数据不利于分析与决策。如果将采集地的位置信息也一起获取,就可以把采集到的环境信息与位置信息相结合,在汇总、分析时绘制成一个二维的数据地图,更将直观地了解信息的分布状况;而如果再加上精确的时间,就组成了三维的数据体,这样的数据更加综合、全面。
1.2 间接定位
卫星定位通常要求在有天空视野的室外,因而在室内就定位困难。利用ZigBee的间接定位,当周围已经存在了包含定位设备的ZigBee网络时,就可以接入ZigBee网络实现间接定位。相当于在这个区域内任意可接入网络的地点提供了实时间接定位的服务,任何设备都可以透过ZigBee网络获取自己当前的位置信息,这样不仅降低了定位服务的成本,也扩大了定位的应用范围。
1.3 网络授时
ZigBee网络虽然具备低成本、低功耗、高可靠性的优势,但是考虑到网络延时和较低的数据传输速率,因此在系统实时性方面不尽如人意。当ZigBee网络面对的是某种对实时性要求较高的应用时,势必会因为较大的时延,影响数据的精确性。如果采用从北斗卫星导航系统获取的精确时间,然后对全网所有节点校时,那么节点的同步性就得到了提高,从而提高系统的响应速度。
1.4 数据通信
北斗卫星导航系统虽然可以提供精确的时间和位置信息,但是却没有信息的传递能力,ZigBee网络就为这种信息组织提供了一种简便的方式。通过把北斗定位的数据架设于ZigBee网络之中,就可以让位置信息传递起来。
2 北斗+ZigBee终端的系统设计
2.1 结构体系
北斗导航系统与ZigBee网络结构体系如图1所示,主要由ZigBee网络节点和北斗导航节点组成。传感网子网内一般由一个主节点和多个节点组成。主节点主要负责ZigBee网络的组网和网内设备的管理,同时与北斗定位导航模块通信。
图1 北斗ZigBee网络结构示意图
2.2 硬件设计
在ZigBee节点的设计上,选用Freescale公司针对 ZigBee技术推出的MC13213芯片。该芯片是完整的单芯片解决方案,其内部集成了 HCS08 MCU和遵循 IEEE 802.15.4标准的第二代无线射频收发器,也称为 Modem。MC13213能够以非常低的总材料成本建立强大的网络节点。其特点是速度快,片内资源丰富。其硬件框图如图2所示。
图2 终端硬件功能框图
北斗定位导航模块以芯星通公司的UM220芯片为核心设计。UM220是针对车辆监控、气象探测和电信电力授时等应用而推出的北斗/GPS双系统模块。单芯片支持北斗 BD2/GPS功能,无需外接 CPU即可直接输出 NMEA数据,支持UART、SPI、1PPS、I2C等多种接口。引脚连接如图3所示,本设计通过TXD3、RXD3分别与MC13213的PTE1(TXD1)、PTE0(RXD1)相连,实现数据通信。
图3 UM220与主控MC13213连接图
2.3 软件设计
ZigBee是基于IEEE 802.15.4标准的低功耗个域网协议。根据这个协议规定的技术,是一种短距离、低功耗的无线通信技术。ZigBee设备包括IEEE 802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层——网络层(NWK)、应用层和安全服务提供层。
由于受无线传输功耗的限制,传输有效距离在100 m以内,因此对于在区域范围内的覆盖就需要通过内置的ZigBee协议栈实现自动组网和路径计算功能。在终端设计中,数据传输的承载媒介是ZigBee网络,不管是精确定位的坐标信息,还是间接定位的侦测信息,亦或是时间同步的数据,都依赖于ZigBee所提供的数据服务进行传输。
精确定位的功能依赖于北斗导航定位所获得的精确坐标。UM220模块提供北斗的定位信息。UM220输出数据采用ASCII码,按照NMEA0183格式进行异步串行通信,因此通过将其通过串口与MC13213相连,设定每秒输出一次定位信息,通过MC13213内置的单片机处理定位信息。UM220输出语句有$BDGGA、$BDGSA、$BDGSV、$BDRMC等。其中$BDGGA定位数据语句是最为常用的语句,因此我们选用它作为定位信息的输出语句。
$BDGGA语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗号进行分隔。由此便获得了经、纬度和海拔高度的精确信息。这些信息将存储在MC13213的内存中,不仅实现节点的精确定位,作为自己的位置信息,也为其他节点的间接定位提供参考信息。
间接定位常用的算法有两种:基于距离的定位算法、与距离无关的定位算法。距离无关的定位算法的优点是,对节点的硬件结构要求较低;缺点是定位精度不高,难以满足室内定位的精度要求。基于距离的定位则是通过测量节点间点到点的距离或角度信息,再使用一定的计算方法计算节点位置。常用的测距技术有RSSI、TOA、TDOA和AOA等。由于ZigBee无线通信模块可以直接提供RSSI值,因此本设计使用RSSI信息来实现定位功能。
利用RSSI测量距离,需要建立距离与RSSI的模型。由于经验模型在实际定位前,需要先模拟测试环境,建立该环境中各个距离上的位置和信号强度关系的离线数据库,操作起来较为繁琐,数据库也不适合单片机的应用,因此这里采用理论模型,用无线电传播路径损耗模型进行计算。
自由空间无线电传播路径损耗模型公式如下:
式中,d为接收点距信源的距离,单位为km;f为频率,单位为MHz;k为路径衰减因子。
实际应用环境中,由于存在多径、绕射、障碍物等各种影响因素,因此还要对模型进行改进。这里采用一种对数-常态分布模型,其计算公式为:
式中,Xσ是平均值为0的高斯分布随机变数,取其标准差范围为4~10;k的取值范围为2~5。取d =1,代入式(1)可得Loss,即PL (d0)的值。由此得到未知节点接收锚节点信号时的信号强度公式如下:
RSSI=发射功率+天线增益-路径损耗(PL(d))
图4 三边测量法
假设移动节点0接收到 n( n≥3)个固定节点发送的信号,图4三边测量法从接收到的 n个信号中选取接收信号最强的3个固定节点作为信标节点 A、B、C。利用 RSSI测距方法,测量到的距离分别为 dA、dB、dC,此时就可以根据 dA、dB、dC采用图4所示的三边测量法确定位置。如果不相交于一点,则可以根据质心法来实现。
理论上,虽然获取3个已定位节点的信息就可以确定一个未知节点的位置,但是实际情况会因为干扰而出现偏差。例如,当两个射频之间出现意外遮挡物时,接收信号会降低 30 dBm。为了修正异常,提高定位结果的精确性,间接定位需要尽可能多的已定位节点的 RSSI值,进行相关的定位计算,那么当采用大量的节点后,RSSI的值将趋于稳定,这时就可以得出更加精确的定位结果。
ZigBee全网的时间同步使用FTSP算法实现。它通过发送一条报文并在发送和接收两端分别打下时间戳来实现一对一或者一对多的时间同步。FTSP算法提供多跳的时间同步,由网络的根节点维护一个全局时钟,其他的所有节点都同步到根节点,由此将全网中的所有节点时间同步。
FTSP算法的实现步骤如下[4]:
① 发射同步(sync)字节,计算时间戳t,计算方法为当前的时间减去消息数据部分的发射时间,消息数据部分的发射时间,可以通过数据长度和发射速率得出。发射时间戳t。
② 接收数据包,记录sync字节最后到达的时间tr,计算位偏移(bit offset)。在收到完整消息后,计算位偏移产生的时间延迟tb,计算方法为计算位偏移和接收速率。
③ 接收节点计算与发送节点之间的时钟偏移量offset,然后调节本地时钟与发送节点的时钟同步。
3 性能测试
3.1 定位误差测试
间接定位的实际测试中,共部署了23个传感节点,其中使用北斗直接定位的有11个,没有提供北斗定位而使用ZigBee定位的有12个。节点随机分布,节点间设置了10~20 m不等的距离,然后进行了10次间接定位的实验。通过统计数据,分析与实际测量值的误差,结果如图5所示。
图5 间接定位误差分布
综合计算,10次实验的平均定位误差为1.7 m。考虑到平均14 m的节点间距离,定位误差较小,符合应用要求。
3.2 时间同步误差测试
在时间同步的仿真中,依然采用间接定位测试中的节点。23个节点位置随机分布,时间同步周期为5 s,在原有ZigBee协议中增加了部分模块的功能,包括 MAC层的时间戳。在实验中,分别记录了FTSP在网络中节点间单跳和多跳的平均同步误差,测试次数为10次,实验结果如图6所示。
图6 间接定位误差分布
根据实验结果,两个节点单跳FTSP平均误差为2.12 μs;但是到7跳的时候,两个节点的平均误差,FTSP为 11.97 μs,结果表明,FTSP算法在多跳网络中的同步误差精度较高,曲线平滑,符合要求,可以达到提升ZigBee网络时间同步准确性的目的。
结语
利用Freescale的ZigBee通信模块MC13213与和芯星通UM220定位导航芯片组合搭建的硬件和软件平台,把北斗卫星定位系统的定位信息和授时功能与ZigBee系统相结合;利用精确的定位和授时数据改进ZigBee协议栈的性能,增强其节点的功能,实现了精确定位、间接定位和全网时间同步的改进。通过ZigBee网络传输性能的优势,弥补了单一北斗导航数据缺乏流动性和数据形态孤立的不足。经测试,设计终端性能稳定,效果良好,达到了预期的设计目标。