风筝
发表于: 2020-10-18 17:21:58 | 显示全部楼层

大家好,欢迎来到今天的教程。随着每个人都开始看到农作物健康带来的好处,智慧农场变得越来越受欢迎,我知道很多人会对智慧农场自动化感兴趣。因此,今天我们将探讨如何使用Arduino开发板和土壤湿度传感器来确定土壤中的水分含量。


土壤水分通常是指土壤颗粒之间空间中的水分含量。这是决定农作物生长及其健康状况的一个非常重要的因素。土壤湿度传感器通过使用与土壤相关的其他属性间接地测量体积水含量,而不是用旧的重量法测量土壤水含量。本篇文章中使用的土壤湿度传感器使用土壤的电阻来确定土壤湿度。土壤的电阻随着土壤中水量的增加而降低。反之,土壤中的电阻随着土壤中水量的减少而增加。传感器由一个探头和一个带有可调电位器的比较器组成,可用于设置传感器的灵敏度。

complete-sensor.jpg

由于不同制造商的需求和设计技巧,传感器采用不同的形式,便宜些的传感器带有单独的比较器板,该比较器板通过跨接线连接到探头,如上图所示,该版本的传感器包括一个模数转换器,允许将该传感器用作数字传感器。像Sparkfun这样的制造商提供的其他版本的传感器可能会将所有电子器件都连接到了探头上。无论传感器的外形尺寸如何,其连接方式和用途都是相同的。


该传感器的一些功能包括:

√    工作电压:3.3V〜5V。

√    可调灵敏度(使用蓝色数字电位器调整)

√    双输出模式,模拟输出更加精确。

√    固定的螺栓孔,易于安装。

√    带电源指示灯(红色)和数字开关输出指示灯(绿色)。

√    LM393比较器芯片。

√    面板PCB尺寸:3mmx 1.5mm。

√    土壤探针尺寸:6cm x 2cm。

√    电缆长度:21厘米。


下图所示的传感器探头由两个大的焊盘组成,用于测试土壤的电导率。本篇文章的目的是通过测量土壤湿度来演示如何使用如此有趣的传感器,并在Arduino串口显示器或诺基亚5110 LCD上其中该值。


所需的组件

●    土壤湿度传感器

●    Arduino Uno开发板

●    诺基亚5110 LCD显示屏

●    面包板

●    跳线


原理图

如下图所示连接组件。

humidity-and-nokia-5110_bb.png


下面描述了Arduino与土壤湿度传感器之间的引脚连接,以使原理图更易于理解。

土壤湿度传感器引脚
Arduino引脚
VCC
5V
GND
GND
SIG
A0

请再次确认连接,以确保一切均已正确连接。


代码

本文提供了两个Arduino草图。第一个适用于那些愿意在串口监视器上显示数据的人,而第二个草图包含在诺基亚5110 LCD显示屏上显示土壤湿度百分比所需的代码。由于我们已经在本网站的多个教程中介绍了诺基亚5110 LCD显示屏的使用,因此,我仅解释第一个草图,其中包含获取土壤水分水平并显示在串行监视器上的代码。


本文代码很简单,因为我们知道Arduino ADC的范围是0到1023,所以我们确定传感器提供的任何读数都将在该范围内,因此,当我们读取土壤湿度传感器提供的模拟值时,我们使用Arduino map函数可将读取的任何值转换为0到100之间的值,表示百分比。然后,该百分比显示在串口监视器或LCD显示屏上。


为了简要说明代码,我们要做的第一件事是声明与湿度传感器连接的Arduino的模拟引脚,然后声明其他变量。

  1. //////////////////////////////////////////////
  2. //        ARDUINO SOIL MOISTURE DEMO        //
  3. //                                          //
  4. //           http://www.educ8s.tv           //
  5. /////////////////////////////////////////////



  6. int sensorPin = A0;  
  7. int sensorValue = 0;  
  8. int percent = 0;
复制代码

接下来,我们介绍void setup()函数,在该函数中初始化串行通信,以便可以在串口监视器上显示数据。

  1. void setup() {
  2.   Serial.begin(9600);
  3. }
复制代码

接下来是void loop()函数。首先在代码中,我们读取传感器的值,然后调用转换为百分比的函数转,然后在串口监视器上显示转换后的值。

  1. void loop() {
  2.   
  3.   sensorValue = analogRead(sensorPin);
  4.   percent = convertToPercent(sensorValue);
  5.   printValuesToSerial();
  6.   delay(1000);
  7. }
复制代码

转换为百分比函数的代码如下所示。如前所述,它接受模拟值,并使用Arduino map函数将其转换为百分比值。

  1. int convertToPercent(int value)
  2. {
  3.   int percentValue = 0;
  4.   percentValue = map(value, 1023, 465, 0, 100);
  5.   return percentValue;
  6. }
复制代码

上述步骤与第二个草图相同,我们只需要包括诺基亚5110 LCD显示器所需的依赖项。


演示效果

将代码上传到Arduino并在土壤传感器浸在相当干燥的土壤中的情况下设置系统,您应该会看到LCD /串口监视器显示土壤中的水量,如下图所示。

Demo.jpg

向土壤中添加少量水,土壤中的电阻会降低,您可以在LCD/串口监视器上立即看到变化,如下图所示。

demo2.jpg


该项目是向智能灌溉系统迈出的重要一步,因为可以将土壤水位的变化设置为激活继电器,以在水位低时启动给水厂的泵。以上就是本篇文章的所有内容,请在本帖下面对进行回复,留下您遇到的问题。

跳转到指定楼层
碌碌无为
发表于: 2020-10-20 21:54:09 | 显示全部楼层

若想对这个测量值进行校对,是否会比较麻烦些?谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-23 14:53 , Processed in 0.037429 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表