APP下载

一种基于WLAN 的RSSI 值获取方法

2013-12-14王殿君

机床与液压 2013年17期
关键词:驱动程序网卡信号强度

王殿君

(北京石油化工学院机械工程学院,北京102617)

无线局域网络 (Wireless Local-Area Network,WLAN)技术是20 世纪末发展起来的一种高速无线IP 网络通信技术,技术标准号IEEE 802. 11[1]。随着IEEE 802.11 无线局域网络的普及,使用无线网络定位成为一个新的研究热点问题。如何在无线网络中提取无线路由器的RSSI 值,成为利用RSSI 值定位的技术难题。

基于802.11b/g 协议的WLAN 广泛分布在校园、办公大楼等场所,PDA、笔记本等移动设备中也都内置了无线网卡,因此利用RSSI 值来定位成为室内定位技术的研究热点。国内外在这些方面的研究取得了一定成就。由芬兰赫尔辛基大学开发的Ekahau[2],在使用IEEE802.11b 无线LAN 环境下,开发了一种运用接收信号强度进行位置检测的系统。通过事先记录在数据库中某些特定位置所收到的RSSI,在系统实际使用时,利用当时所收到的信号强度,辅以统计的条件概率来判断使用者所在位置。IBM 中国研究中心基于WLAN 的室内定位技术,建立了一套基于WLAN 的定位系统,配置的有位置测定模型的无线设备通过无线局域网络信号采集位置信息[3-5]。作者首先简要介绍了无线定位技术,分析了信号传播模型,研究了无线信号获取过程方法,并进行了实验验证。

1 无线定位技术

目前的定位算法分为两类:基于测距 (Rangebased)的定位算法和无需测距(Range-free)的定位算法[6]。这两种无线定位算法主要包括以下几个方面:

(1)基于电波入射角(Angle of Arrival,AOA)

通过基站接收机天线阵列测出移动台发射电波的入射角,采用一定的算法确定由角度所决定的方位线的交点,即为被测移动结点的位置。该方法适合于视距(Line of Sight)传播的情况,设备复杂度较高。

(2)基于电波传播时间TOA (Time of Arrival)

利用电波信号在移动台与基站间传送所花费的时间差推算出两者的相对距离。该定位算法在1 μs 的时间内将导致300 m 左右的定位误差,但该方法的缺点在于时间的测量上,需要有非常高的精准度,同时接收端与传送端的时间要能同步,而在室内的环境下,多重路径的问题使得信号更难被正确侦测。

(3)基于电波传播时间差TDOA (Time Difference of Arrival)

通过检测信号到达两个基站的时间差,而不是到达的绝对时间来确定移动结点的位置,降低了时间同步要求,根据信号到达时间差,移动结点位于以两个基站为焦点的双曲线上,要确定移动结点的位置至少需要3 个基站,建立2 个双曲线方程,2 个双曲线的交点即为移动结点的二维位置坐标。

(4)基于RSSI 值

已知发射功率,在接收节点测量接收功率,根据计算传播损耗模型公式转化为距离。研究表明,无线信号传播存在以下规律:接收方测得的信号强度越强,发送方距离接收方往往越近;接收到的信号强度越弱,发送方距离接收方往往越远。对于收到接收方的强度,目前在各种标准的无线网络中都可获得,而且接收方强弱的变化是比较可预期的,测量精确度相对较高。因此,因传感器节点本身具有无线通信能力,故其是一种低功率、廉价的测距技术,利用测试到的不同位置点所收到的信号强弱,可以算出移动台到无线路由器的距离,进一步实现定位的功能。

2 信号传播模型分析

无线电传播路径损耗对于RSSI 定位精度有很大影响,信号强度与移动节点(接收机)和AP (发射机)之间的距离有关。针对室内环境下,信号传播容易受到反射、衍射和建筑物的内部结构对无线电波散射的影响,信号传播模型如公式(1)所示:

式中:P(r)为给定的移动节点接收到的功率,它与给定AP 的距离为r,r0为相对发射机的参考距离;P(r0)为参考点处的信号功率;α 表示路径损耗随着距离r 的增加而增加的速率;L 为发射机和接收机之间的隔墙数;WAF 为隔墙衰减因子。

3 无线信号的获取过程

3.1 无线信道探测

IEEE802.11 无线局域网存在主动探测和被动探测两种获取RSSI 的方式。在被动探测模式下,由移动结点测量Probe Response 帧的信号强度;主动探测模式下,由AP 测量Probe Request 帧的信号强度,AP的发射功率通常比移动结点高,信号衰减比移动结点稳定,因此采用第一种测量RSSI 的方式。需要测量时,由测量系统强制无线网卡在所有可用信道上广播发送probe request 帧,测量AP 响应帧的信号强度,并将测量结果提交测量系统。

3.2 网络驱动程序接口NDIS (Network Driver Interface Specification)

NDIS 是Microsoft 和3Com 公司开发的驱动程序,NDIS 的设计目的是通过将不同的协议从网络接口卡上拆除,使得用户可以访问不同的协议。在设计过程中,协议并不需要了解关于网络卡的任何信息。

NDIS 程序库(NDIS. sys)提供了一个抽象的接口,为编写符合NDIS 规范的驱动程序提供了编程环境。在这个环境中,各驱动程序之间的通信全部由NDIS 提供的统一的例程和调用来实现。网卡对驱动程序、协议层驱动程序及操作系统通过这个接口进行通信,它负责上下层驱动程序之间、服务原语和实际驱动入口之间的转换。

