基于ZigBee的点到点通信质量测量仪设计
2020-09-15徐智博王铭海张剑楠吴春姬李占龙
徐智博,王铭海,张剑楠,吴春姬,李占龙
(1.吉林大学物理学院,吉林长春 130012;2.吉林大学大数据与网络管理中心,吉林长春 130012)
0 引言
ZigBee协议是无线传感器网络的工业标准[1],具有低功耗、低成本、体积小等特点[2],广泛应用于楼宇自动化、现场监测等领域[3]。由于节点发射功率较低,节点的安装位置(如距离、遮挡、电磁干扰等)对通信质量会产生很大影响[4],因此对ZigBee通信质量的测量非常必要。
然而,目前大多数研究者只从NWK层的路由算法入手,对“端到端”的通信质量进行测量和优化[5],或者提出通过增加路由节点或增大发射功率的方法[6]改善通信质量,而忽略了“点到点”测量的重要性[7],导致整个网络得不到根本优化,增加了功耗和成本。
在点到点的研究中,文献[4]虽然从理论上推导了ZigBee点到点通信质量的估算方法,但其理论仅局限于户外开阔环境。此外,文献中提及的点到点测量仪器也大都是出于对物体定位的目的[8],只对RSSI这一个参数进行测量,测量参数单一,且只能测量单程的通信质量,不能满足工程的需要。
为此,本文设计的ZigBee点到点通信质量测量仪是以ZigBee的MAC层数据帧和应答帧为基础,通过两点间通信的方式完成点到点通信质量的定量测量,采用多个参数对通信质量进行联合表征,避免了单一参数的局限性,且可同时对往返路径进行双向测量,使测量效率提升1倍。
1 ZigBee点到点通信质量的评价指标
1.1 RSSI(接收信号强度指示)
接收数据时,对8个连续符号的接收强度取平均值即为RSSI。接收信号的强度越大则RSSI越大,通信质量可能就越好。但此参数只能表征接收到信号强度的大小,若出现高强度的噪声干扰时可能会出现误判,因此仅使用RSSI作为评价指标具有一定局限性。
1.2 LQI(链路质量指示)
由于SFD(帧定界符)具有固定的数据格式,因此可对接收到每一帧的SFD信号的前8个符号与标准格式进行数据相关性计算,得到的结果即为LQI。LQI可表征接收数据的误码率情况,接收误码率越高则LQI值越低,通信质量就越差。虽然LQI能对接收帧的误码率进行表征,但对于未成功接收的帧并不具有表征能力。
1.3 收帧率R
设在一段时间内发送方发出了NTx个帧,接收方在此期间收到了NRx个帧,则R=NRx/NTx×100%。收帧率是从统计的角度描述通信质量,其值越高则通信质量越好。
1.4 评价指标分析
由以上分析可知,单一参数描述通信质量具有一定局限性。因此本设计同时对上述参数进行测量,以求对通信质量进行更全面的描述。
2 系统总体设计
本设计采用2个节点间互相通信的方式进行测量。设两节点分别为A和B,它们的软硬件完全相同,都具有发送和接收功能。当按下其中一个节点的测量键时,便启动了一轮测量。A和B上电后会记录各自在本轮测量中接收的帧数nRx(A)、nRx(B)和发送的帧数nTx(A)、nTx(B),其值在每轮测量结束后清零。本文以A主动发送B被动接收为例,说明测量流程,如图1所示。
图1 系统测量流程
2.1 单程测量流程
当A的测量键被按下时,便会向B发送N个数据帧,每发送一帧都会更新nTx(A)的值。B收到每一帧时都会记录此帧的RSSI和LQI,且更新nRx(B)的值。本轮测量结束后,B会计算A到B的平均RSSI、LQI和收帧率RA→B,最后蜂鸣器响以示本轮中A到B的单程测量结束。其中RA→B的计算式如下:
(1)
当A发送完本轮的N个数据帧时,B也应该立即结束本轮数据的接收,否则可能会因为B的上一轮接收还未完成,A又发起了下一轮测量,导致接收紊乱,影响测量的准确性。而B能否收到N个帧中的具体帧具有不确定性。为解决上述问题,程序约定A会以T/帧的间隔向B发送数据,且每帧中都要包含T、N和当前帧的序号i(i=1,2,…,N)等信息。当B在本轮测量中接收到第一个帧时,会记录T、N的值以及此帧的序号i(i可能为1至N的任意整数),同时启动一个延时时间为T(N+1-i)的定时器作为接收等待时间,超时后便认为本轮接收已完成,这样就保证了A和B能在同一时间结束本轮测量。
2.2 返程测量流程
为实现B到A的返程测量,A向B发送的数据帧中应带有应答请求的信息,利用B发送给A的应答帧的RSSI和LQI计算返程通信质量。具体实现如下:若B收到的数据帧中带有应答请求,则会立即向A发送应答帧,同时更新nTx(B)的值。A接收到应答帧后同样会记录RSSI和LQI,同时更新nRx(A)的值。当本轮测量结束时,A会根据应答帧的接收情况计算本轮测量B到A的平均RSSI、LQI和收帧率RB→A,最后蜂鸣器响以示本轮中B到A的返程测量结束。RB→A计算式为
(2)
2.3 总收帧率的计算
在一轮测量中,B只要至少接收到N个帧中的1个,便可正确计算收帧率(此时收帧率≥1/N)。但若本轮中的N个帧全部没有收到,则会影响收帧率的准确计算(此时收帧率<1/N)。为解决此问题,A和B同时还会记录各自在多轮测量中发送的总帧数cntTx(A)、cntTx(B)和接收的总帧数cntRx(A)、cntRx(B),其值只有在手动按下清零键时才会清零,否则会一直将每轮的计数值累加。因此可根据需要手动计算A到B的总收帧率R总A→B以及B到A的总收帧率R总B→A,使测量结果更加准确。
(3)
(4)
3 硬件设计
为满足手持式仪器低功耗、体积小等特点,在软硬件功能上进行了精简,节点电路原理图如图2所示。每个节点从功能上可分为电源模块、MCU模块、无线收发模块、显示屏、按键、蜂鸣器和串口等部分。
图2 节点电路原理图
设计所选用的控制芯片和液晶显示模块都使用3.3 V直流电压进行供电,所以电源模块使用3节5号电池作为供电源,并采用低压差稳压芯片MCP1700-3.3进行稳压,为系统提供稳定的电源电压VCC(3.3 V),MCP1700-3.3的最小压差为178 mV,静态电流仅1.6 μA,非常适用于电池供电的设备。
主控芯片采用CC2530单片机。CC2530是专为ZigBee协议设计的一款芯片,是ZigBee的片上系统解决方案[9],其内部集成了增强型的高速51内核和256 KB的闪存[10],且外设资源丰富。外接了2个晶振,其中32 MHz晶振可为无线收发提供准确的符号周期,32.768 kHz晶振作为休眠定时器的时钟,使休眠时的电流仅为1 μA。无线收发模块采用由电容和电感构成的巴伦电路,并外接50 Ω的鞭状天线,可进行无线数据的收发。
显示屏采用LCD5110型号的液晶模块。该模块为48×84的点矩阵,使用SPI协议操作,正常工作电流在0.2 mA以下,速率可达4 Mbps,具有功耗低、速率高、成本低、控制简单等优点,适用于电池供电的场合。
按键采用非自锁式独立按键。将CC2530的P06和P07设为输入模式,当无键按下时为高电平(悬空)状态,有键按下时相应I/O口便由高电平跳转到低电平。为实现软件去抖,程序每隔10 ms扫描一次按键,若同一按键在相邻两次扫描均为低电平,则判定为该键按下。当按下K清零时可使变量cntTx和cntRx清零,按下K测量可启动新一轮的测量。
蜂鸣器采用有源电磁式蜂鸣器,可在2~3.5 V之间正常工作。当P00为高电平时,三极管Q1导通,蜂鸣器发声;当P00为低电平时,蜂鸣器不发声。
此外,还将单片机的P02和P03口引出作为串口与PC机通信,可作为程序调试、参数配置、数据分析等功能使用。
4 软件设计
4.1 程序状态
程序设定每个节点有3种状态(State):Idle(空闲)、Tx(发送)和Rx(接收)。节点在同一时刻只能处于一种状态。Idle为上电后的默认状态,Tx和Rx之间不能直接切换。状态间的切换如图3所示。
图3 节点状态的切换
当处于Idle状态且检测到K测量按下,节点会立刻切换到Tx状态,开始发送数据帧,此时只能接收应答帧,不能接收数据帧。当发送完N个数据帧后会自动切换到Idle状态。
当处于Idle状态且收到数据帧时,节点会立刻切换到Rx状态,此时只能接收数据帧,不能接收应答帧。当本轮测量结束时会自动切换到Idle状态。
4.2 程序流程图
程序主要由主程序和无线接收中断服务程序(以下简称中断)两部分组成,程序流程图分别如图4和图5所示。
图4 主程序流程图
图5 中断流程图
主程序:上电初始化后,便进行系统状态的判断:若为Idle状态,则进行按键扫描;若为Tx状态,则开始发送数据帧,发送完后进行计算并显示;若为Rx状态,便启动T(N+1-i)的延时器进行接收超时等待,之后便进行计算并显示。
中断:当收到无线数据帧时便立即进入中断。中断对收到的帧类型和系统状态进行判断:若收到数据帧且为Idle状态,说明这是本轮收到的第1个帧,将状态改为Rx,并记录帧序号i;若收到数据帧且为Rx状态,则查看是否有应答请求,若有则发送应答帧并更新nTx值;若收到应答帧且为Tx状态,说明收到了请求的应答帧,则记录RSSI和LQI,更新nRx值。
5 实验验证
实验采用A主动发送、B被动接收的形式,记录在不同条件下B的测量结果(A到B的通信质量)和A的测量结果(B到A的通信质量),数据如表1所示。
表1 不同条件下仪器的测量值
由a、b和c组数据对比可见,随着距离和遮挡的增加,RSSI值逐渐减小,但LQI和R开始时并未有明显变化,待距离增大到一定程度后才开始变化,因此此时RSSI更具灵敏性。由a和d组数据对比可见,存在电磁干扰时对R的影响较大,但对RSSI和LQI影响较小,因此此时R更具灵敏性。仪器实物图如图6所示。
图6 仪器实物图
6 结束语
本文设计的手持式ZigBee点到点通信质量测量仪,以CC2530模块为控制核心,通过两点间数据收发的方式测量ZigBee点到点的通信质量。仪器可同时测量往返路径的通信质量,使测量效率提升1倍,且采用多参数对通信质量进行联合表征,避免了单一参数的局限性。仪器具有测量快速、准确,操作简单,成本低,体积小等特点,适合在ZigBee网络设计、安装、调试与优化等场合使用。也可扩展为多个节点同时测量,提升测量效率。