Soil moisture sensor(YL-69) CN
概述
土壤湿度传感器(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点亮。
这个设置可以通过加入水泵等其他组件来进一步扩展,创建自动浇水系统。