目录

Ⅰ 简介

Ⅱ 工作原理   

Ⅲ 传感器特性及应用场景

1.核心特性

2.应用场景

3.优缺点对比

4.典型案例

Ⅳ 使用方法

电路原理图

接线说明

详细代码:


Ⅰ 简介

        土壤湿度传感器是一种用于测量土壤中水分含量的设备。它可以帮助用户监测植物生长环境的湿度状况,从而在植物需要浇水时提供指示,避免过度或不足灌溉。SparkFun提供的土壤湿度传感器有多种型号,包括基本型、带螺丝端子型和Qwiic接口型,适用于不同的应用场景和用户需求。

Ⅱ 工作原理   

       土壤湿度传感器是基于土壤的导电性,通过传感器上的两个裸露金属电极片(探针),在土壤中充当可变电阻。当土壤中的水分增加时,导电离子越活跃,导电性增强,导致探针之间的电阻降低。传感器通过测量这种电阻变化来推断土壤的湿度水平。具体来说,传感器输出一个与土壤湿度成比例的模拟信号,该信号可以被微控制器(如Arduino)读取并转换为湿度值。

Ⅲ 传感器特性及应用场景

1.核心特性

  • 工作电压:3.3-5V DC,兼容常见单片机系统。
  • 尺寸与结构:探针长度约5-10cm,裸露金属片设计,无防护涂层,成本极低(约5−10)。
  • 精度与误差:受土壤盐分、温度影响大,误差可达±10%以上,需频繁校准。
  • 短期使用:适合干燥或低盐分土壤,长期使用易因电极腐蚀导致精度下降。
  • 防护等级:未标注IP防护,需额外封装防水。

2.应用场景

  • 自动化园艺:通过阈值触发水泵,当土壤湿度低于设定值时启动灌溉。例如,阳台盆栽监测,结合Arduino实现无人照料。
  • 小规模农田低成本监测:在预算有限的情况下,快速部署多个传感器进行湿度粗略监测,指导初步灌溉决策。但需注意盐碱地或长期使用时的误差问题。
  • 临时短期环境监测:如植物生长实验中,快速获取土壤湿度趋势数据,无需高精度。

3.优缺点对比

特性 优点 缺点
成本 极低(5−10) 精度低,易受干扰
易用性 插入即用,无需复杂配置 需定期清洁电极,防止腐蚀
适用场景 短期、低盐分环境 长期户外或盐碱地不适用
输出方式 模拟/数字信号,兼容性强 需额外模块处理信号

4.典型案例

  • 智能花盆
    • 配置:SparkFun传感器 + Arduino + 继电器水泵。
    • 逻辑:当模拟输出电压低于阈值(对应低湿度)时,触发水泵浇水。
    • 问题:在北方硬水地区,钙沉积可能导致电极腐蚀,需每月清理。
  • 教学实验
    • 配置:SparkFun传感器 + 树莓派数据采集。
    • 目标:对比不同土壤类型(黏土、砂土)的湿度变化。
    • 结果:学生直观理解电阻与湿度的关系,但需手动校准数据。

Ⅳ 使用方法

  • 电路原理图

  • 接线说明

        以Arduino UNO R3为例,如图所示将SparkFun土壤湿度传感器的VCC和GND引脚依次连接Arduino的5V和GND引脚,将传感器的SIG数据引脚接入Arduino的模拟输入引脚(如A0等)。

详细代码:

1.通过模拟输入引脚读取数值,进而判断土壤中的水含量

/***********************************************
 * 作者:会电焊的ESP32
 * 项目:使用土壤湿度传感器获取土地水含量
 * 难度:@
***********************************************/

#define Soilpin A0

void setup() {
  Serial.begin(9600);
}

void loop() {
  int SoilValue = analogRead(Soilpin);

  Serial.print("Soil Humidity: ");
  Serial.println(SoilValue);

  delay(500);
}

 2.通过通过土壤湿度传感器判断土壤中的水含量,从而实现对连接水泵继电器的自动控制

将继电器的VCC和GND引脚接Arduino的5V和GND引脚,控制IN引脚接Arduino的2号数字引脚。接着,将水泵接入继电器控制端的NO、NC和COM端,详细来说NC常闭端悬挂不接,N0常开端接水泵正极,COM端接12V锂电池负极,水泵负极接12V锂电池正极。(注意:水泵等接入继电器的外接设备需要通过锂电池单独供电,不能直接使用Arduino的5V进行供电,否则可能会少回主板或导致外接设备工作异常)

/***********************************************
 * 作者:会电焊的ESP32
 * 项目:土壤湿度传感器控制继电器水泵
 * 难度:@@
***********************************************/

#define SoilPin A0       // 土壤湿度传感器引脚
#define RelayPin 2       // 继电器控制引脚(接水泵)
#define DryThreshold 75  // 湿润阈值
#define WetThreshold 40  // 干燥阈值

void setup() {
  Serial.begin(9600);
  pinMode(RelayPin, OUTPUT);
  digitalWrite(RelayPin, HIGH); // 初始化阶段关闭继电器(根据实际继电器模块进行调整,这里是低电平触发,若为高电平触发则改为LOW)
}

void loop() {
  // 读取土壤湿度值
  int SoilValue = analogRead(SoilPin);
  
  // 映射到百分比
  int Humidity = map(SoilValue, 1023, 0, 0, 100);
  
  // 串口输出调试信息
  Serial.print("Soil Value: ");
  Serial.print(SoilValue);
  Serial.print(" | Humidity: ");
  Serial.print(Humidity);
  Serial.println(" %RH");

  // 水泵控制逻辑
  if (Humidity < WetThreshold) {
    Serial.println("Pump ON!");
    digitalWrite(RelayPin, LOW); // 启动水泵(根据继电器模块调整电平)
  } 
  else if (Humidity > DryThreshold) {
    Serial.println("Pump OFF!");
    digitalWrite(RelayPin, HIGH); // 关闭水泵
  }

  delay(1000); // 每秒检测一次
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