Soil Moisture Sensor YL-69 or HL-69 with Arduino

Soil Moisture Sensor YL-69 or HL-69 with Arduino

Soil Moisture Sensor YL-69 or HL-69 with Arduino

The soil moisture sensor or the hygrometer is usually used to detect the humidity of the soil. So, it is perfect to build an automatic watering system or to monitor the soil moisture of your plants.

The sensor is set up by two pieces: the electronic board (at the left), and the probe with two pads, that detects the water content (at the right).

The sensor has a built-in potentiometer for sensitivity adjustment of the digital output (D0), a power LED and a digital output LED, as you can see in the following figure.

How does it work?

The voltage that the sensor outputs changes accordingly to the water content in the soil.

When the soil is:

  • Wet: the output voltage decreases
  • Dry: the output voltage increases

The output can be a digital signal (D0) LOW or HIGH, depending on the water content. If the soil humidity exceeds a certain predefined threshold value, the modules outputs LOW, otherwise it outputs HIGH. The threshold value for the digital signal can be adjusted using the potentiometer.

The output can be a analog signal and so you’ll get a value between 0 and 1023.

Example: Soil Moisture Sensor with the Arduino

This is a simple example for you to understand how you can use the soil moisture sensor in your projects with Arduino.

In this example, you’ll read the analog sensor output values using the Arduino and print those readings in the Arduino IDE serial monitor.

Parts required

  • soil mosituresensor
  • Arduino Uno
  • 1x Breadboard
  • 2x 220ohm resistance
  • 1xRed Led
  • 1xGreen Led
  • Jumper Wires

Pin Wiring

Wiring your sensor to the Arduino is pretty simple:

PinWiring to Arduino Uno
A0Analog Pins
D0Digital Pins


To complete the project, follow these schematics:


Upload the following sketch to your Arduino board:

int rainPin = A0;
int greenLED = 6;
int redLED = 7;
// you can adjust the threshold value
int thresholdValue = 800;

void setup(){
  pinMode(rainPin, INPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(redLED, OUTPUT);
  digitalWrite(greenLED, LOW);
  digitalWrite(redLED, LOW);

void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(rainPin);
  if(sensorValue < thresholdValue){
    Serial.println(" - Doesn't need watering");
    digitalWrite(redLED, LOW);
    digitalWrite(greenLED, HIGH);
  else {
    Serial.println(" - Time to water your plant");
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);

Open the Arduino IDE serial monitor to see the values. Then, try your sensor in a wet and in a dry soil and see what happens.

When the analog value goes above a certain threshold, a red LED will turn on (indicates that the plant needs watering), and when the value goes below a certain threshold, a green LED will turn on (indicates that the plant is ok).

Watch video Tutorial

2 thoughts on “Soil Moisture Sensor YL-69 or HL-69 with Arduino

Leave a Reply

Your email address will not be published. Required fields are marked *