APP下载

基于改进K-means的农田湿度评估研究

2021-08-04徐晓辉郝淼淼赵法川

节水灌溉 2021年7期
关键词:土壤湿度农田湿度

彭 源,徐晓辉,宋 涛,郝淼淼,赵法川

(河北工业大学电子信息工程学院,天津300400)

0 引 言

目前在农业生产中,粗放用水和农田干旱严重影响农业生产效率及产量,因此,制定科学合理的农田灌溉计划尤为重要[1]。制定科学的农田灌溉计划需要准确地获取农田的土壤湿度,并设计一个自动化的农田湿度评估系统,对农田的土壤湿度作出准确的评估。

现有的农田湿度控制系统主要以文献[2]、文献[3]设计的农业灌溉系统为主,系统的实时性强,但其土壤湿度信息大多数是由单个土壤湿度传感器测得,即数据只能代表农田某一部分的土壤湿度,比较单一,缺乏代表性,不能准确反映农田整体的湿度情况。同时由于系统决策完全依赖于一个土壤湿度传感器,会使系统整体缺乏抗干扰性,一旦湿度土壤传感器出现故障,会导致控制系统作出错误的决策,影响灌溉效果。

为解决上述问题,文献[4]以北京大兴试验区3.645 km2为例,布设了129个采样点,对农田湿度进行评估。基于此,本文采用多传感器数据融合的方法,在所测农田的不同位置,分别放置3个土壤传感器节点,然后使用Lora通信方式将节点采集到的湿度信息传输到同一个控制中心,对数据进行处理和评估[5]。土壤湿度传感器在测量土壤湿度时,受到外界因素的影响,会产生噪声,引起测量误差。为了消除误差和更准确地得到农田土壤湿度值,引入K-means 方法消除有误差的湿度数据[6],同时为了提高K-means 的运算效率,对K-means做了进一步改进。基于此,本文设计了基于改进K-means 的农田湿度评估系统

1 系统的组成

1.1 系统的功能设计

基于物联网的架构模式,设计了土壤传感器节点、控制中心和移动设备APP,其系统架构见图1[7]。当系统正常工作时,首先,移动设备或控制中心将采集指令发送到土壤传感器节点。其次,土壤传感器节点将采集到的湿度数据通过Lora 协议传输到控制中心。然后,控制中心先判断土壤传感器是否有故障,并使用改进的K-means 算法对湿度数据进行聚类、加权等操作,评估出农田的土壤湿度。最后,控制中心将评估后的农田湿度传递至移动设备。用户可以直接根据移动端APP 显示的湿度信息,向土壤传感器节点发出准确的灌溉指令。

1.2 控制中心和土壤传感器节点设计

控制中心与土壤传感器节点的电路结构分别见图2和图3。控制中心由电源模块、STM32最小系统、Lora通信模块和NBiot 通信模块组成。土壤传感器节点由电源模块、STC89C52 最小系统、土壤湿度传感器和Lora 通信模块组成[9]。下面分别对控制中心和土壤传感器节点的各个模块作详细分析。

(1)电源模块。电源采用12 V 蓄电池,并接入LM1117芯片将12 V电压降为5 V和3.3 V对各个模块供电。

(2)STM32 最小系统。其内核型号为cortex-A7,引脚资源多、功耗小,外部晶振频率为8 MHz,能够高效运行改进的K-means算法。

(3)通信单元。控制中心的通信单元由Lora 通信模块和NB-iot通信模块组成,Lora通信模块的型号为AS32-TTL-1W,通信距离为3 km,能够自组网,无需运营商网络的支持,适用于田间通信[8]。NB-iot 通信模块型号为WH-NB73,支持运营商网络通信。在运营商网络覆盖的范围内,控制中心就能够将评估出的农田湿度信息通过NB-iot 传输到移动端设备,以便用户随时查询。

(4)STC89C52 最小系统。STC89C52 功耗小、稳定性高,其晶振频率是11.059 2 MHz,适宜在田间长时间工作。

(5)土壤传感器。型号为PR-3000-ECT-N01,采用频域反射的原理将土壤湿度转换为485 信号输出到STC89C52,测量误差小于2%。

1.3 移动端APP设计

移动端APP 由Android Studio 软件开发设计,其界面(Graphical User Interface,GUI)见图4。

