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

news2024/12/23 23:21:58

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 data

unsigned 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 bps

  Serial.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 value
    soilHumidityData = constrain(soilHumidityData, minSoil, maxSoil);   //Limit the fetched values to a range
    soilWaterContent = map(soilHumidityData, minSoil, maxSoil, 100, 0); //Map the restricted value to the water content

    Serial.print("Original value: ");
    Serial.print(soilHumidityData);                                     // The serial port displays the corresponding value
    Serial.print(" , ");
    Serial.print(" Water content: ");
    Serial.print(soilWaterContent);                                     // The serial port displays the corresponding value
    Serial.println(" %");
  }
}

4、注意事项

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

5、基本原理

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

( 数组) 27. 移除元素 ——【Leetcode每日一题】

❓27. 移除元素 难度:简单 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以…

港联证券|“面值退”增多凸显A股市场化进程良性态势

近日,多家陷入“1元退市”危机的公司纷纷发布风险提示公告称,公司股票存在可能因股价低于面值被终止上市的风险。据《经济参考报》记者不完全统计,今年以来,沪深两市已有10余只个股锁定“面值退”,其中多以披星戴帽公司…

Navicat “1205 - Lock wait timeout exceeded; try restarting transaction“

标题标题:解决Navicat数据库操作报错:1205 - Lock wait timeout exceeded; try restarting transaction 导言: 在使用Navicat进行数据库操作时,有时会遇到错误代码为"1205 - Lock wait timeout exceeded; try restarting t…

JavaWeb10(实现结算查看订单订单详情)

目录 一.效果预览 二.实现思路 2.1 实现结算 ①形成订单,并赋值 ②将订单插入到数据表tb_order中,同时将该订单所对应的订单项插入到数据表tb_orderitem中 2.2 查看我的订单 ①底层代码 ②前端绑值 2.3 查看订单详情 ①页面跳转,传…

面试时,公司的什么表现让你一看就知道不靠谱?

01 面试的时候让你根据他们需要做方案的公司一律不靠谱,百分之99是套方案的。 你想如果业务负责人自己都不知道自己要干什么,要么他自己没想清楚,要不他本身是水货!这样的leader怎么爬上来的不用说了吧,而且跟着他学不…

汽车EDI:如何与斯柯达Skoda建立EDI连接?

大众汽车在汽车行业具有全球销量领先、技术创新、质量标杆、多品牌战略和可持续发展方面的显著地位。作为一家具有全球影响力的汽车制造商,大众汽车在塑造汽车行业发展和引领未来出行方向方面扮演着重要角色。 目前我们已帮助汽车行业的客户成功对接大众汽车旗下的…

【MATLAB第35期】基于MATLAB的2023年改进的进化算法优化LSTM时间序列预测模型思路

【MATLAB第35期】基于MATLAB的2023年改进的进化算法优化LSTM时间序列预测模型思路 一、思路 拿第34期的棕熊算法举例: 优化途径: (一)种群初始学习改进 (1)反向学习(OBOA) (2)准反…

Electron 搭建开发环境(Windows 11系统)

目录 前言一、环境说明二、Node.js安装1.官网下载2.安装3.验证安装是否成功4.可能错误 三、开发工具1.开发工具2.VSCode 总结 前言 如果想要使用 Electron 进行桌面应用程序开发,首先需要搭建一个开发环境。对于初学者,这可能是一个绕不开的步骤。作为 …

MSP432学习笔记7:定时器A中断

型号:MSP432P401r 今日得以继续我的MSP432电赛速通学习之路...... 今日学习的是定时器A中断! 目录 基础工程在此下载: 更改后的实验演示工程在此下载: 定时器A基础介绍: Timer_A的特性包括: Timer_A…

组态王使用指南|安装包|快速入门教程|含PLC与组态王网口串口通信|速查命令PDF

组态王安装包及安装方法: 组态王7.5 SP3下载安装授权_组态王安装包_城北许工α的博客-CSDN博客 组态王快速入门教程: 组态王教程(基础入门篇).pdf (book118.com) 组态王与PLC通讯: 网口通讯: 西门子1200与组态王TCP通讯 - 知…

Redis7实战加面试题-基础篇(Redis10大数据类型)

说明 刚看完尚硅谷Redis零基础到进阶,最强redis7教程,阳哥亲自带练(附redis面试题) 趁热打铁,根据脑图和视频,对视频中的知识点进行总结,方便以后复习 Redis入门概述 Remote Dictionary Serv…

国家重点研发计划“新型无液氦脑磁图系统研发”项目启动会顺利召开

2023年5月21日,国家重点研发计划“诊疗装备与生物医用材料”重点专项“新型无液氦脑磁图系统研发”项目启动会在京顺利召开。 该项目由北京未磁科技有限公司牵头,与首都医科大学附属北京天坛医院、北京航空航天大学、机械工业仪器仪表综合技术经济研究所…

九、数据仓库详细介绍(元数据)

元数据的文章,网上已经有很多了,元数据相关概念有限所以重复度很高。 我这里只是做个概念汇集,争取给大家介绍的全面一点。 1. 元数据定义 元数据(Meta-data)是描述数据的数据(The data about data&#xf…

怎么提升品牌知名度,小红书母婴赛道分析

小红书平台自创立之初,便以母婴类内容为特色。今天我们来分享下,怎么提升品牌知名度,小红书母婴赛道分析。 一、妈妈用户仍是主流 我们都知道,小红书平台是一个女性用户为主的平台。根据去年的平台用户调查,可以发现&a…

PID控制逻辑基本介绍

PID控制逻辑基本介绍 1. 源由2. PID基本框图3. PID公式变换4. PID参数释义4.1 比例因子Kp4.2 比例积分Ki4.3 比例微分Kd4.4 Kp/Ki关系4.5 Kp/Kd关系 5. 总结6. 附录6.1 了解 PID 控制,第 1 部分:什么是 PID 控制?6.2 Anti-windup for PID con…

【pytorch损失函数(6)】Focal loss, for dense object detection再分析

之前翻译了这篇论文,但是理解还不深。今天借着研究rotation的计划,回顾这篇文章。 论文的主要贡献 Focal loss主要是为了解决目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难…

Segment Anything专题论文和代码汇总

文章目录 2023Scaling-up Remote Sensing Segmentation Dataset with Segment Anything ModelPersonalize Segment Anything Model with One ShotSegment Anything in Medical ImagesMatcher: Segment Anything with One Shot Using All-Purpose Feature MatchingCustomized Se…

【Python】mmSegmentation语义分割框架教程(1.x版本)

文章目录 0.引言1. 数据集设置1.1. dataset implementation py1.2. dataset config py 2.模型设置3.训练 0.引言 \qquad 本文是mmSegmentation语义分割框架教程(0.x版本)的1.x版本。不熟悉mmsegmentation是什么的读者可参考原文的引言部分,熟…

sqlmap命令大全(附详细扫描流程)

一、sqlmap命令大全。 -u 指定目标URL (可以是http协议也可以是https协议)-d 连接数据库--dbs 列出所有的数据库--current-db 列出当前数据库--tables 列出当前的表--columns 列出当前的列-D 选择使用哪个数据库-T 选择使用哪个表-C 选择使用哪个列--dump 获取字段中的数据--…

程序猿想考一个PMP,可以吗,怎么考呢?

我从新考纲考完下来,3A通过了考试,最开始也被折磨过一段时间,但是后面还是找到了方法,也算有点经验,给大家分享一下吧。 程序猿应该是考PMP里面人最多的,毕竟有一个30大坎,大部分人还是考虑转型…