zigbee LQI、RSSI、丢包率等关系实验1

更新时间:2024-01-21 06:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

4.6 zigbee LQI、RSSI、丢包率等关系实验

无线传感器网络环境的复杂多变对ZigBee网络的自组织性提出了挑战,在实际的网络部署中,链路质量指示(LQI)、信号强度(RSSI)、丢包率等都对网络的调度分配与优化具有重要意义,LQI、RSSI在ZigBee标准中已经有了良好的定义,而且在ZigBee芯片上都提供了直接的支持,通过Z-Stack协议栈能够方便的获得。

4.6.1 实验目的与器材

1)实验目的

本实验将利用Z-Stack2007协议栈提供的API获取LQI、RSSI等数据信息,通过多组测试进行统计分析。由于无法模拟复杂的网络环境,主要在实验5.6的基础上,通过修改节点的发射功率以及增加干扰节点来影响统计的终端节点与协调器节点之间的通信,并由此分析发射功率对LQI、RSSI、丢包率等的影响,给实际的网络部署提供具有参考意义的数据信息,同时也可以利用现有代码将节点直接部署在需要建网的地方进行测试分析。 2)实验器材

? 3个CC2530开发模块(1个协调器节点,1个终端节点,1个干扰节点);

4.6.2 实验原理与步骤

1)LQI、RSSI介绍

1 链路质量指示(LQI)

LQI即链路质量指示,在ZigBee标准中规定的链路质量指示用于指示接收数据包的质量,为网络层或应用层提供接收数据帧时无线信号的强度和质量信息,它要对信号进行解码,生成的是一个信噪比指标。LQI的取值是0x00~0xff,分别表示接收到的信号最差质量(0x00)到最好质量(0xff)。 2 接收信号强度(RSSI)

RSSI(Received Signal Strength Indicator)是接收信号的强度指示,它的实现是在反向通道基带接收滤波器之后进行的。同时可以利用RSSI来进行统计信息进而实现定位功能。RSSI一般可从芯片直接获取:

RSSI与LQI的关系:RSSI =-(81-(LQI*91)/255) RSSI与d(距离)的关系:

2)程序流程

1协议栈中,RSSI、LQI获取:

在测试代码中主要通过sendReport()函数完成周期性的代码发送SampleApp_MessageMSGCB()完成在接收到数据包后进行的处理,而获得的数据包中本身就包含了RSSI和LQI值,通过osal_msg_receive()函数进行获取解析,并形成afIncomingMSGPacket_t结构

体类型:

typedef struct {

osal_event_hdr_t hdr; /* OSAL Message header */

uint16 groupId; /* Message's group ID - 0 if not set */ uint16 clusterId; /* Message's cluster ID */

afAddrType_t srcAddr; /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,

it's an InterPAN message */

uint16 macDestAddr; /* MAC header destination short address */ uint8 endPoint; /* destination endpoint */

uint8 wasBroadcast; /* TRUE if network destination was a broadcast address */

uint8 LinkQuality; /* The link quality of the received data frame */

uint8 correlation; /* The raw correlation value of the received data frame */

int8 rssi; /* The received RF power in units dBm */ uint8 SecurityUse; /* deprecated */

uint32 timestamp; /* receipt timestamp from MAC */ afMSGCommandFormat_t cmd; /* Application Data */ } afIncomingMSGPacket_t;

因此在SampleApp_MessageMSGCB()函数中,通过调用传入的参数afIncomingMSGPacket_t *pkt即接收到的数据包,调用即可获得。

为了方便的将RSSI、LQI数据获取并统计丢包率,将数据信息重新组织在从串口输出的包中,从协调器串口输出的数据格式为5个字节,其形式如表4.6.1所示:

表4.6.1协调器串口输出的数据格式 RSSI LQI 序列号 功率 分隔符

2丢包率和修改发射功率

在处理按键事件中加入发送数据包数,通过一个统计发送的数据包数的变量即可。而发射功率的修改,同时通过LCD显示,可参照实验5.6。 3干扰节点

