周 游,范屹帆,吴 寅
(南京林业大学 信息科学技术学院,江苏 南京 210037)
活立木是指林地中生长的树木,同时也包括不成林的散生木。活立木的树势是判断活立木生长状况的综合指标,树势的好坏反映了营养生长和生殖生长之间的关系,同时也体现着林业技术管理水平和林地种植试验处理的效应。在科研和生产中,活立木树势的研究有着重要的理论和实际应用价值[1]。我国是世界上人工林保存面积最大的国家,这些森林资源给我国带来巨大的经济收益和生态效益,森林不仅提供人们正常生活所需的基础资源,还在保护物种多样性、生态多样性及维护区域生态平衡等方面起着至关重要的作用[2]。
通过外观判断树势,方法简便,经常使用于野外调查和林业生产实践,但其准确性和时效性均较差。特别是当观察到树木的病症病状后,往往已经错过了防治的最佳时期。
通过生理生化指标进行诊断,可以迅速发现树木的异常变化。但由于测定仪器的专业化和测定手段的复杂性,阻碍了该方法在林业生产和野外调查的推广。
因此,找到一种既简便,又快速准确的评价树木树势的方法,是摆在林业工作者面前的一个重要课题。而树木电特性为快速高效诊断树木树势提供了新的发展思路。
Piene等人[3]研究了落叶和健康香脂冷杉的电阻,发现落叶树木的电阻值显著高于健康树木。宋蛰存、林迎忠等人[4]对细胞组织的生物电学特性进行了非常有价值的研究和分析。他们研究了不同细胞活性在不同木材含水率下的电学特性,并将细胞膜、细胞外液、细胞内液等效为一段电路进行了电路分析。他们认为细胞膜具有的双重电学特性,即阻抗和电容二性,在不同的外界刺激下会得到不同的测量效果,当细胞死亡后,这种双重电学特性就会消失。高保山、董燕南等人[5]通过对树木极化电容和电阻特性的研究,并从热力学角度对树木的长势进行了解释,认为树木生物电特性为客观了解和掌握树木现时的生长状态和发展前景提供了科学的依据和办法。研究指出树木电阻与高生长量、直径生长量、材积生长量、韧皮部含水率等多种因素成负相关,树木长势越好电阻越小,并从热力学熵角度对此做出了解释,最后指出树体电容与电阻的关系,即电容越大,电阻越小。虽然文章着重进行理论推导缺乏试验数据支持,但其电容与电阻成负相关的推论与Piene等的试验结果一致。
因此对活立木的阻抗进行监测可以反映出活立木的健康状态,方便林地管理者实时地判断木材的好坏,以此作出相应养护方案,极大便利了对珍稀木种的监测保护。
为了节省测量的人力成本,实时性大规模地测量树木的阻抗,引入了LoRa无线组网传输+传感器的方案, LoRa无线通信技术传输距离较远、功耗与成本较低,在错综复杂的林地环境中,也能有效布置监测节点,节省人力成本,同时,LoRa可以大规模组网,实时数据采集可供管理者第一时间做出应对方案。
本文结合STM32设计了一套基于LoRa的活立木阻抗测量系统,利用AD5933和SX1276芯片,使用卡尔曼滤波,对树林中的活立木阻抗进行测量,可实现远距离实时监测活立木的健康状态,系统相较于目前国际先进的阻抗测试仪器TH2828S与德国IML-PD系列阻抗传统仪,具有成本低、测量不需人力、节点安装、维护简单、测量实时性强等特点,同时也避免了人为手持设备测量时的操作不规范而导致的测量数据误差。
基于LoRa的活立木健康监测系统的设计,首先通过阻抗测量模块采集信号进行阻抗测量,对测得的模拟量转换成数字量,并通过MCU进行预处理、滤波、远程发送等工作,上位机远程接收处理数据后得出实时活立木健康状况。
经对比确定整体远程测量系统的硬件的组成。选择著名高性能模拟、混合信号和数字信号处理(DSP)集成电路(IC)设计、制造的公司亚德诺(ADI)的AD5933进行阻抗的测量,将测试得到的模拟量,通过MCU—STM32F103ZET6进行预处理,中值滤波后,再通过串口控制基于SX1276的LoRa模块将阻抗测量信号发送到网关,网关接收数据到上位机,上位机处理数据,并通报实时状态,系统设计的整体流程如图1所示。
图1 基于LoRa的活立木健康监测系统流程
系统的硬件设计分为数据采集端和数据接收端两部分。数据采集端的硬件设计如图2所示。该采集设备安装在活立木树干上,硬件设备主体由STM32F103微处理器、阻抗测量模块、LoRa模块和电源管理模块组成。阻抗测量模块用来采集活立木生长期间的阻抗值,LoRa用来收发这些数据。接收端的硬件设计如图3所示。
图2 数据采集端图
图3 数据接收端图
LoRa网关接收到数据后,将数据发送给上位机的数据处理软件,软件经过相应的处理并最终显示。
本设计选取MCU(STMicroelectronics公司的STM32103VET6芯片)作为核心控制单元。该芯片是基于32 bit的Cortex-M3的CPU。系统频率最高可达72 MHz。
LoRa技术是一种以带宽换灵敏度的扩频调制技术[6],实验选用470 MHz的LoRa信号,节点模块采用SX1276芯片,网关采用SX1301芯片,均采用单片机spi进行驱动。由表1可知,LoRa相对于其他传输方式,最显著的优点是灵敏度更高、传输距离更远、信号更强,能够更好地应用在环境复杂的混交林场景。节点的布局如图4所示,采用星型网组网、一个主网关、多个采集结点,网络拓扑简单,便于集中控制,易于维护和安装,任意采集节点的损坏不会影响其他采集结点,系统可靠性强。
表1 常用的无线传感网络对比
图4 节点布局示意图
阻抗(Impedance)是每个材料和物质与生俱来的一种属性[7]。阻抗测量模块以阻抗测试芯片AD5933为测量核心[8],AD5933芯片是一款精度较高的阻抗转换芯片,片上集成12位,1 MSPS的ADC转换器与频率集成发生器。
利用频率发生器产生的信号来激励外部复阻抗,外部阻抗的响应信号由片上的模数转换器进行采样,然后由片上DSP进行离散傅里叶变化处理。离散傅里叶算法在每个频率上返回一个实部(R)和一个虚部(i),利用返回的值计算得到阻抗值。
2.3.1 AD5933组成部分
芯片通过串行IIC接口与MCU连接,校准之后进行测量,可以得到各扫描频点的阻抗幅度和相位。芯片的组成如图5所示。
图5 阻抗测量模块
2.3.2 AD5933电路设计
如图6所示,阻抗测量电路包括电源设计,系统时钟设计和校准电路设计三部分。
图6 AD5933电路设计图
(1) 电源设计
采用基准电压源REF3033给AD5933供电,再分别通过两个接地的电容实现输入电源的滤波。REF3033输出电压3.3 V,精度±2%,输出电流25 mA。REF3033 输出电流较大,不仅提供ADC的基准电源,还提供DDS的模拟电源,以保证激励、采样信号的精度和降低信噪比。
(2) 系统时钟
本阻抗测量仪选用16.384 MHz的外部晶振,作为AD5933的系统主时钟MCLK,可获得频率为整数的测量点。AD5933完成一次A/D转换需要16个时钟周期,一次DFT运算需要1 024个A/D转换结果,因此激励信号频率应选择MCLK,16.384分频的整数倍。如果激励信号频率满足这个条件,那么在DFT变换中恰好有整数个激励波形,不会发生频谱泄漏,否则测量结果不准确。当MCLK为16.384 MHz时,激励信号频率可为1 kHz、2 kHz、3 kHz、…、100 kHz[9]。
(3) 校准电路
如图7所示,为了优化设备测量时的测量精度,在反馈电阻后级根据待测阻抗值的范围,设备选择了阻值分别为100 Ω、1 kΩ、10 kΩ、33 kΩ、100 kΩ、1 MΩ、3.3 MΩ和 9.1 MΩ阻值的校准电阻,使用一个多路复用器 ADG1608来完成校准的功能。
图7 校准电路设计图
2.3.3 阻抗计算
① 幅度计算
每个频率点的阻抗计算的第一个步骤就是计算这个频率点的DFT幅度。DFT幅度的计算公式为:
(1)
式中,R为寄存器返回的实数的值,I为寄存器返回的虚数的值。
② 增益系数计算
增益系数通过测量已知的校准电阻后得到,计算公式为:
(2)
③ 阻抗计算
通过校准得来的增益系数和测量的该频点的幅度,可以得到该频点的阻抗值,计算公式为:
(3)
算法和软件设计包括下位机和上位机的算法和软件设计,主要包括测量时的量程切换算法和测量值的滤波算法设计和上位机显示界面的设计。
如图8所示,系统通过选择不同反馈电阻实现不同量程切换。量程切换算法步骤如下:
图8 自动量程切换算法流程
① 开启通道 1,使反馈电阻的阻值最小,并向AD5933发出测量指令;
② 读取AD5933测量的虚部i实部值R,计算对应的幅度值。
③ 计算幅度值A对应的量程区间K[10];
④ 开启通道N,向AD5933发出测量指令;
⑤ 读取AD5933的测量值,计算幅度值A;
⑥ 判断A是否处于区间K,若是,结束量程切换,否则将K放置在与A对应的区间,返回步骤④。
均值滤波是一项空间域平滑技术,属于典型的线性滤波算法[11]。每个通道采样30次,经过节点单片机存储并且通过均值滤波后发送给终端,滤波公式如下:
(4)
式中,i取1~32的任意常数。
为确保测量值的精确度,对同一个通道反复测量50次,并将测量的值通过上位机进行卡尔曼滤波算法进行校准,以此得到更精确的测量值。
3.3.1 卡尔曼算法建立
卡尔曼滤波是根据过去的信号,利用统计估计理论,使用线性最小均方误差作为最优准则,预测将来某个时刻的值,从而预测下一个采样时刻的数据[12]。由于只有一个变量,只需要一维的卡尔曼滤波即可。卡尔曼滤波分为预测过程和更新过程[13],预测过程的方程为:
(5)
更新方程如下:
(6)
式中,gk为卡尔曼增益系数,h为缩放系数,Zk为测量值,R是测量噪声uk-1的平均值。
3.3.2 建立卡尔曼滤波算法模型
把树木看成一个系统,阻抗值和前一时刻的阻抗值是相同的,所以A=1,没有相关控制量,所以uk-1=0。因此得出:
x(k|k-1)=x(k-1|k-1),
P(k|k-1)=P(k-1|k-1)+Q,
(7)
因为测量值是AD5933直接得出的,所以跟阻抗直接对应,即h=1,因此得出:
x(k|k)=x(k|k-1)+gk(Zk-x(k|k-1)),
P(k|k)=(1-gk)P(k|k-1)。
(8)
3.4.1 通信协议设计
设计一套适用于系统的通信协议十分必要,通信协议的设计需要考虑上位机和下位机的处理能力,通信双方的数据类型,还需考虑未来可能会新增的功能。本系统所设计的通信协议数据帧格式如表2所示。
表2 通信协议数据帧格式
3.4.2 主程序设计
主程序设计分别为从机程序和主机程序。从机MCU通过IIC总线读取AD5933的数据,通过运算得到阻抗值,再均值滤波后通过SX1267发送给网关,从机端的程序流程图如图9(a)所示,网关获取数据后发送给主机,主机软件获取后通过卡尔曼滤波得到最终的阻抗值,主机端的程序流程如图9(b)所示。
(a) 从机软件运行流程
3.4.3 上位机App设计
使用Matlab 2022a的AppDesigner进行界面的开发,无需再设计界面接口;它旨在顺应Web的潮流,以更加简便的操作来设计更加美观的图形用户接口 (Graphical User Interface, GUI)[14],开发主要工作在预设组件属性编辑及调试回调函数;App完成效果可视化,设计过程中可在线调试,易用性优于GUI。实现效果如图10所示。
图10 上位机App界面
将设备捆绑在树干上,阻抗测量探头透过树皮插入木质部,将设备高度调至1.5~2 m的高度,实验表明,此高度范围传输数据的无线电波损耗,RSSI的值最低,更有利于信号的传播[15]。通过上位机发送测量指令,每个设备最多可以测量32个通道,最少可以测量8个通道,选择需要测量的通道数,发送测试指令,通过LoRa传输给采集节点,节点接收到指令,开始解析指令,并进行相应地测量操作,待测量结束,节点通过LoRa自动返回数据给终端节点。
在林中每隔5 m,选取一个采集节点,一共选择20棵长势不同的活立木,按照上述的措施安装好设备,组网成功后,通过上位机挨个选取树木,进行测量并记录下测量结果。与此同时,利用专业阻抗测量设备TH2828S在相同的位置进行测量,得到相应的阻抗值。
将基于LoRa的阻抗测量设备测得的不同活立木的阻抗值,与专业阻抗测量设备TH2828S测量的值进行比较。TH2828S是采用当前国际先进的自动平衡电桥原理研制成功的新一代阻抗测试仪器,其基本测量精度可达0.05%,其卓越的性能可以实现商业标准和特殊标准,如iec和mil标准的各种测试。比较二者之间的误差值,得到的结果如表3所示。
表3 阻抗测量结果
对数据进行误差分析得到图11,图中描述了基于LoRa的阻抗测量设备测得的值与TH2828S测得的值之间的误差。每个数据点有一个阻抗测量仪测试值和TH2828S测试值,两组值之间距离即为误差值,图像表明,阻抗值越小,测量的误差就越小,整体的误差范围在合理区间,保持在0.5%以内,即本系统测试精度可达到(0.05±0.000 25)%。
图11 数据误差分析
本系统利用AD5933测得活立木的阻抗数据,采用LoRa对数据进行远程的收发,通过卡尔曼滤波算法对数据进行滤波处理,并在上位机App上实时显示。通过对活立木阻抗进行有效的实时监测,对提高林业生产环节中树木长势的健康监测效率具有实际应用价值。相较于市场主流的活立木阻抗测试仪,阻抗测量结果精度较高,误差范围控制在0.5%内;增加了远程操作和实时数据传输的功能,设备更加小巧轻便,采集数据收发实时性较强,收发过程基本无丢包,稳定性高,使用覆盖范围可达2 km,效果良好,且系统成本较为低廉,可以广泛应用于林业物联网监测系统中,有效地节省人力、物力成本。下一步将利用算法把活立木阻抗和活立木的健康状态进行结合计算参数指标。