Soil moisture sensor(YL-69) CN: 두 판 사이의 차이

아두위키 : Arduwiki
(새 문서: {{#seo:|title=Arduino维基:Arduino土壤湿度传感器(YL-69)指南|title_mode=append|keywords=Arduino, 信息科学, 创客学习, 性能评估, 土壤湿度传感器(YL-69), Arduino项目, 毕业设计项目, Arduino示例代码|description=介绍如何使用Arduino控制土壤湿度传感器(YL-69)(基本信息、电路、示例代码)。可用于信息科学和创客课程。}} 가운데|class=coders100 == '''概...)
 
(차이 없음)

2025년 3월 26일 (수) 22:20 기준 최신판


概述

土壤湿度传感器(YL-69)用于测量土壤的含水量。它在农业、园艺、环境监测等多个领域得到应用,在维持作物健康和生产力方面发挥着重要作用。与Arduino等微控制器一起使用时,可以实时监测湿度值。


工作原理

YL-69传感器使用两个电极来测量土壤的电导率。随着土壤含水量的增加,电阻值降低,导致电导率增加,这个值被转换为模拟信号并传送给微控制器。


规格

List 描述
灵敏度调节 通过旋转PCB上的可变电阻器可以调节灵敏度设置
Voltage 3.3V - 5V
Output Mode 支持数字输出和模拟输出

数字输出: 超过阈值时输出LOW,否则输出HIGH 模拟输出: 输出0到1023之间的值

安装便利性 有固定螺栓孔,易于安装
Size PCB: 3cm x 1.6cm

探针部分:约2cm x 6cm

电源和输出指示 电源指示灯(红色)和数字开关输出指示灯(绿色)
Chip LM393


使用示例

1. 在串行监视器上检查土壤湿度传感器输出

此示例通过串行监视器检查传感器的模拟输出值。


1-1. 电路配置

YL-69土壤湿度传感器支持数字和模拟输出,有四个引脚:VCC、GND、DO和AO。对于模拟输出,将AO引脚连接到Arduino的A0引脚。

YL-69 Pin Arduino
VCC 5V
GND GND
AO A0

1-2. Arduino Code

const int sensorPin = A0;

void setup() {
    Serial.begin(9600); // Start serial communication
}

void loop() {
    int sensorValue = analogRead(sensorPin); // Read sensor value
    Serial.print("Soil moisture level : "); 
    Serial.println(sensorValue); // Print sensor value
    delay(1000); // Wait a second
}


1-3. 执行结果


2. 在LCD上显示土壤湿度传感器值和浇水需求

此示例在LCD上显示传感器的模拟输出值,并根据该值指示是否需要浇水。

有关LCD的详细信息,请参阅LCD(Liquid Crystal Display)_CN文档。


2-1. 电路配置

YL-69 Pin Arduino LCD Pin Arduino
VCC 5V VCC 5V
GND GND GND GND
AO A0 SCA A4(Uno) / 20(Mega)
SCL A5(Uno) / 21(Mega)


2-2. Arduino Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// I2C LCD initialization: address 0x27, columns 16, rows 2
LiquidCrystal_I2C lcd(0x27, 16, 2);

// YL-69 sensor pin definition
const int sensorPin = A0;

void setup() {
    lcd.init();
    lcd.clear();
    lcd.backlight(); // Turn on backlight
    Serial.begin(9600); // Start serial communication
}

void loop() {
    int sensorValue = analogRead(sensorPin); // Read sensor value
    Serial.print("Soil moisture level: ");
    Serial.println(sensorValue); // Output to serial monitor

    // Display value on LCD
    lcd.clear(); // Clear LCD screen
    lcd.setCursor(0, 0); // Move cursor to the first column of the first row
    lcd.print("water : ");
    lcd.print(sensorValue); // Output sensor value
    lcd.setCursor(0, 1); // Move cursor to the first column of the second row
    if (sensorValue > 500)
      lcd.print("Please Water");
    else
      lcd.print("Enough Water");

     delay(1000); // Wait for 1 second
}


2-3. 执行结果

当没有水时,LCD上显示"Please Water"。


当有水时,显示"Enough Water"。


3. 使用土壤湿度传感器与LCD和LED

此示例在前一个示例的基础上添加了LED。如果土壤干燥,LED关闭;如果有足够的水,LED点亮。


3-1. 电路配置

3-2. Arduino Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// I2C LCD initialization: address 0x27, columns 16, rows 2
LiquidCrystal_I2C lcd(0x27, 16, 2);

// YL-69 sensor pin definition
const int sensorPin = A0;
const int ledPin = 3;

void setup() {
    lcd.init();
    lcd.clear();
    lcd.backlight(); // Turn on backlight
    Serial.begin(9600); // Start serial communication
    pinMode(ledPin, OUTPUT);
}

void loop() {
    int sensorValue = analogRead(sensorPin); // Read sensor value
    Serial.print("Soil moisture level: ");
    Serial.println(sensorValue); // Output to serial monitor

    // Display value on LCD
    lcd.clear(); // Clear LCD screen
    lcd.setCursor(0, 0); // Move cursor to the first column of the first row
    lcd.print("water : ");
    lcd.print(sensorValue); // Output sensor value
    lcd.setCursor(0, 1); // Move cursor to the first column of the second row
    if (sensorValue > 500) {
        lcd.print("Please Water");
        digitalWrtie(ledPin, LOW); // Turn off the LED
    }
    else {
        lcd.print("Enough Water");  
        digitalWrtie(ledPin, HIGH); // Turn on the LED
    }

    delay(1000); // Wait a second
}

3-3. 执行结果

当没有水时,LCD上显示"Please Water",LED关闭。


当有水时,显示"Enough Water",LED点亮。


这个设置可以通过加入水泵等其他组件来进一步扩展,创建自动浇水系统。