Soil Moisture Sensor Module

Helps determine amount of moisture in soil. Description The Soil Moisture Sensor Module determines the amount of...
Vendor: Keszoox
$1.39
$2.39
$1.39

Shipping

The shipping fee depends on your address

Standard: 9-15 business days,fee is down to $3.99

Express: 4-7 business days,fee is down to $5.99

Support Customization

WE'RE READY TO BUILD A CUSTOM PRODUCT FOR YOU.

If you're looking for a custom product, we can help. Kindly contact us via email support@keszoox.com and send us the details for your need, then we'll let you know how we can deliver the right solution.

Built And process your order

We make into production usually Within 1 - 3 Bussiness Days.

Expect customization orders.
Soil Moisture Sensor Module

Soil Moisture Sensor Module

$2.39 $1.39

Soil Moisture Sensor Module

$2.39 $1.39

Helps determine amount of moisture in soil.

Description

The Soil Moisture Sensor Module determines the amount of soil moisture by measuring the resistance between two metallic probes that is inserted into the soil to be monitored.  This can be used in an automatic plant watering system or to signal an alert of some type when a plant needs watering.

PACKAGE INCLUDES:

  • Soil Moisture Sensor Module
  • Fork shaped soil probe
  • 5-wire F/F interface cable, 8″ long

KEY FEATURES OF SOIL MOISTURE SENSOR MODULE:

  • Analog output of moisture content
  • Digital output of moisture content with adjustable set-point
  • 3.3 or 5V operation.  Low power so may be driven from digital pin on MCU

These sensors work by measuring the resistance between the two probes of the fork that is inserted into the soil.  That resistance will depend mostly on the moisture content of the soil.  The resistance affects a voltage divider and so an analog voltage output is available which can be read by an analog input on a MCU that roughly corresponds to the moisture content of the soil.

The more moisture in the soil, the lower the resistance.  A low resistance gives a low analog voltage reading.  As the soil dries out, the resistance increases.   The higher the resistance (drier the soil), the higher the voltage will be.

Besides the analog output, there is also a LM393 comparator IC that provides a HIGH output when that analog voltage goes above a certain level.  A potentiometer on the module allows the set-point of this digital output to be adjusted.  This output could be used to drive a relay to activate a small water pump to water the plant without necessarily having a MCU in the loop.  An LED lights when this output goes HIGH.

Besides moisture, there are other factors that can affect the resistance including minerals that are dissolved in the water which can come from fertilizers and other sources.  The full length of the forks should be inserted into the soil, but the upper part with the electrical connections should remain dry to minimize corrosion.  The depth that the forks are inserted will affect the readings and therefore should be kept reasonably constant.

Module Connections

On the electronics module there are 2 header connectors.

1×4 Header Connector

  • VCC = 5V or 3.3V.  May be powered from a digital output pin on a MCU
  • GND = Ground, must be common with the MCU
  • D0 = Digital output of comparator circuit.  May be connected to MCU or directly to a 5V relay or similar device
  • A0 = Analog output usually connected to an analog input on a MCU

1×2 Header Connector

  • Connect both pins to the 2 pins on the fork shaped soil probe.  Polarity does not matter.

OUR EVALUATION RESULTS:

It is not possible to directly define an actual percentage of moisture in the soil from the measurements taken, but it is fairly straightforward to define basic ranges for what would be considered ‘too dry’, ‘too wet’ and ‘just right’.

To do that, measure the soil under 3 basic conditions:

  1. When dry enough so that the plant should be watered
  2. When watered so it has the desired amount of moisture that would be ideal for the plant
  3. When watered so the soil is too wet and not ideal for the plant.

From those 3 measurements, ranges for each of the 3 conditions can be initially determined and then honed in on once the setup goes into operation.

On most MCUs like Arduino, the ADC is 10-bit, so the measurement has a range of 0-1023. When the sensor is dry in open air, the ADC will read close to the upper limit of 1023.  In my own test, that reading was 985-1000.  When the sensor was inserted into a cup of clean water, the reading dropped to about 445.  Adding a little salt to increase conductivity as you might have from minerals dissolved in the water in the soil lowered the reading to about 300.

With our test plant, we got the following readings:

  1. Dry enough that the plant should have already been watered was up around 850 – 950
  2. Just right was in the 600 – 700 range
  3. Too wet was down in the 200-400 range

Based on that data, the program below defines the following ranges:

  1. < 500 is too wet
  2. 500-750 is the target range
  3. >  750 is dry enough that we should water the poor thing.

The program reports the digital output status as well as the analog but doesn’t do anything with it.  The trip point can be set with the pot and it could be used to trip a buzzer alarm or LED if the soil gets too dry or something.  I found it convenient to wire a red and green LED on the MCU I was experimenting with.  Green meant everything was fine and Red indicated the plant was either too wet or too dry and needed attention.

The probes are made from a PCB board with plated copper traces and corrosion will take its toll on the sensor probes over time.