在终端节点与协调器节点的通信测试统计中,加入干扰节点进行对比分析,在终端节点不同的发射功率下,调整干扰节点的发射功率,统计在干扰影响下LQI、RSSI、丢包率等值得变化情况。其中干扰节点只需不断发送数据包,而动态的调整发射功率可参照实验5.6来进行修改。 3)实验步骤

第一步,下载cc2530测试代码

① 在实验源码中,使用EnddeviceEB和CoordinatorEB;测试代码在“实验代码”文

件夹下的“正常实验节点”中,覆盖到工程SampleApp的Source目录下。

② 通过仿真器链接ZigBee节点与PC机,根据EnddeviceEB和CoordinatorEB选择下

载代码至ZigBee对应节点。

第二步,启动设备调整发射功率,无干扰发送数据包

① 按下协调器的重启键,在lcd显示网络号,led3(黄灯)长亮时说明网络建立; ② 使用USB转串口线与协调器节点相连,打开串口助手,调整波特率为38400; ③ 按下终端节点的重启键,等到led3(黄灯)长亮时说明已与协调器节点建立连接,

通过按键sw3调整发射功率,通过按键sw4调整发送包数

④ 终端节点选择好功率及发送包数后,按下节点的sw1,从协调器节点连接的串口助

手上可观察到数据 第三步,加入干扰节点测试

⑤ 按照第一步中的步骤下载干扰节点代码,代码在“实验代码”文件夹下的“干扰节

点”中。

⑥ 下载EndDeviceEB到干扰节点,通过按键sw3调整发射功率,通过按键sw4调整发

送包数

⑦ 按下sw1发送数据包给协调器节点 第四步,保存记录数据并分析

① 在无干扰情况下,发送功率为3,0,-1,-22对应0xF5,0xD5,0xC5,0x05情况下,发

送数据包,通过串口助手保存显示文件

有干扰情况下,发送功率为3,0,-1,-22情况下,发送数据包并记录。 4)程序清单

清单1 正常测试终端节点

static uint8 sendDataIndex = 1;

static uint8 sendDataNumber = 10; //发送序号

static int txIndex = 3; //最大发射功率 3

(1)在按键中添加自定义事件: if ( keys & HAL_KEY_SW_1 ) {

/* This key sends the Flash Command is sent to Group 1. * This device will not receive the Flash Command from this * device (even if it belongs to group 1). */

//设置周期发送事件

osal_set_event(SampleApp_TaskID,MY_DATA_SEND); }

(2)设置发送功率

if ( keys & HAL_KEY_SW_3 ) {

//发射功率从3 ~~ -22,这里只测试 3 0 -1 -22 switch(txIndex) {

case 3:

txIndex = 0; break; case 0:

txIndex = -1;

break; case -1:

txIndex = -22; break; case -22:

txIndex = 3; break; }

macPhyTxPower = txIndex;

macRadioSetTxPower(macPhyTxPower); #if defined( LCD_SUPPORTED )

