Guide for 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 right), and the probe with two pads, that detects the water content (at the left).




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


For this example, you’ll need the following components:

  • 1x YL-69 moisture sensor 
  • Arduino UNO – read Best Arduino Starter Kits
  • 1x Breadboard
  • 2x 220 Ohm Resistors
  • 1x Red LED
  • 1x Green LED
  • Jumper wires



Pin Wiring


Wiring your sensor to the Arduino is pretty simple:


Wiring to Arduino Uno


Analog Pins


Digital Pins









To complete the project, follow these schematics:






Upload the following sketch to your Arduino board:



 All the resources for this project:



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);





view rawProjects/soil_moisture_sensor_arduino.ino

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).



Wrapping Up

The moisture sensor allows to monitor the water content in the soil. This is useful if you want to build an automatic watering system. You can also use it to just monitor your plants soil moisture.

I hope you’ve found this guide useful. Have you used this sensor in any of your projects?

Let me know by leaving a comment below. 

Les commentaires sont clôturés