图1 NDIS 驱动程序层次

NDIS 网络驱动程序的结构如图1 所示,NDIS 是网卡与网卡驱动程序以及与上层驱动程序之间的通信接口,它为不同的驱动程序提供了不同的接口函数,从而实现了网卡驱动程序与应用程序之间的通信。

NDIS 支 持3 种 类型的网络驱动程序。网卡驱动程序(NIC Drivers)是网卡与上层驱动程序通信的接口,它主要完成以下任务:初始化网卡、停止网卡、发送和接收数据包以及设置网卡的各种参数。中间驱动程序 (Intermediate Protocol Drivers)位于网卡驱动程序和协议驱动程序之间,对于上层传输驱动程序来说,中间驱动类似微端口驱动。协议驱动程序(Upper Level Protocol Drivers)执行具体的网络协议,如TCP/IP 协议、IPX/SPX 协议、NetBEUI 协议等。协议驱动程序为应用层客户程序提供服务。接收来自网卡或中间驱动程序的信息[7]。

3.3 RSSI 值的获取过程

图2 RSSI 值的提取过程

RSSI 值的提取过程如图2 所示,提取无线路由器RSSI 值的主要函数为:

(1)wif_adapteropen(pAdapter->AdapterName)通过设备名获得设备句柄,打开适配器;其中,pAdapter- >AdapterName 表示设备名的参数;

(2)wif_adapterget()连接网络适配器;

(3)wif_adapterlist()提取适配器的信息;

(4)wif_networkconnect()连接网络,显示无线网络是否连上;

(5)wif_networklist()获取无线网络信息,包括RSSI 值、MAC 值和SSID (无线路由器的ID 值)。

无线网卡获取的无线路由器信息顺序如图3 所示。

图3 获取的无线路由器信息

利用RSSI 值和SSID 值,采用3 边定位法和概率定位法等进行移动机器人定位时,最大的技术问题是不能同时获取到多个无线路由器的信息,其主要原因在于无线网卡接收到无线路由器的所有信息时,内存分配不当。当接收到第1 个无线路由器发出的信息时,先存放在预先分配好的内存里,因此可以获得正确的无线路由器信息;当接收到第2 个无线路由器的信息时,没有分配给相应的内存,系统随机分配内存地址,因此获得的信息为系统随机给定值。由此可知,当接收到3 个或3 个以上的无线路由器信息时,除了第1 个接收到的无线路由器的信息正确外,其他信息都是系统随机给定。

为了获取所有接收到的无线路由器的信息,对存放无线路由器信息的内存地址进行合理调整。当接收到第2 个无线路由器的信息,通过偏移第1 个无线路由器信息所占的位数,即第1 个无线路由器信息内存地址的下一个位作为第2 个无线路由器信息的首地址存放信息。依次类推,通过地址的偏移把所有接收到的无线路由器信息存入指定的内存空间,所接收到的无线路由器信息可以全部获取到。

利用改进后的WLAN 的RSSI 值获取算法,以无线网卡能收到2 个无线路由器为例,软件获取无线信号的所有信息时,得到两个完整的无线路由器RSSI值、MAC 值和SSID 等,如图4 所示。

图4 2 个无线路由器的完整信息

4 结论

(1)深入剖析了无线路由器RSSI 值的获取过程,提出了改进多台WLAN 的RSSI 值获取算法,开发了RSSI 值自动获取系统软件;

(2)所构建的RSSI 值自动获取系统为基于WLAN 概率法的导航机器人在结构化环境下的自主定位提供了依据。

【1】ANSI/ IEEE,Std 802.11,1999 Edition.

【2】BAHL P,PADMANAHHAN Y N.RADAR:An In-building RF-based User Location and Tracking System[C]//IEEE Infocom 2000,2000:775 -784.

【3】SONG Xiang S,CHEN J,WANG H,et al.A Wireless LANbased Indoor Positioning Technology[J]. References IBM Journal of Research and Development,2004,48(5/6).

【4】王晓旭,刘金桂. 基于RSSI 测距的室内三维定位算法[J].自动化技术与应用,2011,30(7):63 -65.

【5】王伟,陈岱,周勇.基于测距修正和位置校正的RSSI 定位算法[J]. 计算机工程与设计,2011,32(2):409 -412.

【6】王福豹,史龙,任丰原.无线传感器网络中的自身定位系统和算法[J].软件学报,2005,16(5):857 -868.

【7】王湘渝,江文,唐俊.一种基于NDIS 驱动程序实现隐蔽通道的方法[J]. 计算机应用与软件,2011,28(6):229-301.

猜你喜欢

驱动程序网卡信号强度
光学相干断层成像不同扫描信号强度对视盘RNFL厚度分析的影响
电子自旋共振波谱法检测60Co-γ射线辐照中药材
Server 2016网卡组合模式
计算机硬件设备驱动程序分析
室内定位信号强度—距离关系模型构建与分析
WiFi信号强度空间分辨率的研究分析
挑战Killer网卡Realtek网游专用Dragon网卡
读编往来
无线网卡种类有什么区别?
基于MPC8280的CPU单元与内部总线驱动程序设计