HalLcdWriteScreen( \ HalLcdWriteValue(macPhyTxPower,16,HAL_LCD_LINE_2); #endif }

(3)//更改发送数量

if ( keys & HAL_KEY_SW_4 ) {

switch(sendDataNumber) {

case 10:

sendDataNumber = 100; break; case 100:

sendDataNumber = 250; break; case 250:

sendDataNumber = 10; break; }

#if defined( LCD_SUPPORTED )

HalLcdWriteScreen( \ HalLcdWriteValue(sendDataNumber,10,HAL_LCD_LINE_3); #endif }

}清单2 终端节点数据发送

/****************************************************************************** * 事件名 MY_DATA_SEND

* 描述 根据MY_SEND_DATA_DELAY定义的时间间隔,利用osal_start_timerEx函数* 定时的发送数据

*****************************************************************************/

if( events & MY_DATA_SEND ) {

sendReport();

if(sendDataIndex > sendDataNumber) {

osal_stop_timerEx(SampleApp_TaskID,MY_DATA_SEND); sendDataIndex=1; } else

osal_start_timerEx( SampleApp_TaskID, MY_DATA_SEND, MY_SEND_DATA_DELAY ); }

调用的自定义函数sendReport: void sendReport(void) {

uint8 buffer[5]; //send data

buffer[0] = (uint8)(SampleAppFlashCounter++);

buffer[1] = LO_UINT16( SAMPLEAPP_FLASH_DURATION ); buffer[2] = HI_UINT16( SAMPLEAPP_FLASH_DURATION ); buffer[3] = sendDataIndex++; buffer[4] = (uint8)txIndex;

if ( AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc, SAMPLEAPP_FLASH_CLUSTERID, 5,

buffer,

&SampleApp_TransID, AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } }

4.6.3 实验结果

测试说明:测试环境为实验室东北角到西南角桌子之间(约5m),终端发送,协调器接收,终端发送时间间隔为400ms,每次发送100个包,有效载荷为20个字节。(功率单位为dBm)

1. 不同发射功率情况下,丢包率的变化,如图4-6-1所示。

图4-6-1 丢包率随功率变化趋势

结果说明:

(1)在无干扰情况下,终端发送间隔400ms时,在不同的发射功率下,基本无丢包; (2)在干扰节点的发射功率为3dBm时,终端的发射功率越小,丢包越严重;如图,即使终端的发射功率为3dBm时,也有丢包的情况;

(3)在干扰节点的发射功率为-22dBm时,终端的发射功率越小,丢包越严重;如图,但是在终端的发射功率为3和0dBm时,基本没有丢包。

2. 在无干扰的情况下,不同发送功率下LQI比较,如图4-6-2所示。

图4-6-2无干扰情形下, LQI随功率变化趋势

结果说明:

(1)LQI的计算:LQI值越大,一般表明接收包的信号品质越好; (2)在终端采用3dBm这样大的发射功率时,能获得大的LQI值,而功率为-1dBm时,部分LQI值为0;

(3)发射功率为0dBm时,LQI值波动相对小,而其他的波动则较大。 3. 在无干扰的情况下,不同发送功率下RSSI变化,如图4-6-3所示。

图4-6-3无干扰情形下,RSSI随功率变化趋势

结果说明:

(1)RSSI值计算:这里显示的RSSI绝对值,该值越小,表示接收到的信号越强。 (2)终端发射的功率越大,RSSI绝对值越小,发射功率越小,RSSI绝对值越大 (3)当发射功率为0dBm时,RSSI波动最小 4. 在有干扰的情况下,终端不同发送功率下LQI变化 实验说明:LQI值为每组(100个数据包)的平均值,终端发射功率选为3 、0 、-22dBm,干扰节点的发射功率为3、-22时,LQI值变化的对比如图4-6-4所示。

图4-6-4有干扰情形下,LQI随功率变化趋势

结果说明:

(1)在发射功率与干扰功率同为3dBm时,干扰功率大,接收端的LQI值减小幅度大于干扰功率小时;

(2)在发射功率为0dBm时,干扰节点不同的发射功率对接收端的LQI影响不大 5. 在有干扰的情况下,终端不同发送功率下RSSI变化

测试说明:这里显示的RSSI绝对值,该值越小,表示接收到的信号越强。具体数据如图4-6-5所示。

4-6-5有干扰情形下,RSSI随功率变化趋势

结果说明:

终端发射功率越大,干扰节点对接收端的RSSI影响的越小 问题:

1.实验测试一下RSSI与距离的关系,计算一下在现有实验设备环境下的误差是多少? 2.实验观察在相同的距离上,空旷的环境和室内走廊环境下,LQI、RSSI值的变化,为什么有这样的变化?

3.在2的基础上,加入干扰节点,观察LQI、RSSI值变化,分析变化的原因?

4.在2的基础上,增加实验的节点数目,观察网络规模的扩大,对测试结果的影响。 5.在2的基础上,尝试着打开手机或电脑Wi-Fi,观察其对实验有无直接的影响,并分析原因。

本文来源:https://www.bwwdw.com/article/f48o.html

Top