通过温湿度传感器和Arduino串口显示器设计的土壤测量方案

电子说

1.3w人已加入

描述

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

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

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

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

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

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

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

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

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

√    LM393比较器芯片。

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

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

√    电缆长度:21厘米。

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

所需的组件

●    土壤湿度传感器

●    Arduino Uno开发板

●    诺基亚5110 LCD显示屏

●    面包板

●    跳线

原理图

如下图所示连接组件。

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

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

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

代码

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

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

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

//////////////////////////////////////////////

//        ARDUINO SOIL MOISTURE DEMO        //

//                                          //

//           http://www.educ8s.tv           //

/////////////////////////////////////////////

int sensorPin = A0;  

int sensorValue = 0;  

int percent = 0;

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

void setup() {

Serial.begin(9600);

}

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

void loop() {

sensorValue = analogRead(sensorPin);

percent = convertToPercent(sensorValue);

printValuesToSerial();

delay(1000);

}

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

int convertToPercent(int value)

{

int percentValue = 0;

percentValue = map(value, 1023, 465, 0, 100);

return percentValue;

}

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

演示效果

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

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

该项目是向智能灌溉系统迈出的重要一步,因为可以将土壤水位的变化设置为激活继电器,以在水位低时启动给水厂的泵。
编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分