检测土壤湿度 本课概览的草图笔记 草图笔记由 Nitya Narasimhan 创作。点击图片查看大图。 这节课是在 Microsoft Reactor 的 IoT 初学者项目 2 - 数字农业系列 中教授的。 土壤湿度传感器与数字农业 课前测验 课前测验 引言 在上一课中,我们学习了如何测量环境属性并利用这些信息预测植物生长。虽然温度可以被控制,但这样做非常昂贵,需要控制环境。对于植物来说,最容易控制的环境因素是水——从大规模灌溉系统到孩子们用浇水壶浇灌花园,每天都进行着这项工作。 一个孩子给花园浇水 在这节课中,你将学习如何测量土壤湿度,并在下一课中了解如何控制自动浇水系统。

草图笔记由 Nitya Narasimhan 创作。点击图片查看大图。
这节课是在 Microsoft Reactor 的 IoT 初学者项目 2 - 数字农业系列 中教授的。
在上一课中,我们学习了如何测量环境属性并利用这些信息预测植物生长。虽然温度可以被控制,但这样做非常昂贵,需要控制环境。对于植物来说,最容易控制的环境因素是水——从大规模灌溉系统到孩子们用浇水壶浇灌花园,每天都进行着这项工作。

在这节课中,你将学习如何测量土壤湿度,并在下一课中了解如何控制自动浇水系统。这节课将介绍第三种传感器:你已经使用过光敏传感器和温度传感器,所以在这节课中,你还将学习更多关于传感器和执行器如何与物联网设备通信的知识,以便更好地理解土壤湿度传感器如何将数据发送到物联网设备。
本节课涵盖的内容有:
植物需要水才能生长。它们通过整个植物吸收水分,其中大部分是由根系吸收的。植物用水做三件事:

✅ 进行一些研究:通过蒸腾作用损失了多少水分?
根系从植物生长的土壤中提供水分。土壤中水分不足,植物无法吸收足够的水分生长;水分过多,根部无法吸收足够的氧气以正常运作。这会导致根部死亡,植物无法获得足够的养分生存。
为了获得最佳的植物生长效果,土壤既不能太湿也不能太干。物联网设备可以通过测量土壤湿度来帮助实现这一点,从而让农民只在必要时浇水。
有许多不同类型的传感器可以用来测量土壤湿度:
电阻式 —— 电阻式传感器有两个探针插入土壤中。一个探针发送电流,另一个接收电流。传感器然后测量土壤的电阻——测量电流在第二个探针处下降的程度。水是良好的导体,因此土壤中的水分越多,电阻越低。

你可以使用两块金属(如钉子)制成电阻式土壤湿度传感器,这两块金属相隔几厘米,并使用万用表测量它们之间的电阻。
电容式 —— 电容式湿度传感器测量在正负电极之间可存储的电荷量,即电容。土壤的电容会随着湿度的变化而变化,这种变化可以转换成一个电压值,该值可以由物联网设备测量。土壤越湿润,输出的电压越低。

