基于RSSI的WSN定位系统设计
2023-10-25曹鹏飞
曹鹏飞
(天津中德应用技术大学 智能制造学院,天津 300350)
0 引言
无线传感器网络(Wireless Sensor Networks,WSN)是一种无线网络,主要利用传感器来实现信息的采集并进行分布式传导[1]。在WSN应用中,ZigBee技术具有近距离、低复杂度、自组织、低功耗、低数据速率和低成本的特点,因此成为WSN的一种主要传输方式。WSN已被广泛应用于智能家居、智能制造、智能交通等领域。其中,定位技术是关键技术之一,因此是研究的一个主要方向。
对于室内定位采用的算法,按照信号测量技术进行分类,主要分成两大类:一类是基于非测距的定位算法,另外一类是基于测距的定位算法[2]。采用RSSI的定位算法是基于接收信号强度和距离之间的变化关系进行定位计算,与其他测距定位算法相比,无需为了进行高精确的时间测量和角度测量而添加其他硬件设备,一方面降低了技术实现的难度,另一方面又降低系统的生产成本,利用现有的无线网络就可以实现有效的定位,因此得到了广泛的应用[3]。
本文设计的WSN定位系统采用RSSI定位方法实现定位。系统由包括未知节点、锚节点和协调器节点的ZigBee网络组成,通过CC2530硬件设备实现网络节点功能,未知节点的RSSI信号被发送给锚节点,再被转发到协调器节点,经由协调器节点传送到上位机,经过上位机终端软件处理后,可以实现对RSSI值到距离数据的转换和位置结果显示,从而实现对位置节点的实时定位功能。
1 定位系统算法实现
1.1 RSSI定位算法模型
无线信号传输一般可采用简化的信号模型,计算距离基站d处的信号强度PL的公式如式(1)所示:
PL=A-10×n×lg(d)
(1)
其中:A为无线收发节点相距1 m时接收节点接收到的无线信号强度值。n是衰减指数,表示路径长度和路径损耗之间的比例因子,其值跟建筑等障碍物的结构和采用的材料密切相关。A和n的取值与具体使用的硬件节点和无线信号传播的环境密切相关,可通过测试进行调整。
1.2 三边定位算法
三边测量法的基础数学原理是确定未知节点通信范围内的3个锚节点后,选择锚节点作为圆心,节点距离作为半径,可以得到3个圆,未知节点位于3个圆的交点处。
3个圆中心A、B、C三点为锚节点,P为未知节点。假设P的坐标为(x,y),3个锚节点的坐标依次为(x1,y1)、(x2,y2)、(x3,y3),P与A、B、C的距离依次为d1、d2、d3,分别以(x1,y1)、(x2,y2)、(x3,y3)为圆心,d1、d2、d3为半径做圆,3个圆的交点即为(x,y),距离与坐标的关系如式(2)所示:
(2)
通过求解式(2),可以得出未知节点坐标如式(3)所示:
(3)
1.3 平均值滤波
平均值滤波是指通过采集定位节点的若干RSSI值,然后取这些数据的算术平均值。通常在实际测量时,一组数据需要测量足够多的 RSSI值,由于环境的复杂性和无线信号的不稳定性,这些RSSI值变化较大,缺乏一致性,任选其中一个数据都不能准确表示RSSI值,因此可以选择平均值滤波的方法来获得较为合理的RSSI值。
平均值滤波公式如式(4)所示。
(4)
其中,PL表示RSSI值,m表示测量的个数。当m取值较小时,采集到的数据实时性和准确性较差。当m取值较大时,虽然可以减少数据的偶然性,但是需要测量更多的数据,又会增加通信的成本,并且在处理大扰动时效果不够理想。因此,从提高实验准确性和降低通信成本等因素考虑,需要选取一个较为合适的m值。
1.4 卡尔曼滤波
卡尔曼滤波(Kalman Filtering,KF)算法是依据线性系统状态方程,利用系统输入输出数据,对系统状态实现最优估计。最初目的是用于估计随机过程的参数,随后基于其自身特点被广泛应用于解决各种最优滤波和最优控制等问题[4]。一般来说,卡尔曼滤波算法包括2个基本特点:(1)卡尔曼滤波器是自适应滤波器,其解是一种递推计算;(2)卡尔曼滤波的数学公式通过状态空间的概念进行描述。
受噪声的影响,系统状态作为一个随机量,难以得到精确的数值,卡尔曼滤波依据某种统计模式,将对系统进行多次观测后得到的数据进一步处理后实现对实时系统状态的估计和预测。
在卡尔曼滤波中,状态方程表示如式(5)所示:
x(k)=Φx(k-1)+ω(k-1)
(5)
测量方程表示如式(6)所示:
y(k)=Hx(k)+v(k)
(6)
式中:x(k)表示状态值,y(k)表示测量值,Φ为状态转移矩阵,H为系统测量矩阵,ω(k)为输入白噪声,v(k)为观测噪声。
卡尔曼滤波过程包括预测过程和修正过程,在滤波过程中,修正状态估计值是滤波后的RSSI值,测量值是实验测得的RSSI值[5]。主要计算公式如下:
预测状态估计值如式(7)所示 :
X(k+1|k)=ΦX(k|k)
(7)
一步预测协方差矩阵如式(8)所示:
P(k+1|k)=ΦP(k|k)ΦT+ΓQΓT
(8)
求滤波增益矩阵如式(9)所示:
K(k+1)=P(k+1|k)HT[HP(k+1|k)HT+R]-1
(9)
状态更新如式(10)所示:
X(k+1|k+1)=X(k+1|k)+K(k+1)ε(k+1)
ε(k+1)=Y(k+1)-HX(k+1|k)
(10)
协方差更新如式(11)所示:
P(k+1|k+1)=[In-K(k+1)H]P(k+1|k)
X(0|0)=μ0P(0|0)=P0
(11)
其中,X(k+1∣k)是利用上一状态预测下一时刻的结果;X(k∣k)是已知测量值y(k)时,k时刻的修正状态估计值;Γ为系统噪声驱动矩阵;R为系统观测噪声方差阵;Q为系统过程方差阵。
2 定位系统硬件实现
系统硬件组成如图1所示。
图1 系统硬件组成
在本定位系统中,首先需要选择合适的ZigBee网络处理芯片。根据综合性能的比较,选择TI公司的CC2530芯片。该芯片结合一个高性能的RF收发器与一个8051微处理器,包含8 kB的RAM以及最大256 kB闪存。此外,这款芯片集合了ZigBee 协议栈(Z-Stack),极大方便了用户的开发。ZigBee网络由锚节点、未知节点和协调器节点组成,不同节点采用的处理器都为CC2530芯片,可在软件中设置为不同的功能模块。ZigBee网络节点的硬件模块包括核心板模块和底板模块,其中核心板模块由处理器模块、射频接口模块、时钟电路模块、串口通信模块等组成;底板模块由电源模块、USB 接口模块和传感器接口模块等组成。
在核心板电路模块中,处理器采用CC2530芯片,主要完成ZigBee协议的处理和采集数据的处理。CC2530 芯片中集成Z-Stack 协议栈,可以提供完整的ZigBee 网络协议应用。射频接口模块可以外接天线,提高无线信号的可靠性和稳定性。时钟电路模块用于提供电路工作时钟。串口通信模块用于和外界的串口通信,利用USB 转串口电路实现。
在底板电路模块中,电源模块将外接电源或电池电源通过电压转换芯片产生不同电压值,以便对电路中各模块进行供电。USB 接口模块既能对电路板进行供电,同时可以完成处理器程序的下载。传感器接口模块可用于外部不同类型的传感器。
ZigBee网络中的协调器节点通过串口将采集到的RSSI数据传递给上位机,同时可将上位机的控制指令下发到ZigBee网络终端节点。上位机处理采集到的数据,根据定位算法计算未知节点的位置坐标并将结果进行显示。
3 系统人机交互界面设计
上位机是整个定位系统的信息处理中心,能够实现人机交互,显示未知节点的定位信息。其通过串口实现上位机和ZigBee网络协调器之间的通信,能够接收ZigBee无线通信系统中未知节点发送的RSSI数据信息,根据锚节点的固定位置信息,并结合上文提到的定位算法进行位置计算。上位机软件采用Visual Studio软件实现,结合模块化的思想进行开发,具有易于扩展和易于移植等优点。
4 定位系统测试
在本定位系统中,ZigBee网络中的锚节点和未知节点都是终端节点,其中包括1个需要计算坐标信息的未知节点,4个锚节点作为参考节点,此外还有1个协调器节点用来管理ZigBee网络和给上位机上传RSSI数据。
在实际测试时,设定一个8 m×8 m的固定区域,在此范围内进行未知节点的定位测试,4个锚节点放置于指定位置,未知节点的放置位置不能超出锚节点的有效通信范围。系统运行后,移动未知节点的位置,在上位机软件中能够实时显示对应坐标值。测试时,每个锚节点读取100次未知节点的RSSI数据值作为一组测试值,通过协调器节点发送给上位机软件进行中值滤波和卡尔曼滤波处理后,再进行定位计算,从而得到未知节点的位置信息。
当对比实际坐标测量值时,无滤波处理时测量值和实际值偏差较大,而采用滤波算法的定位效果更好,其中采用卡尔曼滤波算法的应用结果优于采用中值滤波算法的应用结果。
5 结语
本文设计的基于RSSI的节点定位系统结构简单,组网灵活,操作方便。本研究利用ZigBee网络采集未知节点的RSSI值,实现上位机与协调器模块之间的通信,再通过卡尔曼滤波算法对RSSI数据值进行处理,最后采用三边定位算法进行距离计算,得到未知节点的位置信息,通过采用卡尔曼滤波算法进行数据处理能够获得更高的定位精度。