APP 实现了TCP socket 网络通信功能,与控制中心的NBiot进行数据传输。点击图4中的“获取”按钮时,APP发送采集指令,控制中心就会依次获取3个土壤传感器节点采集到的农田土壤湿度信息,然后,控制中心节点将评估后的农田土壤湿度信息上传到APP显示。如果有故障节点,GUI中相应节点就会显示红色,表示该节点的土壤湿度传感器发生故障,然后报警。

2 湿度评估方法设计

2.1 K-means算法

K-means 是一种无监督学习聚类算法,它将所有数据以k个点为中心进行聚类,对最靠近它们的数据归为一类,再通过迭代的方法,依次更新各聚类中心的值,使集群更相似,直至得到最好的聚类效果[9]。

数据集D={x1,x2,x3,…,xn},聚类数目k为该算法的输入,经过聚类操作,输出集合的划分C={C1,C2,C3,…,Ck}及更新后的k个聚类中心。

算法流程如下[10]:

(1)从数据集D中,随机选择k个数据作为初始的聚类中心,记为:{a1,a2,a3,…,ak}。

(2)用式(1)计算每个样本xi(i= 1,2,3,…,n)和各个质心aj(j= 1,2,3,…,k)的欧式距离,然后将xi归类到距离最小的dij所对应的类别。

(3)对Cj(j= 1,2,3,…,k)中所有的样本点重新计算均值得到新的聚类中心μj。

(4)用公式(2)计算平方误差标准函数,检测是否收敛,收敛则完成划分,否则重复步骤(2)、(3)。

通过上述步骤,在农田湿度评估时,控制中心就能够剔除个别土壤湿度传感器本身产生的随机误差及其他因素引起的测量误差值。

2.2 K-means算法改进

K-means的时间复杂度为:

式中:k代表聚类数目;n代表聚类的样本数;l代表迭代次数。

该算法随机选择初始聚类中心会导致迭代次数l不确定,造成收敛速度慢、聚类效果差、运算复杂度高等问题[11]。这里在算法实现前采用确定初始聚类中心的方法来解决上述问题。

在实际的运用场景中,由于STM32 的运算速度较慢,要快速得到评估值,就需要减少K-means 的时间复杂度。因为土壤湿度数据是一维数据,改进后的K-means 算法流程图见图5,首先,遍历整个数据集群D,得到集群中数据的最小和最大值,然后,多次采用二分法,获取湿度数据的中值,直到获得想要个数的聚类中心。获取的各个聚类中心分布均匀,K-means迭代次数l就会减少,时间复杂度也随之降低。

3 主程序设计

系统主流程框图见图6,将整个系统流程划分为数据采集、故障诊断、湿度信息评估3个阶段。

3.1 数据采集

一个控制中心对应3个土壤传感器节点,土壤湿度传感器采集到的湿度数据通过RS485 总线传输到STC89C52[13],再经由Lora 通信模块传输到控制中心。控制中心程序流程见图7。当收到移动端APP评估命令后,改变程序中mode_flag标志位,控制Lora模块轮询采集3个土壤传感器节点的湿度数据并存入3个数组中。

在人总行和昆明中支党委的正确领导下,全省人民银行消保部门认真贯彻落实总行对金融消费权益保护工作的统一部署,坚持金融为民理念,以金融消费者保护为抓手,以金融消费者教育为重点,各项工作取得积极进展。人行昆明中支法律事务处自设立以来,采取多项措施畅通金融消费维权渠道,促进金融消费权益保护工作上台阶。

控制中心和土壤传感器节点之间的信息传递采用一主多从的通信方式。首先,不同土壤传感器节点的STC89C52 给Lora 模块设置不同的地址、信道,并对其进行编号,方便控制中心区分不同的土壤传感器节点;然后,设置Lora 模块使其进入唤醒模式。控制中心采集湿度数据时,将其Lora 模块设置为接收模式,在接收模式下,依次设置该Lora 模块的地址、信道与土壤传感器节点的Lora 模块地址、信道一致,唤醒土壤传感器节点使其采集土壤湿度并将土壤湿度传输到控制中心[12]。

3.2 故障诊断