这些都是模拟传感器,返回一个电压来表示土壤湿度。那么,这个电压是如何传送到你的代码中的呢?在进一步探讨这些传感器之前,让我们先看看传感器和执行器如何与物联网设备通信。
到目前为止,在这些课程中,你已经学习了许多传感器和执行器,并且如果进行了物理硬件实验,这些传感器和执行器已经与你的物联网开发套件进行了通信。但是,这种通信是如何工作的呢?土壤湿度传感器的电阻测量是如何转化为可以从代码中使用的数字的呢?
要与大多数传感器和执行器通信,你需要一些硬件和一种通信协议——这是一种定义良好的方式,使数据能够被发送和接收。以电容式土壤湿度传感器为例:
00001101 25,还是前五个位是前一个值的结束?硬件提供了数据发送的物理连接,不同的通信协议确保数据被正确地发送或接收,以便可以被解释。
GPIO 是一组引脚,你可以用它们将硬件连接到你的物联网设备上,通常在如树莓派或Wio终端等物联网开发者套件中可用。你可以使用本节中介绍的各种通信协议通过GPIO引脚进行通信。一些GPIO引脚提供电压,通常是3.3V或5V,一些引脚是地线,还有一些引脚可以根据编程设置为发送电压(输出),或接收电压(输入)。
一个电路需要通过任何你使用的电路连接电压和地线。你可以将电压视为电池的正极(+ve),地线视为负极(-ve)。
你可以直接使用GPIO引脚与一些仅关心高或低值的数字传感器和执行器一起工作——高值表示开,低值表示关。一些例子包括:
按钮。你可以将按钮连接到一个5V引脚和一个设置为输入的引脚之间。当你按下按钮时,它会完成从5V引脚通过按钮到输入引脚的电路。从代码中,你可以读取输入引脚上的电压,如果它是高(5V),则表示按钮被按下,如果是低(0V),则表示按钮未被按下。记住,实际电压本身不会被读取,而是根据是否超过阈值,得到一个1或0的数字信号。

LED。你可以将LED连接到一个输出引脚和一个地线引脚之间(使用电阻,否则LED会被烧毁)。从代码中,你可以设置输出引脚为高,它会发送3.3V,形成从3.3V引脚通过LED到地线引脚的电路。这将点亮LED。

对于更高级的传感器,你可以使用GPIO引脚直接通过数字传感器和执行器发送和接收数字数据,或者通过带有ADC(模数转换器)和DAC(数模转换器)的控制器板与模拟传感器和执行器通信。
如果你使用树莓派进行这些实验,Grove Base Hat上有硬件可以将模拟传感器信号转换为数字信号,通过GPIO发送。
✅ 如果你有一台带有GPIO引脚的物联网设备,请找到这些引脚并找到一张指示哪些引脚是电压、地线或可编程的图表。
一些设备,如Arduino设备,提供模拟引脚。这些引脚与GPIO引脚相同,但除了支持数字信号外,它们还具有ADC(模数转换器),可以将电压范围转换为数值。通常ADC具有10位分辨率,意味着它可以将电压转换为0-1,023之间的值。
例如,在一个3.3V的板上,如果传感器返回3.3V,返回的值将是1,023。如果返回的电压是1.65V,返回的值将是511。

回到夜灯——第3课,光敏传感器返回0-1,023之间的值。如果你使用的是Wio终端,传感器连接到模拟引脚。如果你使用的是树莓派,则传感器连接到带有集成ADC的基座帽上的模拟引脚,该ADC通过GPIO引脚通信。虚拟设备设置为发送0-1,023之间的值以模拟模拟引脚。
土壤湿度传感器依赖于电压,因此它们将使用模拟引脚,并给出0-1,023之间的值。
I2C,读作“I平方C”,是一种多控制器多外围设备协议,任何连接的设备都可以作为控制器或外围设备通过I2C总线(通信系统的名称)进行通信。数据以寻址的数据包形式发送,每个数据包包含发送给目标外围设备的地址。
这种模型过去被称为主从,但由于与奴隶制的联系,这种术语正在被淘汰。开源硬件协会已采用控制器/外围设备,但你可能仍然会看到旧术语的引用。
设备具有用于连接到I2C总线的地址,通常是设备上硬编码的。例如,来自Seeed的所有类型的Grove传感器具有相同的地址,因此所有光传感器具有相同的地址,所有按钮具有相同的地址,与光传感器地址不同。一些设备可以通过更改跳线设置或焊接引脚来改变地址。
I2C有一个由两条主要线路和两条电源线路组成的总线:
| 线路 | 名称 | 描述 |
|---|---|---|
| SDA | 串行数据 | 这条线路用于在设备间发送数据。 |
| SCL | 串行时钟 | 这条线路发送控制器设定速率的时钟信号。 |
| VCC | 电压公共集电器 | 设备的电源。它通过上拉电阻连接到SDA和SCL线路,当没有设备作为控制器时,该电阻会关闭信号。 |
| GND | 地线 | 这条线路提供电气电路的公共地线。 |

