蔡向科, 高振斌, 范书瑞
(河北工业大学电子信息工程学院,天津 300401)
随着传感器技术、自动控制技术、物联网技术的发展,无线传感网络(WSN)已经被应用到了生产中的各个方面[1-5]。WSN主要通过在监测区域内部署大量的传感器节点来感知周围环境信息,然后通过互联网实现感知数据的远程传输。WSN应用在水产养殖中,可以实时监测鱼类的生存环境,实现水产养殖的数据化和信息化。目前,国内外已经有许多相关的研究[6-8]。
部署在水面上的检测节点主要采用电池供电。为了延长节点的生存周期,必须尽可能降低节点功耗。研究表明,节点上大部分能量消耗在数据收/发过程中[9]。Bakr等[10]通过添加备用节点来延长节点生存周期,但只是对能量耗尽的节点进行“接力”,并没有降低节点的能量消耗。Thakkar等[11]通过考虑系统延时和节点剩余能量来选择“下一跳”,从整个系统层面来维护能量平衡。黄庭培等[12]研究表明,接收信号强度(RSSI)能够很好地反应当前的链路通信质量。蒋建明等[13]通过基站对各节点能量的估算,周期性选择不同节点作为簇头节点,避免某个节点因能量消耗过快而过早地“死亡”,导致系统瘫痪。徐立鸿等[14]提出了节点自适应调节算法,但该方法的传输距离仅为40 m,不适合搭建大规模的无线传感网络。
本设计根据水产养殖的特点,在不丢失重要监测数据、满足系统丢包率的基础上,提出了发射功率和采集周期自适应调节算法来降低节点功耗。同时,为了降低网关功耗,设计了NB-IoT数据传输方式和基于嵌入式实时操作系统软件。
本系统主要包括检测节点、簇头节点、检测网关、本地监控中心、远程监控中心以及手机应用程序(图1)。检测节点和簇头节点用来连接温度传感器、pH传感器、溶氧传感器等采集监测区域内的水体信息。监测区域内,系统采用分簇的方式进行系统组网,簇与簇之间采用多跳方式连接,簇内采用单跳方式连接,采用ZigBee方式进行数据通讯。检测网关负责接收来自簇头节点上的融合数据包,然后通过以太网发送至本地监控中心,或通过NB-IoT发送至远程监控中心。本地监控中心或远程监控中心对来自检测网关的数据进行存储或显示。另外,本系统提供自动控制和人工控制两种方式,当检测到水体信息不在系统设置范围内时,通过监控中心自动发送远程控制命令打开相应设备,并且发出报警信号;若自动开启设备失败,监控中心向用户推送设备开启失败消息,提示用户手动开启相关设备。
图1 系统总体设计
针对节点上的能量大部分消耗在无线模块收发数据上的问题[15],设计了一种采集周期自适应调节算法和发射功率自适应调节算法来降低节点功耗,延长节点生存周期。
现有水产养殖监测系统中,大多采用15 min、30 min、60 min等固定周期采样[16-18]。对于固定周期而言,检测周期设置过长,可能漏掉一些重要变化数据;设置过短,又会造成大量的数据冗余,造成节点能量的浪费。本设计根据水产养殖环境变化不会很大的特点,通过比较感知数据和系统设置的鱼类生存最佳环境数据,自适应调节节点采集周期,在不丢失重要变化数据的条件下,减少数据发送次数,从而降低节点功耗。该算法具体调节策略如下:设置水温、pH、溶氧各参数允许变化的范围分别为δT、δP、δD;鱼类最佳生存环境值分别为MT0、MP0、MD0,系统的初始采样周期为5 min。水温、pH、溶氧各参数第i次的感知数据分别为MTi、MPi、MDi,根据公式(1)计算出各个参数的变化率。
(1)
式中:Pi—各参数第i次的变化率;Mi—各参数第i次的感知数据;M0—系统设置的各参数参考值;δ—系统设置的各参数最大允许变化范围。
选择变化率最大的参数作为第i+1次采样周期的参考,以文献[16-18]中的固定采样周期为参考,得到本设计中的自适应采样周期模型,见公式(2)。
(2)
式中 :Ti+1—第i+1次采样周期;Pi—各参数第i次变化率。
由于在监测区域内各检测节点的无线传输距离各不相同,当每个检测节点都以最大发射功率工作时,网络的通信质量固然可以得到保障,但势必会造成节点能量消耗过快,节点生存周期缩短。本系统根据接收信号强度和丢包率之间的关系,自适应调节节点的发射功率。当传输距离远、接收信号强度弱时,采用高发射功率;当传输距离近、接收信号强度强时,采用低发射功率。为了实现该算法,需要对本系统中使用的CC2530(Zigbee模块)传输特性进行测试,通过数据对传的方式,测得CC2530模块接收信号强度与丢包率之间的关系(图2)。
图2 接收信号强度与丢包率的关系
根据电磁波理论[19],无线信号的传输距离、发射功率、接收功率之间的关系如公式(3)。
PT-PR=10Nlgd
所有受检者均采用全子宫生化分析仪检测,取受检者早晨空腹静脉血,将血液标本放入37℃水当中浸泡,时间为25 min,后分离血清,在分离后3 h内进行血糖指标与糖化血清蛋白指标的测定。
(3)
式中:PT—信号发射功率, dBm;PR—信号传输1 m时的接收强度,dBm;N—环境传播因子;d—传输距离,m。
(4)
本系统硬件的选择从低功耗和系统性能两方面考虑。检测节点和簇头节点相对检测网关而言,处理的数据量较少,因此选用一款超低功耗处理器STM32L151C6,其待机电流仅为7 μA。检测网关需要处理大量的汇聚数据,对实时性要求比较高,因此选择STM32F103ZET6作为主处理器,其待机电流为22 μA。针对全球定位系统(GPRS)无线传输功耗较高的情况,采用上海稳恒公司生产的WH-NB73电信版NB-IoT模块,该模块具有低功耗,接受灵敏度高的特点。
检测节点和簇头节点的硬件结构完全一样。由于簇头节点除了采集数据外,还具有路由转发的功能,能量消耗要比检测节点快很多,因此采用锂电池加太阳能电板的方式供电,而检测节点仅采用锂电池供电。检测节点硬件包括水质检测传感器、信号调理电路、模/数转换电路、低功耗处理器、ZigBee模块、供电单元、电压转换电路以及控制电路(图3)。传感器采集到的模拟电信号经信号调理电路放大、整流、滤波处理后进行模/数转换,最后将数字信号经SPI隔离后存储在寄存器中,控制电路用来控制进/出水阀门、增氧机、投饲机、加热棒等设备。
图3 水质检测节点框图
检测网关作为连接感知网络和互联网的重要桥梁,在物联网应用系统中担负着“上传下达”的重要作用。由于网关的功耗较大,因此,网关的供电单元同样采用锂电池加太阳能板的方式。本系统中网关主要由微处理器、ZigBee模块、NB-IoT模块、RS485接口、以太网接口、调试接口、存储单元以及供电单元组成(图4)。
图4 水质检测网关框图
本设计在Modbus协议的基础上对系统的数据传输结构进行设计。Modbus协议是一种主从应答的串行通信协议,支持ASSII、RTU、TCP三种通信模式[20]。在相同的波特率条件下,RTU模式要比ASSII模式传输更多的数据。本设计采用RTU模式,其数据帧结构如图5所示。
图5 Modbus/RTU数据帧结构
站号为各节点分配从机地址,目的是实现网关与节点之间的通信。Modbus协议最多支持247个从机设备。主机设备通过功能码向从机设备下发指令信息,Modbus协议支持的功能码众多,在本设计系统中主要用到的功能码以及作用见表1。
表1 功能码及作用
对于ZigBee设备,包括固定不变的IEEE地址和有可能改变的网络短地址[21]。为了实现Modbus主从设备之间的地址定向,本设计将Modbus站号和网络短地址绑定在一起,以路由表的形式保存在网关中,当检测节点因能量耗尽造成网络短地址改变后,网关可以及时广播新的地址给所有从机设备,更新路由表,由此提高主从设备之间的通信成功率。检测网关的读数据命令和检测节点返回的应答信息如图6和图7所示。网关接收到节点返回的数据后,根据丢包率和接收信号强度判断检测节点是否需要自适应调节发射功率,若需要,可通过Modbus 06功能码向检测节点发出调节发射功率的命令,其数据帧结构如图8所示。远程控制命令由监控中心发送给检测网关,检测网关对命令解析后,同样通过Modbus 06功能码发出远程控制命令,实现对进/出水阀门、增氧机、投饲机、加热棒等设备的控制。
图6 检测网关读数据命令
图7检测节点返回的应答信息
Fig.7 Response information returned by testing node
图8 自适应调节节点发射功率数据帧
NB-IoT技术是IoT领域的一个新兴技术,支持低功耗设备在广域网的蜂窝数据连接,也被称为低功耗广域网(LPWA),与传统GPRS系统相比,其具有覆盖范围广、功耗超低、链接多、成本低的优点[22],非常适合作为物联网中无线连接方式。图9为本系统WH-NB73发送/接收数据框图。
图9 WH-NB73发送/接收数据框图
模块先进行上电初始化,通过AT指令与基站建立连接;连接成功后获取服务器IP地址,AT指令建立Socket;最后通过AT指令发送/接收数据,此后进入PSM模式。
为提高CPU利用率,采用FreeRTOS嵌入式实时操作系统。其任务调度策略如下:首先,通过任务1向检测节点发送采集数据命令,检测节点收到命令后立即由睡眠模式转入工作模式。当检测节点采集完成后,将数据按图7所示帧结构进行打包,发送给检测网关,数据发送完成后,节点转入低功耗模式。其次,当网关收到数据后,对数据帧进行解析,根据帧结构中的采样周期决定下次采样时间,根据接收信号强度和丢包率来判断节点是否需要自适应调节发射功率,若需要,则通过任务2向检测节点发送调节命令。最后,通过任务3将缓存区数据上传到监控中心,并接收监控中心下发的设备控制命令。当所有任务执行完成后,网关进入低功耗模式。
在实验室通过控制水温、pH、溶氧,模拟水产养殖环境对系统进行测试,试验中用到的设备包括3个簇头节点、12个检测节点和1个网关节点,试验内容主要包括周期自适应调节算法和发射功率自适应调节算法以及系统的自动控制功能,以验证系统的可行性。
为了测试周期自适应调节算法,令上述算法中提到的δT=2 ℃、δP=0.8(pH)、δD=0.8 mg/L;MT0=20 ℃、MP0=7.5(pH)、MD0=8 mg/L。自动控制功能的验证采用人工对溶氧进行干扰的方式进行测试,设置当溶氧低于7.2 mg/L时打开增氧机。这里设置的参数只是为了验证该算法的可行性,并非实际养殖环境中的参数,实际参数可以根据所养殖的鱼类进行设定。测试结果部分数据见表2。
从表2中可以看出,节点能够自适应调节采集周期,当水中参数偏离系统设置值越大时,采集周期也会越快;当水中的溶氧值低于系统设置的下限时,增氧机开启并开始报警。与固定周期15 min、30 min采集方式相比,该算法在不丢失重要变化数据的条件下,数据发送次数分别减少了140%和20%。极大地降低了节点由于发送冗余数据而造成的能量浪费。
试验中设置CC2530模块的功率调节范围为-10~4 dBm,系统最大允许的丢包率为3%,节点初始默认发射功率为4 dBm,在数据传输过程中根据接收信号强度自适应调节节点发射功率(表3)。从表3可以看出,节点能够根据接收信号强度自适应地调节发射功率,在满足系统要求丢包率的同时,尽可能降低节点功耗,延长节点的生存周期。
表2 测试结果汇总表
表3 发射功率自适应调节算法测试结果
由于簇头节点和网关节点均采用太阳能电池板加锂电池的方式供电,因此只对检测节点进行节能效果测试。试验中,为了加快电量消耗,检测节点并没用使用周期自适应调节算法,而是采用固定周期(3 min)的方式进行数据采集。试验分为两组,一组采用固定发射功率4 dBm,另一组采用发射功率自适应调节的方式,两组均采用24 V、10 Ah的锂电池供电,两组设备均部署在相同的位置,尽量减小外部环境对测试结果的影响。剩余电量与采集次数之间的关系如图10所示。
图10 剩余电量与采集次数之间的关系
从图10可以看出,在以固定发射功率工作时,节点大约能采集7 300次,以发射功率自适应调节方式工作时节点最少可以采集8 000次,最多可以采集10 400次。节点生存周期延长了9.5%~42.5%。
与文献[7]中节能方法相比,该算法主要针对耗电量较大的无线收发模块进行降耗处理,使其节点生存周期延长了近1.3倍。与文献[13]中的节能方法相比,该算法不需要复杂的路由策略,减少了节点在寻找最优路径时的能量消耗。与文献[14]中的自适应调节算法只能传输40 m相比,该算法通信距离更远,更适合在水产养殖中组建无线传感网络。
针对现有水产养殖水质监测系统功耗高、节点能量有限的问题,设计了一款基于周期自适应调节算法和发射功率自适应调节算法的水产养殖监测系统。将采集数据与系统设置的鱼类最佳生存环境值进行对比,决定检测节点下一次的采样周期,做到在不丢失重要监测数据的条件下,减少节点的采集次数。通过与Modbus协议结合,设计了一种根据接收信号强度与丢包率自适应调节节点发射功率的数据帧结构。测试结果表明,在满足系统丢包率低于3%的条件下,采用发射功率自适应调节算法的节点生存周期延长了9.5%~42.5%。系统具有较高的应用价值。
□