故障诊断采用多传感器数据融合的方法,即控制中心将采集到的湿度数据存入3个的数组,计算每个数组的均值、方差,以及两两均值的差值。经过实验验证,在没有极端因素影响的情况下,被测农田不同区域的湿度差值不大,当某组数据均值与其他2组数据均值的差值大于10%时,就可以判定相应土壤传感器出现故障。判定土壤传感器出现故障后,控制中心立即使用NB-iot 向移动设备上报故障土壤传感器编号,然后移动设备发出报警信号。移动端GUI 显示如图4 所示,“节点2”显示红色,即土壤传感器节点2出现了故障。控制中心将删除土壤传感器节点2的数据,拒绝此数据集进入湿度信息评估阶段。

3.3 湿度信息评估

控制中心使用改进的K-means算法对采集到的3组数据进行处理。在处理过程中,设定初始的聚类中心数k=5,运算后,舍弃5个聚类中心值的最小值和最大值,最后用式(4)计算出农田的湿度。

式中:S代表评估后的湿度;x、y、z代表未舍弃聚类中心的最小值、中值和最大值;k1、k2、k3代表加权系数,k1+k2+k3= 1。

通过多组试验证明,当设置k1= 0.3、k2= 0.4、k3= 0.3时得出的湿度值与农田的平均湿度最接近,得出的评估结果最优。

4 系统测试与评价

4.1 田间实验

在不同时间段(晴朗、雨后等)对同一块农田进行了多次田间实验,验证此湿度评估系统的准确性和稳定性。实验过程中,将3个土壤传感器节点分别放置在农田的中央、东北角和西南角,同时通过人工的方式,采集此块农田位置分布均匀的10 份土壤,在实验室通过烘干法计算出10 份土壤的湿度值,然后计算10 份土壤的湿度均值,将此均值与评估系统的输出结果进行比较。

由表1田间实验结果得出。在田间实验中,此湿度评估系统的评估值和采集的10 份土壤湿度的均值相对误差小于2%,且5次实验的均方误差为1.004 1%。此误差在农业生产的要求范围以内,满足精准农业要求,证明了此系统评估效果良好。

表1 田间实验结果Tab.1 Field experiment results

4.2 单土壤湿度传感器故障引入实验

在验证此系统的故障诊断功能时,引入误差模拟土壤湿度传感器发生故障。在某一个土壤传感器节点的测量处加入少量水,使土壤湿度传感器的测量值与其他两个土壤湿度传感器的测量值差值较大,然后评估此湿度评估系统的可靠性。单土壤湿度传感器故障引入实验结果见表2。

从表2 可以看出:以节点1 作为基准中心点,节点1 与节点3 的差值为4.074 9%,但是节点2 与节点1 的差值和节点3的差值都大于10%,故判断节点2 出现故障。控制中心删除土壤传感器节点2 采集的湿度数据后,系统的湿度评估为19.461 1%,符合要求。

表2 单土壤湿度传感器故障实验结果Tab.2 Experimental results of single soil moisture sensor failure

5 结 论

(1)改进后的K-means 能在STM32 处理器上高效运行,抛弃土壤传感器采集的噪声数据,在实现湿度评估的同时,能有效诊断土壤传感器是否故障。

(2)系统的通信传输使用了Lora 和NB-iot 技术,使用Lora 技术解决了农田无运营商网络覆盖的问题;使用NB-iot技术将土壤湿度传输到移动设备,方便用户查看土壤湿度信息。

(3)田间实验结果表明,评估系统的评估值和农田土壤平均湿度的相对误差在5%以内,满足设计要求。

(4)本评估系统的误差能够满足农业要求,但还存在对于不同农田的适应性,评估精度还有待提高。

(5)为进一步提高湿度评估系统的准确性,还可以在农田中加入更多的土壤传感器节点。

猜你喜欢

土壤湿度农田湿度
CLDAS土壤湿度产品适用性评估
达尔顿老伯的农田
达尔顿老伯的农田
湿度变送器测量结果不确定度评定
山西省2020年建成高标准农田16.89万公顷(253.34万亩)
加湿器用不对 警惕肺炎缠身
基于随机权重粒子群优化极限学习机的土壤湿度预测
利用星载GNSS-R DDM反演土壤湿度可行性分析
基于51单片机控制花盆土壤湿度
黑板像农田