本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于模拟传感器的土壤水分监测系统

发布时间:2021-11-02
分享到:

基于模拟传感器的土壤水分监测系统

发布时间:2021-11-02
分享到:

本方案是一个基于模拟传感器的土壤水分监测系统,使用 Agrumino、I2C ADC 和附加土壤湿度传感器进行土壤湿度监测。

实际上,这是通过一个系统完成的,该系统由一个附加的土壤湿度传感器组成,该传感器通过 I2C ADC 模块与 Agrumino Lemon 相连。获得的数据将被发送到 ThingSpeak 通道,从而使其可见和可处理。

一般说明
执行该项目所需的电子元件已通过面包板和跳线的支撑充分连接。下面列出并描述了所使用的组件以及所使用的平台和协议。

电容式土壤湿度传感器 v1.2

该土壤湿度传感器通过电容传感测量土壤湿度水平。为此,它由耐腐蚀材料制成,使其具有出色的使用寿命。一旦插入植物周围的土壤中,它就可以监控实时土壤水分数据。该模块包括一个板载稳压器,工作电压范围为 3.3 ~ 5.5 V,而输出电压为 0 ~ 3.0 V。为了使设备正常工作,必须进行校准:浸入后获得的值在水中对应于 100% 的湿度,而在空气中获得的值与 0% 的湿度有关。这些是建立结果评估量表的指示性值。

模数转换器

上述传感器的输出是模拟类型的。由于 Agrumino Lemon 板仅通过 I2C 接口进行通信,因此必须使用兼容的模数转换器。具体来说,它使用了 Adafruit ADS1115。ADS1115 通过 I2C 以 860 次采样/秒的速度提供 16 位精度。芯片可配置为4个单端输入通道,或2个差分通道;它甚至包括一个可编程增益放大器,并且可以在 2 V 至 5 V 的电源/逻辑范围内运行。

Agrumino Lemon DEV 板允许整个系统运行。事实上,Agrumino 是一款可满足您所有需求的开源可编程设备,因为它配备了 ESP8266 芯片,可连接到 2.4 GHz Wi-Fi 网络以进行互联网通信。此外,它还可以使用 3.7 V 2450 型电池供电,并且内置传感器,用于:

Agrumino 设备必须有一个输出,使用它的用户可以从中读取他需要的数据。为此,决定使用 ThingSpeak 平台。

ThingSpeak 是一项物联网分析平台服务,可让您在云中聚合、可视化和分析实时数据流。它为您的设备发布到 ThingSpeak 的数据提供即时可视化。

I2C协议

使用 I2C,您可以将多个从机连接到单个主机(如 SPI),并且您可以让多个主机控制单个或多个从机。当您希望将多个微控制器记录数据到单个存储卡或在单个 LCD 上显示文本时,这非常有用。

I2C 仅使用两条线在设备之间传输数据:

代码
为了使用 Agrumino Lemon 固件,我们使用了软件 Arduino IDE。Agrumino 提供了一个储藏丰富的库,其中包含可用于各种应用的优秀示例草图。在我们的案例中,我们使用了允许与 ThingSpeak 平台进行通信的草图作为起点。从这个示例草图开始,您可以通过修改一些字段来自定义草图以获得请求的任务。

必须修改的字段将是与您必须连接的 Agrumino 的 Wi-Fi 以及您要将数据发送到的 ThingSpeak 通道的地址和写入密钥相关的字段。

完成后,您就可以在您的频道上读取 Agrumino 允许您读取的数据值了。

如上所述,Agrumino 能够读取土壤湿度的百分比,但在我们的示例中,我们希望电容式土壤湿度传感器读取该值。

这必须通过 Agrumino 配备的 I2C 通信协议来完成。为此,您需要一个模数转换器。为了使用该通信协议和转换器,使用了特定的库。有问题的库是 Adafruit_ADS1X15.h,由 Adafruit 提供。

默认情况下,库提供了一个等于0x48的 ADS 读取地址,但这会干扰柑橘的温度传感器,因此为了避免这个问题,您必须使用以下函数更改 ADS 地址:

转换器提供传感器读取的电压值,然后必须以百分比值报告,以便在通道上轻松读取。

在此转换之前,必须对传感器进行校准,即必须定义传感器的最大和最小电压值。为此,将最大值作为传感器完全浸入水中时读取的值,将最小值作为传感器完全干燥时读取的值。使用特定函数的这种校准导致我们要发送到通道的土壤水分百分比的定义。用于计算费用的函数如下所示:

获得此值后,我们可以按照用作基础的库提供的示例草图将其全部发送到 ThingSpeak 通道。

测试和模拟
在测试阶段,计划监测植物的土壤水分。在该测试中使用了罗勒植物。首先,上面解释的代码是通过 USB 电缆加载的,如图所示。

如您所见,Agrumino(不需要)和传感器都插入到土壤中。后者通过 ADC 转换器接口以允许 I2C 连接。

加载程序后,可以启动电池模式以监测一天中土壤湿度的变化。重要的是要记住,数据每 20 分钟采集一次,并且从土壤非常干燥的情况开始。

土壤湿度(来自传感器)和温度(来自 Agrumino)数据和结果被发送到 ThingSpeak。结果如下所示:

可以看出,测试是在早上 7:30 开始的。最初的土壤水分数据非常低,因为如上所述,我们从干燥的土壤情况开始。半小时后,加水润湿土壤,实际上该值达到了 94%。然后,在白天(测试在凌晨 1 点结束),该值下降到 62%。

就温度而言,一个有趣的事实是测试开始时记录的值超过 30 度。这是因为在开始时 Agrumino 是通过 USB 端口连接的(加载代码的阶段),因此在这个阶段微控制器会轻微过热并记录一个高于真实环境的值。不久之后,该值稳定在实际温度下。

传感器与 Agrumino 的比较
将我们使用的模拟传感器与集成在 Agrumino 中的湿度传感器进行比较也很有趣。以下对比图为:

如您所见,趋势非常相似。然而,从各种模拟中我们发现,平均而言,传感器记录的湿度百分比高于 Agrumino 传感器。这可能是因为我们使用的模拟传感器能够比 Agrumino 更深入地表,并且在深处保持湿度越来越长。

结论
在本方案中,我们想描述如何通过外部传感器管理土壤监测。在 Web 平台上实现 I2C 通信协议和结果可视化也很有趣。

未来可以实现具有更多外部传感器(例如光传感器、温度等)的系统。另一种可能的实现可能是通过 Telegram 频道添加推送通知以提醒用户地面状况(加水或不加水)的可能性。

如果您对此项目有任何想法、意见或问题,请在下方留言。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论