第四篇、基于Arduino uno,获取土壤湿度传感器的原始值和含水量——结果导向

news/2024/11/9 0:39:19/

0、结果

说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含水量,如果是你想要的,可以接着往下看。

1、外观

说明:虽然土壤湿度传感器形态各异,但是原理和代码都是适用的。

 

2、连线

说明:只需要连接三根线。
uno————土壤湿度传感器

    5V--------------VCC
GND--------------GND

    A0--------------A0

3、源程序

说明:采用非阻塞方式编写,一定时间检测一次土壤湿度,并将对应功能进行函数化,方便移植。

/****************************************soil part****************************************/
/*Note:It is necessary to test the simulated value of completely dry soil first,and then measure the simulated value of soaked water.These two values are the values of 0~100 water content,and the other water content is within this range.Because the simulated value is inversely proportional to the water content,it needs to be looked at backwards.
*/
#define maxSoil 1024                                                    //The maximum value of the soil read
#define minSoil 400                                                     //Minimum value read from the soil
#define soilTimeInterval 1000                                           //Soil moisture was measured once every 1000 milliseconds
#define soilHumPin A0                                                   //A0 Indicates the original read dataunsigned long soilTimes = 0;                                            //Record the device running time
int soilHumidityData = 0;                                               //Current measured air humidity
int soilWaterContent = 0;                                               //Water content in soil
/***********************************set up and loop part*********************************/
void setup() {Serial.begin(9600);                                                   // open serial port, set the baud rate to 9600 bpsSerial.println("Go online!");
}
void loop() {getSoilHumData();                                                     //Soil moisture acquisition
}
/****************************************soil part****************************************/
/*Soil moisture acquisition*/
void getSoilHumData() {if (millis() - soilTimes >= soilTimeInterval) {soilTimes = millis();soilHumidityData = analogRead(soilHumPin);                          //Obtain the soil moisture valuesoilHumidityData = constrain(soilHumidityData, minSoil, maxSoil);   //Limit the fetched values to a rangesoilWaterContent = map(soilHumidityData, minSoil, maxSoil, 100, 0); //Map the restricted value to the water contentSerial.print("Original value: ");Serial.print(soilHumidityData);                                     // The serial port displays the corresponding valueSerial.print(" , ");Serial.print(" Water content: ");Serial.print(soilWaterContent);                                     // The serial port displays the corresponding valueSerial.println(" %");}
}

4、注意事项

说明:程序中的两个值需要特别提示一下,maxSoil 这个值表示土壤检测传感器在空气中的一个模拟值,minSoil这个值表示土壤检测传感器百分之八十在水中的一个模拟值,这两个值来模拟含水量0和含水量100% ,这两个值需要您实际测量得到。

5、基本原理

土壤湿度检测传感器的原理是通过测量土壤中的电导率来判断土壤湿度。

当土壤湿度较低时,土壤内部的电阻很大,电导率很低,反之当土壤湿度较高时,土壤内部的电阻很小,电导率很高。因此,土壤湿度检测传感器通常会在传感器的两个电极之间施加一个微小的电流(通常为几毫安的直流电流),并测量电阻值或电导率,来判断土壤的湿度情况。

一般来说,土壤湿度检测传感器的电极需要插入到土壤深度 10 至 15 厘米的位置,这样可以获得较为准确的湿度信息,因为表层的土壤湿度和根系区的土壤湿度会有一定的差异。


http://www.ppmy.cn/news/77109.html

相关文章

el-table如何实现筛选功能,以及filters,filter_method详解

在 ElementUI 的 el-table 组件中,提供了一个 el-table-column 组件的 filters 属性,可以用于对表格数据进行筛选操作。通过设置 filters 属性可以在表头中添加筛选菜单,用户可以通过选择菜单中的选项来过滤表格数据。 具体来说,可…

关于C语言的杂记5

文章目录 引入正文内部函数与外部函数相关数组的知识点数组的初始化测试一维数组在内存中存储的地址:遍历二维数组的值测试二维数组的地址(观察内存情况)数组下标为0开始的由来 两个数交换位置的三种方法 引入 写在前面:关于C语言这部分内容,…

[答疑]UML精粹里和你视频里说的不太一样

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 第五元素 2023-4-14 20:32 这是是UML精粹里的。潘老师,这个跟你视频里讲的是不是不太一样?还是我理解错了? UMLChina潘加宇 这个&#…

CRM客户管理系统开发 获客管理营销全搞定

企业经营管理是有很大学问的,无论是生产经营、销售、服务还是客户管理、维护、营销都是需要付出一定的人力物力来管理的。传统的企业管理多是通过人工方式来完成,个中细节繁琐复杂,耗时耗力还很容易出现纰漏。所以随着科技的发展,…

QDir拼接路径解决各种斜杠问题

一般在项目中经常需要组合路径,与其他程序进行相互调用传递消息通信。 经常可能因为多加斜杠、少加斜杠等问题导致很多问题。 为了解决这些问题,我们可以使用QDir来完成路径的拼接,不直接拼接字符串。 QDir的静态方法QDir::cleanPath() 是为了规范化路径名的,在使用QDir组…

pthread多线程: 线程泄漏的检测

文章目录 1. 目的2. 什么是线程泄漏3. pthread 线程泄漏例子3.1 代码3.2 编译和运行3.3 简要分析 4. 检测线程泄漏4.1 编译链接时传入参数 -fsanitizethread4.2 确认 TSAN_OPTIONS 环境变量 5. 修复线程泄漏5.1 方法1: 主线程等待子线程5.2 方法2:子线程…

SSRF-服务器端请求伪造

漏洞定义和成因 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它…

6. python的for循环

文章目录 一、for循环1.1、for循环分析1.2、注意事项 二、遍历数值列表2.1、range()函数的使用2.2、 创建数值列表2.3、对数值列表进行简单统计 一、for循环 有时,我们需要对列表内的所有元素逐一进行相同的操作,为避免出现大量重复的代码,p…