为了发送数据,一个设备会发出启动条件以表明它准备好发送数据。然后它将成为控制器。控制器随后发送它想要通信的设备的地址,以及它想要读取还是写入数据。在数据传输完成后,控制器发送停止条件以表明它已完成。此后,另一个设备可以成为控制器并发送或接收数据。
I2C有速度限制,有三种模式运行在固定的速度下。最快的模式是高速模式,最大速率为3.4Mbps(兆比特每秒),尽管很少有设备支持该速度。例如,树莓派的最大速度为快速模式,为400Kbps(千比特每秒)。标准模式运行速度为100Kbps。
如果你使用带有Grove Base Hat的树莓派作为物联网硬件,你可以在板上看到多个I2C插槽,可以用来与I2C传感器通信。模拟Grove传感器也使用I2C,通过ADC将模拟值转换为数字数据,因此你在虚拟设备上使用的光传感器模拟了模拟引脚,通过I2C将值发送到树莓派,因为树莓派只支持数字引脚。
UART涉及允许两个设备通信的物理电路。每个设备都有两个通信引脚——发送(Tx)和接收(Rx),第一个设备的Tx引脚连接到第二个设备的Rx引脚,第二个设备的Tx引脚连接到第一个设备的Rx引脚。这样就可以在两个方向上发送数据。

数据一个比特一个比特地发送,这被称为“串行”通信。大多数操作系统和微控制器都有“串行端口”,即可用于发送和接收串行数据的连接,可供你的代码使用。
UART设备具有波特率(也称为符号率),这是数据将以比特每秒的速度发送和接收的速度。常见的波特率是9,600,意味着每秒发送9,600比特(0或1)的数据。
UART使用起始位和停止位——也就是说,它发送一个起始位以表明即将发送一个字节(8比特)的数据,然后在发送完8比特后发送一个停止位。
UART的速度取决于硬件,即使最快的实现也不会超过6.5 Mbps(兆比特每秒,或每秒发送数百万个0或1)。
你可以通过GPIO引脚使用UART——你可以将一个引脚设置为Tx,另一个引脚设置为Rx,然后将这些引脚连接到另一个设备。
如果你使用带有Grove Base Hat的树莓派作为物联网硬件,你可以在板上看到一个UART插槽,可以用来与使用UART协议的传感器通信。
SPI专为短距离通信设计,例如在微控制器上与存储设备(如闪存)通信。它基于控制器/外围设备模型,单个控制器(通常是物联网设备的处理器)与多个外围设备交互。控制器通过选择外围设备并发送或请求数据来控制一切。
和I2C一样,“控制器”和“外围设备”是较新的术语,你可能会看到旧术语仍在使用。
SPI控制器使用3条线,加上每个外围设备额外的一条线。外围设备使用4条线。这些线是:
| 线路 | 名称 | 描述 |
|---|---|---|
| COPI | 控制器输出,外围输入 | 这条线用于从控制器向外围设备发送数据。 |
| CIPO | 控制器输入,外围输出 | 这条线用于从外围设备向控制器发送数据。 |
| SCLK | 串行时钟 | 这条线发送由控制器设定速率的时钟信号。 |
| CS | 片选 | 控制器有多条线,一条对应一个外围设备,每条线连接到相应外围设备的CS线。 |

