

The Soil Moisture Sensor is a device designed to measure the volumetric water content in soil. Manufactured by Arduino with the part ID UNO R3, this sensor is widely used in applications such as irrigation management, environmental monitoring, and smart gardening systems. By providing real-time data on soil moisture levels, it enables users to optimize water usage and maintain healthy plant growth.
This sensor is particularly popular in DIY projects and educational environments due to its simplicity and compatibility with microcontrollers like the Arduino UNO R3.








The following table outlines the key technical details of the Soil Moisture Sensor:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V - 5V |
| Output Signal | Analog (0-1023) or Digital (0/1) |
| Current Consumption | < 20 mA |
| Operating Temperature | -10°C to 60°C |
| Dimensions | 60mm x 20mm x 5mm |
| Sensor Type | Resistive |
The Soil Moisture Sensor typically comes with three or four pins. Below is the pin configuration:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply pin (3.3V - 5V) |
| 2 | GND | Ground connection |
| 3 | SIG | Signal output pin (Analog or Digital, depending on mode) |
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply pin (3.3V - 5V) |
| 2 | GND | Ground connection |
| 3 | A0 | Analog signal output pin |
| 4 | D0 | Digital signal output pin (threshold adjustable via potentiometer) |
Connect the Sensor to the Arduino UNO R3:
VCC pin of the sensor to the 5V pin on the Arduino.GND pin of the sensor to the GND pin on the Arduino.SIG or A0 pin of the sensor to an analog input pin (e.g., A0) on the Arduino.D0 pin of the sensor to a digital input pin (e.g., D2) on the Arduino.Adjust the Potentiometer (if applicable):
Upload the Code:
// Soil Moisture Sensor Example Code
// This code reads the analog value from the sensor and prints it to the Serial Monitor.
const int sensorPin = A0; // Define the analog pin connected to the sensor
int sensorValue = 0; // Variable to store the sensor reading
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
}
void loop() {
sensorValue = analogRead(sensorPin); // Read the analog value from the sensor
Serial.print("Soil Moisture Level: ");
Serial.println(sensorValue); // Print the value to the Serial Monitor
delay(1000); // Wait for 1 second before the next reading
}
Inconsistent Readings:
Sensor Not Responding:
Corrosion on Probes:
Incorrect Threshold for Digital Output:
Q: Can this sensor be used in hydroponic systems?
A: No, this sensor is designed for soil-based applications. For hydroponics, consider using a water level or EC (electrical conductivity) sensor.
Q: How do I interpret the analog readings?
A: Analog readings typically range from 0 (dry soil) to 1023 (wet soil). Calibrate the sensor to determine the specific range for your soil type.
Q: Is the sensor waterproof?
A: No, only the probes are designed to be inserted into the soil. Avoid exposing the circuit board to water.
Q: Can I use multiple sensors with one Arduino?
A: Yes, you can connect multiple sensors to different analog or digital pins on the Arduino. Ensure the total current draw does not exceed the Arduino's limits.
By following this documentation, you can effectively integrate the Soil Moisture Sensor into your projects and ensure reliable performance.