第4章 农业科技解决方案
4.1. 引言
粮食安全和水资源保护可以说是人类目前面临的两大挑战,因此已成为许多发达国家和发展中国家的主要关切。此外,发展中国家还面临着与经济增长和创造可持续生计相关的挑战(Aqeel‐ur‐Rehman 等,2018年)。在此背景下,更高效且环境可持续的农业生产可能成为应对这些挑战的潜在策略之一。因此,解决农业生产中自然资源利用的低效率、浪费和过度消耗问题,将为各国带来直接益处,例如减少农作物和食物浪费,提高对水、能源和土地等自然资源的高效利用,并减少因过度使用化肥而产生的二氧化碳2排放以及对环境/土地造成的潜在污染。这些益处最终有助于农民提高农业生产的生产力和可持续性,从而实现粮食安全和水资源保护。
这些步骤将有助于社区在短期和长期内获得社会、经济和环境方面的益处。因此,机构合作计划将汇聚来自英国和墨西哥的研究人员及工业专家,共同开发用于农业技术的智能监控与控制系统(SMCS),从而实现更高效、可持续的农业生产,并应对相关挑战。该计划将为开发者、用户和社区提供有关改进农业生产以及在发展中国家开发、测试和实施农业技术方面的宝贵知识和经验。因此,这些过程的系统化将成为项目的关键组成部分,从而增强本地科研能力,并支持政策制定者制定有效的政策和/或战略,以促进农业技术的发展。
该项目的目标是开发以下组件:
- 一个数据采集(DAQ)系统,包括一组用于监测种植园关键变量的传感器节点(SNs)和数据节点(例如土壤湿度水平和温度、空气温度和湿度等);
- 一个用于监控和数据处理的软件(SW)应用;以及
- 一个作物产量预测模型。传感器和数据节点需要设计、构建和调试硬件(HW)和软件(SW)。
该项目将引起遭遇不确定天气现象的小规模和大规模农民的兴趣,这些现象常常导致农产品损失。这一创新性发展将为农民提供一个赋能过程,以解决与气候变异相关的问题。此外,该项目可能有助于提高灌溉系统的效率,减少用水量、降低电能消耗、减少CO2排放,从而减轻环境污染;同时还预期有助于改善作物产量预测,以减少农作物和食物浪费,并实现更优的供需比。
通过监测天气状况以及其他土壤变量,灌溉系统有望变得更加高效,因为仅使用所需的水量。此外,如果能够适当地监测作物健康状况并及时采取相应措施,则可以控制或减少病害对农业生产的影响。这也可以转化为预期减少农药的使用。在农业耕作中使用基于数字技术的创新工具,有望带来诸多益处,例如提高生产力和盈利能力。因此,随之而来的生产力提升有助于降低世界上某些地区面临的粮食安全风险,特别是本项目所关注的国家——墨西哥。
无线传感器网络(WSN)技术近年来迅速发展。无线传感器网络可用于农业,为农民提供大量信息。精准农业是一种利用信息技术来提高质量和生产的管理策略。采用无线传感器技术和管理工具可实现高效、绿色的农业(Aqeel‐ur‐Rehman等,2018年)。从多个角度来看,田间管理能够促进精准农业的发展,包括为作物提供充足养分以及减少农药浪费,以有效控制杂草、害虫和病害。公共领域中的信息概述了无线传感器网络在农业研究中的最新应用。
以及对各种无线通信协议进行分类和比较,针对可用于农业监测系统的无线传感器网络的节能与能量收集技术的分类,以及基于农业的无线传感器网络早期研究工作之间的比较(Aqeel‐ur‐Rehman 等人,2018年;Methley等人,2008年)。
探讨了无线传感器网络在农业领域中的挑战与局限,并重点介绍了多种用于长期监测的功耗降低和农业管理技术。这些方法还可能增加处理物联网(IoT)数据的机会(Aqeel‐ur‐Rehman 等,2018年;Methley等人,2008年)。
电池供电的无线传感器网络由多个传感器、处理器和射频(RF)模块组成。传感器节点或motes可通过通信链路进行无线通信,并通过与网关通信将其数据转发至基站或协调器节点(Aqeel‐ur‐Rehman 等,2018年;Corke等人,2018年)。
本项目旨在通过开发SMCS农业技术,提高农业耕作的效率和可持续性,以支持墨西哥的粮食安全、水资源保护以及经济增长。本项目计划实施一种传感器数据采集系统,该系统由一组用于监测种植园关键变量的传感器数据节点组成。这些节点需要进行硬件和软件的设计、构建和调试。该项目将有助于小规模和大规模农民在面对不确定的天气现象时减少作物产量损失。这一创新性发展将增强农民解决此类问题的能力。此外,该项目将提高灌溉系统的效率,从而减少用水量、电能消耗和CO2排放,进而减轻环境污染。它还将有助于提高生产预测,以减少农作物和食物浪费,并实现更优的供需比。
该项目处于技术就绪水平3(TRL3),这意味着它通过若干分析研究(例如,测量技术及其在农业生产中的应用分析、数据分析及产量预测的数学模型构建)和多项实验研究(例如,无线传感器网络测试以验证和确认所有数据均按预期被获取和处理、利用田间数据通过计算机仿真构建并验证数学预测模型、仿真结果与真实在线数据结果的比较、使用当前预测方法与所提出模型的结果比较等)实现了实际设计和概念验证。
它包括分析研究(例如,对当前农业操作以及不同传感器和电子板技术的分析、对田间数据的分析以建立产量预测的数学模型、对所提出系统的性能进行概念验证分析等)。该项目还涉及在实验室层面进行设计的验证与确认。德比大学(UoD)将开发硬件原型,并支持软件原型的开发。这得益于德比大学(UoD)在工业操作改进以及电气和电子工程方面的专业知识。阿瓜斯卡连特斯自治大学(UAA)将主要参与软件部署相关的任务。La Huerta 将提供工业知识和专业技能,以及其种植园的历史数据。
本项目的所有TRL3活动均支持智能监控与控制系统(SMCS)(硬件(HW)和软件(SW))的概念验证。所有基于实验室的活动最初在德比大学(UoD)和UAA进行,随后在相对较小的农业环境中开展。
需要硬件组件/设备来构建无线传感器网络的领域。构建传感器节点所需的项目包括:开发电子板(主板和子板)、传感器(例如土壤湿度水平、空气温度和湿度等)、外壳以及电源(电池、太阳能板等)。除了传感器节点外,还需要数据节点,它们由开发板、少量传感器(例如温度和湿度)用于监测每个单元的状态、外壳和电源组成。
4.2 目标与目的
本项目对应于一个电子传感器板原型、包含硬件和软件的无线传感器网络原型、用于作物产量预测的数学模型及软件组件在智慧农业框架内的概念验证。该项目包括分析与实验室研究(如数学建模、分析推导、计算机仿真和实验实验)。由于项目的性质,还可能在相对较小的农田中进行物理实验。
项目关键交付成果如下:
- 一个智慧农业传感器板原型,用于测量和传输田间数据(例如:土壤湿度水平、土壤温度、叶片湿度、空气温度和湿度等);
- 由一组传感器节点和数据节点组成的无线传感器网络原型,用于监测种植园中的关键变量。节点需要进行硬件和软件的设计、构建和调试;
- 基于通过无线传感器网络获取的历史和在线数据构建并验证的作物产量预测数学模型;
- 使用开发板构建用于传感器和数据节点的传感器节点(SN)和无线传感器网络(WSN)原型,配备用于测量相关现场变量的传感器组,以及无线通信子板;
- 部署用于数据采集(DAQ)和处理传感器信号的软件组件;
- 对来自本地种植园的现有历史数据进行统计分析,并确定实际收获量与相应估计值之间的以往估计误差;
- 评估和选择不同的模型结构(例如自回归移动平均(ARMA)/自回归积分移动平均(ARIMA)、神经网络等),以评估其对于所研究问题的适用性;
- 利用当前可用的部分田间数据构建数学模型;
- 部署智能监控与控制软件组件(SMCSC),以实现对现场变量的监控与控制,并提供多种分析工具(例如水和能源消耗);
- 开展可行性研究,分析将产量预测模型集成到 SMCSC 上的可能性;通过测试对软件组件进行验证与确认;
- 在实验室中对硬件和软件原型进行验证与确认;以及
- 在相关环境(即本地农田)中对硬件和软件原型进行验证与确认,在英国 gdom 和/或墨西哥。
4.3. 概念验证活动
无线网络架构由以下三个元素组成:协调器、路由器和终端设备。协调器负责处理和存储从路由器接收到的数据。路由器是允许数据在其他设备之间发送和接收的中间设备;它们向终端设备请求数据,并将这些数据发送给协调器。终端设备通信功能有限,因为它们不负责数据路由,仅在收到请求时进行测量;它们可以保持在睡眠模式,直到路由器请求数据。这三个元素共同构成了一个Zigbee网络,以项目所需的簇树结构运行,如 figura‐tion 所示,在图33中。
在智慧农业无线网络中,多个Arduino Mega 2560 (作为从机)被用作终端设备,并被分配到不同的路由器,如图40所示,每个路由器大约连接三个终端设备以构成一个节点。这些Arduino通过连接到通用输入/输出(GPIO)引脚的传感器来收集数据,从而汇总电导率数据
时间, 13:15, 温度, 25, 湿度, 45
| 表18. 智慧农业测量频率。 | ||||||
|---|---|---|---|---|---|---|
| 传感器 | Site参数 | 单位 | 范围 | Min | Max | 精度 (+/-) |
| Soil电 电导率 | dS/m | 0 | 6 | 0.2 | 每日 | |
| Soil湿度 | % | 0 | 50 | 1 | 每小时 | |
| Air温度 | °C | -10 | 40 | 0.5 | 每小时 | |
| Air相对 湿度 | % | 0 | 100 | 0.5 | 每小时 | |
| Air全球 辐射 | W/m2 | 0 | 1,000 | 1 | 每15 分钟 |
并将数据重新路由到协调器,从而在终端设备与协调器之间充当长距离通信的网桥。一台树莓派3(作为超级主控)在作为协调器运行时,将从路由器接收CSV测量数据,并将其存储在CSV格式的文件中;每24小时会创建一个新文件,用于存储新的测量数据。保存的CSV文件随后可通过计算机打开,并用于将数据导入结构化查询语言(SQL)数据库,以每日或每周为基础生成记录数据的图表和表格表示。
使用终端设备发送的CSV格式文本文件来存储数据,可以简单地访问数据,并以表格和图表形式呈现。这是因为 CSV 文件能够包含一条或多条由逗号分隔的多个字段的数据记录;逗号作为不同数据来源(如时间、温度和湿度)之间的字段分隔符。因此,通过逗号将各自采集的数据分隔成独立的列,从而清晰地展示结果。此外,使用文本文件使得这些结果可以通过广泛的数据库工具进行访问。
4.3.1. 测量外部温湿度
影响植物生长的外部因素的测量主要关注湿度和温度等特征。湿度是指空气中水蒸气的含量相对于空气在特定温度下所能容纳的最大水蒸气量的比例。植物叶片背面的气孔会受到湿度变化的影响,从而影响蒸腾作用。在高湿度水平下,由于空气流通减少,植物难以进行蒸腾,无法使水分从叶片蒸发或吸收养分从土壤中吸收。长时间的高湿度水平会导致植物腐烂。在 26°C 至 32°C 的温度下,植物会关闭其气孔以减少水分流失,这是一种降温机制。尽管植物减少了水分流失,但也失去了输送二氧化碳和氧气分子的能力,导致植物慢慢窒息。
在项目中,将HMP‐60传感器探头连接到Arduino Mega 2560(作为终端设备)以测量温度和湿度,并通过 XBee PRO Series 1 将测量数据发送至树莓派(作为路由器),并将数据保存为CSV格式的文本文件中(见表19)。
| 表19. HMP‐60传感器与 Arduino Mega 2560 |
|---|
| HMP‐60传感器探头与Arduino Mega 2560的连接 |
| Wire 颜色 |
| 黑色 |
| 白色 |
| Blue |
| 棕色 |
| 清除电场和磁场(电磁场)屏蔽 |
Arduino软件架构的流程图显示,HMP‐60传感器探头的温湿度连接需要模拟输入。在这种情况下,Arduino接收模拟电压并将其转换为0到1,023之间的数字值。为了获得以摄氏度为单位的温度和以百分比表示的相对湿度测量数据,必须将这些数字值重新转换为模拟量,并从误差值中减去,具体方法如传感器数据手册中所述。数字到模拟测量电压的转换
开始 分配 A5 to 模拟引脚 分配 A6 to 模拟引脚2 分配 寄存器 ‘Byte’ 作为 0 温湿度设置 作为输入,串行开始 等待 2 秒 已处理 NO NO NO NO NO NO YES YES YES 分配 温度 值到 模拟引脚 分配 湿度值 到模拟引脚2 已处理 转换 温度 和湿度至 数字值 YES YES 转换数字 温度到 温度 值 (a100) – 40 串行是否存在 可用 > 0? 字节是否 等于 等于 1 ? END YES IS Temp 和湿值度 值 > 0 发送逗号 分隔值 的温度 和湿度 转换数字 湿度至 湿度值 (a100) – 5 已处理
使用系统电压作为最大范围,以及模数转换(ADC)分辨率为1,023(如公式1中的示例所示)。
$$
\text{Analog voltage measured} = \frac{\text{System voltage} \times \text{ADC value}}{\text{Resolution of ADC}} \quad (1)
$$
示例:系统电压 = 5 V,ADC值 = 434,模数转换器分辨率 = 1023。
$$
\frac{5 \times 434}{1023} = 2.12V
$$
转换完成后,湿度和温度的CSV文件即可发送到 Arduino,一旦Arduino从树莓派(RPi)接收到“1”的值。
接下来的段落描述了如何对HMP‐60传感器进行编程,以与Arduino Mega 2560接口,接收传感器测量数据并将其传输到树莓派。
图36显示了引脚分配、配置值和配置位。引脚分配用于为Arduino上的每个引脚分配名称。配置值用于将变量分配为零,以便可以存储新值:“TempVal” 用于存储从温度传感器读取的输入电压值,“HumidityVal”用于存储从湿度传感器读取的输入电压值,而“incomingByte”用于临时存储由树莓派发送的传入的值。配置位用于将HMP‐60连接分配为Arduino的输入,以接收来自传感器的数据,并设置串行波特率为
9,600 表示数据传输速率。因此,每秒传输 9,600 比特每秒的数据。
图37 显示了转换位、模拟输入的配置以及从树莓派读取数据,并向树莓派发送温度和湿度值的过程。在转换位中,使用“float” 来创建浮点数,该浮点数包含浮动的小数点,以便计算机识别实数。对于温度和湿度,传感器读取的电压值由Arduino自动作为模数转换器(ADC)进行转换;而将电压转换为以度为单位的温度和以百分比表示的相对湿度,则需要进行数模转换(DAC)(示例见公式1)。一旦电压读数完成了从数字到模拟的转换,可通过将电压值乘以100 再减去40来获得温度(参见图35)。
模拟输入被配置为将温度和湿度的电压读数分配给指定的模拟输入引脚。通过使用“Serial.available()”并结合 “while循环”持续检测Arduino是否通过通用异步收发器(UART)端口接收到串行数据;如果存在可用的串行数据,则将其存储在输入字节寄存器中。使用一个“If”语句来检查输入字节是否等于“1”的值;如果该值大于零,则数据将被发送。
使用“Serial.print”输出CSV数据,以便树莓派能够将其放入CSV文件格式中。代码的最后一行使用了“ Serial.println”语句,以确保下一行数据发送时会另起一行。
图38 显示了树莓派上的代码,用于向Arduino发送请求并接收温度和湿度测量数据。通过使用Xbee屏蔽板读取 USB端口,并将波特率设置为与Arduino相同的值,以在相同的频率范围内接收数据。该软件的工作方式与Arduino非常相似,串行写入会发送一个“一”的值给Arduino,以每两分钟接收一次数据。术语“app”被分配作为CSV 文件的缩写,数据通过打开文件名 “HMP60Trial.csv” 并使用缩写 “a”来调整文件,将数据保存到CSV 文件中。然后,使用 “app.write,”将数据写入文件,一旦数据写入完成,就使用
“app.close.” 测量数据使用树莓派的板载时钟进行时间戳记。
图39 显示了Arduino Mega 2560(终端设备)与树莓派3(路由器)之间作为单个节点的点对点通信。从图中可以看出,传输的温度和湿度值在接收时没有误差间隙,因此不存在数据丢失。
图40以图表形式表示使用Microsoft Excel工具接收到的测量数据;测量数据相对于时间进行绘制,时间由树莓派3(路由器)设定为每两分钟接收一次数据。收集的数据显示记录的温度约为25.82°C,湿度约为48.4%。
4.3.2. 测量土壤电导率、湿度和温度
测量土壤的电导率(单位为毫西门子/米(mS/m))有助于关联影响作物生产力的土壤特性,例如土壤持水量土壤颗粒。砂质土壤的电导率较低,粉质土壤的电导率中等,黏质土壤的电导率较高。通过估算水中盐分和铁的可用量,利用电导率测量含水量,从而实现灌溉管理。此外,可使用电导率配合公式2来测量土壤湿度水平。测量土壤温度非常重要,因为某些温度会减缓植物生长,而不同种子的发芽需要不同的土壤温度范围;因此,温度信息有助于监测植物生长,并识别适合各类播种的田间区域。
$$
\text{Soil moisture } (dS/m) = 4.3 \times 10^{-6} \times \varepsilon_a^3 - 5.5 \times 10^{-4} \times \varepsilon_a^2 + 2.92 \times 10^{-2} \times \varepsilon_a - 5.3 \times 10^{-2} \quad (2)
$$
在测试的这一阶段,将5TE传感器探头连接到 Arduino,并通过SDI‐12串行接口进行配置。该传感器发送三个分隔的值;第一个值是土壤的电导率,第二个值是零,该值被忽略,因为它用作两个值之间的间隔,最后一个值是土壤温度。土壤湿度水平通过公式2获得。树莓派随后使用 Xbee无线接收这些值。通过将Arduino放置在另一个房间,从而在Arduino与树莓派之间创建了距离,以测试连接范围。
开始 分配 变量 分配数据引脚到 Arduino的2号引脚 分配输入样本和SDI‐12 串行到数据引脚 已处理 串行 开始 浮点数 变量 已处理 样本是否 <5? GET 测量数据 清除数值 已处理 存储全部三个 测量数据在 内存寄存器? END 发送逗号 分隔 测量至 RPi 已处理 IS 转换 完成? IS 转换 完成? 已处理 清除内存 内存是否 已清除? NO YES NO NO YES NO NO YES NO YES NO NO YES NO YES YES YES NO 转换 通过介电常数获取 土壤湿度 转换SDI‐12 将串行数据转换为 数字数据 分配 测量 1>介电 测量 2>忽略 测量 3>度
接下来的段落展示了如何对5TE传感器进行编程,以与 Arduino Mega2560接口,接收传感器测量数据并将其传输到树莓派。
图42包含5TE土壤传感器的头文件、配置值和配置位的信息。头文件包含所有用于与传感器接口的文件,因此包含 SDI‐12串行语言,该语言随后被转换为可读数据。转换值用于设置从传感器接收到的数据的最大字符串长度。每次测量采集五个样本,因为多次读取有助于生成某个值的平均值,从而获得更好的结果;这是由于噪声或波动
可能会影响测量数据。传感器的数据线连接到Arduino的引脚2,并分配为变量数据以便于用户读取。使用了两个整数 “int”来分配一秒延迟变量和数据位置寄存器。设置了 9600波特率的串行波特率,以实现每秒9,600比特的数据传输速率。
图43和图44 展示了5TE土壤传感器的主代码,其中包括浮点数样本、从传感器获取的样本、用于获取其他测量值的转换,以及以CSV格式发送到树莓派的测量值。使用数组存储了介电常数和温度的五个测量样本的浮点数值,然后使用另一个数组计算这五个测量样本的平均值。之后通过该平均值来获得介电常数和温度的精确值。
从数学上讲,这是通过计算五个样本的平均值,然后将该平均值除以五来得到其平均值。当字符串长度“strlen”大于零时,存储样本;使用“strtok”将不需要的字符(例如 SDI‐12字符([]))从样本中分离出来。
。)
语句“atof”用于将样本值中的小数部分与其整数部分分离开来。使用“while循环”来无限检查Arduino是否通过其UART端口使用“Serial.read()”接收到串行数据,然后存储
该值在“DataIn”寄存器中。“if”语句用于检查串行数据是否等于一;这有助于通过“Serial.print”语句将数据发送到树莓派。“get_measurement”函数是一个字符语句,用于从5TE土壤传感器获取SDI‐12串行数据。
图45 和 46 显示了从一株干燥植物和一株浇水后的植物中获取的结果;两者植物的电导率之间存在差异,其值从 3.71 mS/m 变为 16.31 mS/m。因此,由于土壤颗粒中含有的水量以及所测试土壤含有黏土成分,导致电导率较高。此外,土壤湿度水平也从 0.11 dS/m 变为 0.36 dS/m(相当于 11 mS/m 和 36 mS/m),这表明植物最初含水量较低,在浇水过程中因添加了盐分和铁元素后变为高含量。两株植物的土壤温度测量值均较高,但在向土壤中加水后有所降低,因为水有助于
为植物降温。最初记录到的高温是因为植物处于直射阳光下。
随后,将Arduino节点放置在另一个房间,传感器则插入一株植物的土壤中。数据通过Xbee模块无线传输到树莓派,并以CSVfile格式进行汇总。树莓派使用的代码与之前相同,仅将file名称更改为“5TETrial2.csv”(见图47)。
图47和图48显示了从Arduino上的5TE传感器存储在树莓派上的数据。结果显示,土壤温度约为24.6°C,介电常数约为8.95 毫西门子/米,土壤湿度水平为0.17 毫西门子/米。图45a显示从Arduino发送的数据以CSV格式发送,符合预期。
4.3.3. 测量全球辐射
全球辐射是来自天空的总短波辐射,落在地面上的水平面上。它是以瓦特每平方米(Wm⁻²)为单位进行测量。全球辐射监测有助于管理作物种植过程,例如最佳播种时间、最佳植株密度、定时施肥和灌溉管理。这有助于种植某些在最佳全球辐射条件下生长更旺盛的植物,从而提高作物产量。在当前测试阶段,SP‐212 全球辐射传感器探头通过模拟输入连接到 Arduino,类似于 HMP‐60 接口过程,需要通过公式1 使用数模转换器。数据随后被发送到树莓派并存储在数据库中。
开始 已处理 已处理 DAC YES YES NO YES NO NO 浮点数 变量 是变量 已转换? 发送逗号 值分到隔树莓派 END 分配传入字节到 Arduino的模拟引脚A0
从传感器读取的值是一个电压读数,通过Arduino板载的模数转换器转换为数字形式,使该值处于 0到1023范围内。然后该值再由数模转换器转换回模拟信号。读取的电压值随后根据传感器数据手册中每瓦每米2毫伏的转换关系,转换为W/m⁻²。使用传感器数据手册中的每W/m⁻² mV的转换关系,将读取的电压值转换为W/m⁻²。’数据手册。
接下来的段落展示了如何对SPI‐212全球辐射传感器进行编程,以与Arduino Mega 2560接口,接收传感器测量数据并将其传输到树莓派。
图50 显示了SPI‐212传感器的配置位。 “字节”寄存器用于存储输入值。设置的串行波特率为9,600,以实现 9,600每秒比特数的数据传输速率。
图51 显示了SPI‐212传感器的主代码。该传感器输入一个模拟电压值,Arduino会自动将其转换为0到1,023范围内的数字电压。因此,为了将电压转换为W/m⁻²,需通过公式 1将数字电压转换回模拟电压以获得模拟电压值。为了获得单位为W/m的电压值 ⁻²,参考了SPI‐212的数据手册。使用浮点数
使用“浮点数”(float)来表示数字,以便计算机能够识别公式。“如果”(if)语句用于检查串行数据是否“可用”(available)且等于“一”(one),并且小于1,250 W/m⁻²。如果该串行语句为真,则全球辐射测量数据将以 CSV格式传输到树莓派(RPi)。如果传入的变量大于指定值,则使用“否则如果”(else if)语句发送错误信息
大于1,250 W/m⁻²。全球辐射的范围来自SPI‐212传感器数据手册。
图52 显示了从SP‐212传感器测试中收集的测量数据;结果表明,光强度越高,电压越高,而光强度越低时,电压越低。
图53 显示树莓派接收到了数据并将其存储在CSV数据库中。树莓派使用的代码与之前相同,仅将文件名更改为“SPI212.csv。”测试期间天气晴朗且多云;当阳光透过云层更多时,
4.4. 智慧农业网络演示
在本章中,之前描述的各个传感器部件被组合成一个较小规模的网络;因此,使用两个路由器将来自连接到每个路由器的终端设备的数据发送到协调器。本节介绍如何将终端设备与路由器进行设置以及所涉及的软件(参见图54)。
该网络为演示目的进行了设置,包含两个路由器,每个路由器都连接了终端设备。
协调器(采集来自双方的数据
网桥
数据传输 从桥接器‐1到 协调器
路由器 (桥接器‐1)
数据接收 从终端设备 并传输到桥接器‐1
多个终端 设备带有 传感器连接到(桥接器‐1)
数据传输 从桥接器‐2到 协调器
路由器 (桥接器‐2)
数据接收 从终端设备 和已传输到桥接器‐2
多个终端 设备与 传感器连接到 (bridge‐2)
使用Zigbee S2C模块进行无线通信。每个路由器的作用是作为协调器与终端设备之间的网桥,以扩展数据传输范围,如 图55 所示,在演示中先使用单个路由器,然后使用两个路由器连接多个终端设备。
协调器(树莓派)
数据接收 从终端设备 并重新路由到 协调器
数据传输 从终端设备传输到 路由器
终端设备(Arduino) 路由器(树莓派)
为了建立两个网桥网络,需要更改Zigbee S2C模块的目标地址,因为该地址定义了数据将被传输到的目的地。这可以通过将终端设备的Zigbee模块的“目标地址高(DH)”值设置为路由器的“序列号高(SH)”值来实现。例如,路由器的SH值是“13A200”,因此终端设备的DH值也需要设置为“13A200”。终端设备的“目标地址低(DL)”值也被设置为路由器的“序列号低(SL)”。例如,路由器的SL值是 “41502563”,因此终端设备的DL值也被设置为“ 41502563”。
因此,这使得连接到第一个网桥的终端设备只能向该网桥发送数据,而不能发送到第二个网桥。对于第二个网桥也采用了相同的过程,但目标地址的值不同。为了使网桥能够将数据传输到协调器,需将目标地址DL和DH设置为协调器 Zigbee模块的SH和SL值;因此DH = SH且DL = SL。这些地址的值是通过使用Digi XCTU软件读取Zigbee模块获得的,并将DH和DL的地址写入模块中。
第4章 农业科技解决方案(续)
4.4.1. 网络测试中使用的软件
本节描述了在小规模智慧农业网络测试期间,用于协调器、路由器和终端设备的软件。
数据从连接到树莓派的USB端口0的Zigbee模块读取;使用9600波特率,使其与其他连接到路由器的Zigbee模块具有相同的数据传输速率,从而能够接收数据。使用“DatIn”语句作为寄存器来存储使用串行接口通过“readline()”从树莓派的USB端口读取的传入的数据。使用语句“app”作为名称来打开、写入和关闭名为“SmartFarming5”的CSV文件,语句“a”用于允许编辑该CSV文件。使用语句“app.write(DatIn+”\n”)”可将从路由器接收到的串行数据写入CSV文件中,以作为数据库存储。使用语句“app.close()”在传入数据写入文件后关闭CSV文件,以便允许新的传入数据写入该文件。此过程将在这些语句为“True”时持续运行,因此仅在接收数据时执行。浅灰色部分的语句无关紧要,因为它们已被注释掉(见图56)。
数据从连接到树莓派的USB端口0的Zigbee模块读取;使用了9600波特率,以便与其他连接到终端设备的Zigbee模块具有相同的数据传输速率,从而能够接收数据。语句“IncomingData”被用作寄存器用于通过串行接口从RPi的USB端口读取传入数据,并将其存储在寄存器中,使用“readline()。”一旦接收到的数据被存储在寄存器中,便通过语句“ser.write(IncomingData+”\n”)”将数据传输到协调器,该语句将接收到的数据写入 Zigbee模块的发送端口(TX)。语句“\n”用于创建一个新行,使得传输的数据在协调器上显示在新的一行,这有助于以清晰的方式直观地表示数据(见图57)。
接下来的段落描述了用于传输传感器数据的软件,如表20所示。从传感器获取测量数据所使用的软件与下文所述相同。
| 表20. 使用的设备说明。 |
|---|
| 演示期间使用的传感器及其定义 |
| 传感器 |
| HMP‐60 |
| SPI‐212 |
| 5TE |
| DHT22 |
| 外壳 |
| 时间设备 |
| DS3231 |
图58 显示了用于带DHT22传感器的5TE传感器的软件。通过“Serial.print”将所有数据写入连接到 Arduino的Zigbee模块的发送端口(TX)。提供了节点的描述,以便用户能够确定哪些数据需要馈送到哪个节点。数据在开头处添加了日期和时间戳,以显示数据收集的时间;之后,测量了土壤介电常数(EC)、土壤湿度水平、土壤温度以及内部温湿度。内部温度和湿度传感器用于监控enclosure内的温度和湿度;此过程作为安全协议执行,因为如果水分进入enclosure或温度超过70°C,则需要关闭 Arduino。语句“delay”用于设置传感器的测量频率;例如,如果每15分钟进行一次测量,则延迟应设置为900,000 毫秒。对于网络的升级设计,土壤传感器(5TE)的SW只需复制并设置不同的测量频率即可。
图59 展示了用于通过SPI‐212传感器(包含DHT22传感器)以CSV 文件格式发送数据的软件。使用串行方式将数据写入连接到Arduino的Zigbee模块的发送端口(TX)。同时,通过I2²C协议,利用串行数据(SDA)和串行时钟(SCL)端口从实时时钟(RTC)获取日期和时间,并进行传输。内部使用串行接口从DHT22传感器获取了enclosure前述特性的温度和湿度详细信息。测量频率为秒,以便每两秒将全球辐射数据发送给协调器,用于实验室中的测试。仅当全球辐射不超过1,250 W/m⁻²时,才会传输传感器的数据;如果该值更高,则传感器将失效,并使用“否则如果”语句向协调器发送错误消息。
图60 显示了用于通过CSV 文件格式发送包含DHT22传感器的HMP‐60传感器数据的软件。使用Serial.print() “Serial.print()”语句将数据写入连接到Arduino的Zigbee模块的发送端口(TX)。仅当输入的温湿度值高于零时,才会将室外温度和湿度信息传输到网桥。
图61 显示了存储在协调器上的数据,这些数据以CSV格式从桥接器一和二接收,从而允许将数据作为电子表格打开;数据之间用逗号分隔,形成独立的列,以便清晰地可视化显示。然后可以从电子表格或文本 file中收集数据以构建结构化查询语言(SQL)数据库。图61显示每条单独的数据都有描述,并带有日期和时间戳,以便记录。
4.4.2. 演示期间所用各传感器采集结果的图形表示
本节中,从HMP‐60、SPI‐212、5TE和DHT22传感器收集的数据中获取了30组测量数据。
测量数据随后被绘制在图表上,以时间作为横轴,显示传感器在实验室测试期间的变量变化。因此,通过调节灯的强度来改变全球辐射变量,通过人体接触来改变室外温度和湿度变量。此外,土壤湿度、温度和介电变量也通过人体接触进行调整。人体接触指的是将传感器握在手中。
图62 显示了室外温湿度传感器。结果显示,房间内记录的温度约为25°C,在人体接触后升高至约30°C。因此,温度的变化表明传感器运行正常。然而,温度仅发生轻微变化,从而表明传感器改变了其变量逐渐释放到环境中;这对于进行精确的测量数据很有用。
图63 显示了室外温湿度传感器。结果显示,实验室房间的湿度记录值约为25.4%。在人体接触后,湿度上升至约88.9%。因此,传感器在接触情况下湿度值的变化表明,由于传感器能适应当前环境,其工作状态符合预期。图表显示,传感器能够快速适应环境中的湿度变化。这是因为传感器内部有带滤网的间隙;当这些间隙被覆盖时,空气被困在传感器内部,并被体温加热。
图64显示了光强变化时的全球辐射测量数据。该图表首先显示光强发生阶跃变化,表明测得的瓦特每平方米值随着光强的变化迅速增加。记录到的最大全球辐射约为410 W/m⁻²,最小记录值约为50 W/m⁻²。结果表明,传感器对光的变化敏感,这对于测量室外全球辐射非常有用,因为白天经常会出现云层覆盖,但传感器能够检测到穿过云层间隙的光线。
图65 展示了5TE传感器显示的土壤介电常数随时间变化的结果。结果表明,在无人体接触的情况下,传感器检测到空气中水蒸气的电导率约为1.12 mS/m。在有人体接触时,测得的介电常数约为11.7 mS/m,这表明传感器已检测到手上的水分。变量的变化表明该传感器具有足够的灵敏度,能够检测到手上存在的水分。这种灵敏度对于作物生长非常有用,因为传感器能够利用有关土壤含水量的数据,确定传感器周围区域(以米为单位)的水量。这将有助于确定为作物提供养分的作物,通过水来实现。
图66 显示了5TE传感器测量的土壤湿度水平随时间变化的结果。结果显示,在人体接触时,测得的湿度水平约为0.3分西门子每米(dS/m)。结果表明,传感器检测到了人手上的水分,这体现了传感器的灵敏度。其灵敏度有助于检测土壤中的含水量,因为在高温下作物会开始枯萎;因此,及早发现干燥条件将有利于作物生长。
图67 显示了5TE传感器测量的土壤温度随时间变化的结果。结果显示,传感器测得实验室的室温约为25°C,而在人体接触时,测得的温度为37°C,这是正常核心体温。这表明该传感器具有高灵敏度,这对于作物是有用的,因为它可以检测可能影响土壤含水量的高温。
图68显示了DHT22传感器对内部温度和湿度的测量数据。由于原型在没有外壳的情况下进行演示,传感器测量的是实验室的室温和湿度。图表显示温度约为25°C,湿度水平约为35%。
4.4.3. 实时时钟设置软件
本节介绍了如何使用连接到每个节点的实时时钟软件来设置日期和时间,以对传感器测量数据进行打时间戳。所使用的实时时钟为DS3231。
图69 显示了DS3231实时时钟的软件。集成电路间总线 (I2C)引脚’数据信号 “SDA”和时钟信号“SCL”被分配为 “rtc”以从实时时钟获取数据。使用9600波特率在Arduino的串口监视器上查看日期和时间。语句“rtc.begin()”用于打开集成电路间总线接口,与实时时钟。为了使Arduino与RTC进行接口连接,Arduino的SDA连接到RTC的SDA,Arduino的SCL连接到 RTC的SCL。被注释掉的语句“rtc.setDOW”、“rtc.setTime(16, 20, 0)”和“rtc.setDate(31, 8, 2018)”用于设置RTC板载时钟的星期、时间和日期。
图70 展示了用于DHT22温度和湿度传感器的软件。通过Arduino的第4引脚使用单线协议接收温度和湿度数据。温度是通过传感器的负温度系数(NTC)热敏电阻,利用语句“dht.getTemperatureC().”获取的。湿度是通过语句“dht.getHumidity().”获取的。使用两秒延迟,以便每两秒在 Arduino串口监视器上查看测量到的温度和湿度。
本节介绍了传感器与Arduino之间连接用的印刷电路板(PCB)。传感器通过接线端子连接到Arduino,以实现连接当需要更换传感器时,可轻松适配。使用了排母插座来连接 DHT22 和 RTC,实现插拔功能,便于快速更换,同时也可通过公对公跳线将 Arduino 接入电路。每个节点上还增加了额外的电源、地和传感器连接接口,以支持进一步的扩展。印刷电路板的尺寸设计为可轻松装入外壳中,为 Arduino 和电缆留出足够空间。在每个角落增加了四个安装孔,用于将 PCB 固定在外壳内,防止外壳移动时连接松动。
4.5. 可行性分析,包括协议更新及继续推进至TRL4及更高技术就绪水平的证明
TRL 是一个基于度量的系统,用于评估项目概念、技术要求和技术能力。
TRL 基于从一到九的等级,用于表示研究和技术开发的成熟度,其中九为最成熟。该技术的成熟度等级按设备、材料、部件和工艺进行评估。TRL 评级有助于确定特定技术距离被工业界或公众应用还有多远。图71 展示了 TRL 的各项要求。
TRL0 和 TRL1 处于基本技术研发阶段,其中 TRL0 是未经证实的想法,未进行任何分析或测试,而 TRL1 已观察并报告了支持该技术的已发表的研究文献
该项目的概念。为验证可行性而进行的研究处于TRL2和 TRL3,并部分达到TRL4;在TRL2阶段,已将TRL1报告中的概念基于一般性假设和一些分析数据,初步形成实际应用的方案。
TRL3是在实验室规模上通过分析和实验研究验证概念可行性的阶段对更大规模的概念进行预测。可行性与技术演示属于TRL4,因为这只是低保真设计,尚处于实验室规模演示阶段,旨在验证技术组件能否协同工作并获取测试结果。TRL5是在实验室模拟环境中对高保真设计进行的实验室规模演示,技术组件在此集成并测试,以验证所开发的技术在预定运行环境中的表现。
系统开发介于TRL6和TRL7之间,原型系统在接近或位于系统规划位置的运行环境中进行设计和测试,同时进行集成并收集数据,以与模拟环境的数据进行比较。在TRL6 完成测试后,如果运行环境的演示成功,则技术就绪水平将提升至TRL7。
该系统的发射及其运行列于TRL8和TRL9之间。在这种情况下,已完全完成并经过测试的实际系统证明了所开发的技术在预期条件下最终阶段的可行性。随后,在评估收集到的数据并确保其满足运行环境要求后,完成技术设计。在 TRL9阶段,已在运行环境中完成对系统最终设计性能的报告,以启动将该技术推向市场的流程。
所提出的智慧农业技术目前处于TRL3阶段,因为已通过对最终系统的各个独立组件进行信息汇总验证了相关概念。为获得用于分析预测的数据并实现最终构想,后续过程包括对各个传感器进行编程,并测量土壤湿度、电导率、土壤温度、外部温湿度以及太阳辐射。所汇总的数据被用于分析预测。
预测以验证这些传感器是否正常运行,并可用于监测植物生长,以及与所选技术配合使用来检索数据(Arduino Mega 2560)。无线传感器节点的概念通过使用两个Xbee Pro实现,其中一个连接到Arduino,另一个连接到树莓派。这形成了一个无线连接,利用射频从Arduino接收数据并将其存储在树莓派上,以便用于数据库。
在达到TRL3后,拟议的项目现在可以推进到TRL4,方法是将所有传感器连接到Arduino,并使用树莓派从 Arduino收集数据。从而验证这两种技术可以协同工作,并作为最终设计的一部分创建一个单一的测量节点。由于目前仅为单个节点,而最终系统是多个节点连接到单个树莓派,因此这属于低保真设计。增加更多节点将使该技术进入 TRL5,因为这正是智慧农业技术项目的最终设计。
749

被折叠的 条评论
为什么被折叠?