CS线用于激活一个外围设备,通过COPI和CIPO线进行通信。当控制器需要切换外围设备时,它会去激活当前活动外围设备的CS线,然后激活想要通信的下一个外围设备的线。
SPI是全双工的,这意味着控制器可以同时从同一个外围设备发送和接收数据,使用COPI和CIPO线。SPI使用SCLK线上的时钟信号保持设备同步,因此不像直接通过UART发送那样需要起始和停止位。
SPI没有定义的速度限制,实现通常能够每秒传输数兆字节的数据。
物联网开发者套件经常支持通过一些GPIO引脚进行SPI通信。例如,在树莓派上,你可以使用GPIO引脚19、21、23、24和26进行SPI。
一些传感器可以通过标准无线协议进行通信,例如蓝牙(主要是低功耗蓝牙,或BLE)、LoRaWAN(一种长距离低功耗网络协议)或WiFi。这些允许远程传感器与物联网设备物理上分离。
一个这样的例子是在商业土壤湿度传感器中。这些传感器将在田地中测量土壤湿度,然后通过LoRaWAN将数据发送到集线器设备,该设备将处理数据或将数据发送到互联网。这使得传感器可以远离管理数据的物联网设备,减少功耗并减少对大型WiFi网络或长电缆的需求。
BLE在高级传感器中很受欢迎,例如腕戴式健身追踪器。这些设备结合多种传感器,并通过BLE将传感器数据发送到物联网设备,例如你的手机。
✅ 你身上、家中或学校里是否有任何蓝牙传感器?这些可能包括温度传感器、占用传感器、设备追踪器和健身设备。
一种流行的商业设备连接方式是Zigbee。Zigbee使用WiFi在设备之间形成网状网络,每个设备尽可能多地连接到附近的其他设备,形成大量类似蜘蛛网的连接。当一个设备想向互联网发送消息时,它可以发送给最近的设备,然后由其他附近设备继续转发,直到到达协调器并可以发送到互联网。
Zigbee的名字来源于蜜蜂回巢后的摇摆舞。
你可以使用土壤湿度传感器、物联网设备和一盆家里的植物或附近的土壤来测量土壤中的湿度水平。
按照相关指南操作,使用你的物联网设备测量土壤湿度:
传感器依赖于测量电阻或电容等电气特性。
电阻,以欧姆(Ω)为单位,是电流通过某物时遇到的阻力。当施加电压时,流经材料的电流取决于材料的
通过温度计算电阻的公式称为斯特恩哈特-哈特方程。
土壤湿度可以通过重量含水量或体积含水量来测量。
对于美国人来说,由于单位的一致性,这些可以以磅而不是千克,或者立方英尺而不是立方米来测量。
土壤湿度传感器测量的是电气电阻或电容——这不仅取决于土壤湿度,还取决于土壤类型,因为土壤中的成分可以改变其电气特性。理想情况下,传感器应该进行校准——即从传感器获取读数并与使用更科学的方法找到的测量值进行比较。例如,实验室可以使用特定田地的样本每年几次计算重量含水量,并使用这些数据来校准传感器,使传感器读数与重量含水量相匹配。

上面的图表显示了如何校准一个传感器。采集到土壤样本的电压后,可以在实验室中通过将湿润重量与干燥重量进行比较来测量(先测湿重,然后在烘箱中干燥后再测干重)。一旦采集了几组读数,就可以绘制在图表上并拟合一条线。这条线可以用来将物联网设备采集的土壤湿度传感器读数转换为实际的土壤湿度测量值。
对于电阻式土壤湿度传感器,土壤湿度增加时电压增加。对于电容式土壤湿度传感器,土壤湿度增加时电压降低,因此这些传感器的图表应该是向下倾斜的,而不是向上倾斜的。

上面的图表显示了一个土壤湿度传感器的电压读数,通过沿着该点追踪到图表上的线,可以计算出实际的土壤湿度。
这种方法意味着农民只需要为一片田地获得几次实验室测量结果,然后就可以使用物联网设备来测量土壤湿度——大大加快了测量时间。
电阻式和电容式土壤湿度传感器有许多不同之处。这些差异是什么?哪一种(如果有的话)最适合农民使用?这个问题的答案是否因发展中国家和发达国家而异?
阅读有关传感器和执行器使用的硬件和协议:
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。