Having power applied to the probe electrodes speeds the rate of corrosion significantly, so to minimize that issue the device can be powered off of a pin on the MCU so that it can be turned on only when a measurement is being taken.  Total power draw with both LEDs lit is about 8mA so that is easily within the drive capability of a MCU  Since soil doesn’t dry out very quickly, readings can be spaced relatively far apart depending on your environment, perhaps just once or twice a day.

The program below powers the device off a digital pin on the microcontroller and takes a measurement every second for test purposes.  It takes the analog and digital measurement separately mainly for illustrative purposes.  These could be combined and only power the device up once for both readings if both are required.

The program is using pin A0 for the analog reading but this can be any analog pin.  Similarly pin 8 is doing the digital reading and pin 9 is being used to power the module, but these can be changed to any 2 digital pins as needed.

Soil Moisture Sensor Module Test Program

/*  Soil Moisture Sensor Module Test

   Monitor soil moisture analog output 'A0' on ADC input A0
   Monitor soil moisture digital output 'D0' on digital input pin 8
   Power the module off of digital output pin 9 only when taking a measurement
   to reduce corrosion rate of the sensor probe.
*/
// Define pins used below
#define ADC_PIN A0     // Use any available ADC Pin, connect to A0 sensor pin
#define DIGITAL_PIN 8  // Use any available digital pin, connect to D0 sensor pin
#define PWR_PIN 9      // Use any available digital pin, connect to VCC sensor pin
#define SOIL_WET 500   // Define max value we consider soil 'wet'
#define SOIL_DRY 750   // Define min value we consider soil 'dry'

//===============================================================================
//  Initialization
//===============================================================================
void setup()
{
  Serial.begin(9600);          // Set Serial Monitor window comm speed

  pinMode(PWR_PIN, OUTPUT);    // Set pin used to power sensor as output
  digitalWrite(PWR_PIN, LOW);  // Set to LOW to turn sensor off at start
}
//===============================================================================
//  Main
//===============================================================================
void loop()
{
  int returnedADCData = readSoilADC();        // Read sensor analog output
  Serial.println(returnedADCData);            // Print raw ADC data
  Serial.print("\tDigital Output = ");      
  Serial.print(readSoilDigital());           // Read sensor digital output and print directly

 if (returnedADCData < SOIL_WET) {           // Determine status of our soil moisture situation
  Serial.println("\tConclusion:  Soil is too wet");
 }
 else if (returnedADCData >= SOIL_WET && returnedADCData < SOIL_DRY) {
  Serial.println("\tConclusion:  Soil moisture is perfect");
 }
else {
  Serial.println("\tConclusion: Soil is too dry - time to water!");
}
  delay(1000);      // Take a reading every second for test purposes.
                    // Normally we would take reading perhaps every 12 hours
}

//===============================================================================
//  Function readSoilADC returns the analog soil moisture measurement
//===============================================================================
int readSoilADC()
{
  digitalWrite(PWR_PIN, HIGH);       // Turn sensor power on
  delay(25);                         // Allow power to settle
  int val_ADC = analogRead(ADC_PIN); // Read analog value from sensor
  digitalWrite(PWR_PIN, LOW);        // Turn sensor power off
  return val_ADC;                    // Return analog moisture value
}
//===============================================================================
//  Function readSoilDigital returns the digital soil moisture value
//===============================================================================
int readSoilDigital()
{
  digitalWrite(PWR_PIN, HIGH);            // Turn sensor power on
  delay(25);                              // Allow power to settle
  int val_Digital = digitalRead(DIGITAL_PIN); //Read the digital value from sensor
  digitalWrite(PWR_PIN, LOW);             // Turn sensor power off
  return val_Digital;                     // Return digital moisture value
}

BEFORE THEY ARE SHIPPED, THESE MODULES ARE:

  • Sample tested per incoming shipment

Notes: 

  1. None

Technical Specifications

 Operating Ratings
        Vcc  Range  3.3 to 5V
        I(typ) With both LEDs lit < 8mA
       Vout  Analog Output  2V to 5V (typ)
Dimensions
 Sensor Probe Board L x W (PCB) 60 x 20mm (2.4 x 0.8″)
 Sensor Electronics Board L x W (PCB) 30 x 15mm (1.2 x 0.6″)
 Cable Length 20cm (8″)

WE'RE READY TO BUILD A CUSTOM PRODUCT FOR YOU.

Contact us:
Support@keszoox.com
What we can help:
If you're looking for a wire or cable assembly, we can help.
What we need your help next:
Kindly contact us via email support@keszoox.com and send us the details fo your need, then we'll let you know how we can deliver the right solution.

Shipping Policy

All orders are dispatched from our warehouse. The shipments are fully tracked—from our door to yours. Please allow 3-5 business days for your order to be processed in addition to the shipping times below.

Shipping Times

Standard: 9-15 business days. Express: 4-7 business days.

Please note that shipping providers are extremely busy during this time, and some orders might experience a delay on top of usual delivery times. If your order is late, please allow 5-10 days more than indicated in standard shipping times before contacting our customer service. Thank you for your understanding.

Tracking

All orders are 100% tracked. You’ll receive an email with a tracking number and a link to track your parcel once your order leaves our warehouse. Please allow 24-48 hours for the tracking link to start showing shipping information.

Related Products

Recently Viewed Products