Example Code for Arduino-Sensor Calibration

Last revision 2025/12/17

This project provides code to calibrate the Capacitive Soil Moisture Sensor by reading its analog output when exposed to air and water. Users will learn how to determine the sensor's dry (AirValue) and wet (WaterValue) boundary values for subsequent soil moisture detection.

Hardware Preparation

  • DFRduino UNO x1
  • Capacitive Soil Moisture Sensor x1
  • Jumper Cable x3

Software Preparation

Wiring Diagram

Connect the sensor and the main control board according to the picture below.

Color port
Red VCC
Black GND
Yellow Signal

Ambient Light Sensor Diagram

Calibration Code

Before using the sensor, we need to calibrate to get the measurement range of the sensor.

void setup() {
  Serial.begin(9600); // open serial port, set the baud rate as 9600 bps
}
void loop() {
  int val;
  val = analogRead(0); //connect sensor to Analog 0
  Serial.println(val); //print the value to serial port
  delay(100);
}

Calibration

Calibration Range

SEN0193-test.png

  1. Open the serial port monitor and set the baud rate to 9600

  2. Record the sensor value when the probe is exposed to the air as "Value 1". This is the boundary value of dry soil “Humidity: 0%RH”

  3. Take a cup of water and insert the probe into it no further than the red line in the diagram

  4. Record the sensor value when the probe is exposed to the water as "Value 2". This is the boundary value of moist soil “Humidity: 100%RH”

The components on this board are NOT waterproof, do not expose to moisture further than the red line. (If you want to protect components from the elements, try using a length of wide heat shrink tubing around the upper-section of the board.)
There is an inverse ratio between the sensor output value and soil moisture.

Section Settings

The final output value is affected by probe insertion depth and how tight the soil packed around it is. We regard "value_1" as dry soil and "value_2" as soaked soil. This is the sensor detection range.
For example: Value_1 = 520; Value_2 = 260.
The range will be divided into three sections: dry, wet, water. Their related values are:

  • Dry: (520 430]
  • Wet: (430 350]
  • Water: (350 260]

Was this article helpful?

TOP