Introduction: How to Connect the Sparkfun Soil Moisture Sensor and Read Moisture Values.

In this Instructable, we will teach you How to connect a Sparkfun Soil Moisture Sensor, and how to write its corresponding code with notes. The code will allow you to determine the moisture of the soil through receiving values of high to low.

Step 1: Bill of Materials


multiple wires


Spark fun soil moisture sensor

Step 2: Setting Up the Sensor

to be able to get values from the sensor you have to connect the sensor to the Arduino. Follow the two diagrams accordingly. They are color coated wires that correspond with each other. This is important as the code we use will reference this cable layout.

Step 3: Code

This is the code you will use to upload to the Arduino to get the sensor to function. this code will tell the sensor how to differentiate when water is wet or dry depending on a certain value.

/* Soil Mositure Basic Example

This sketch was written by SparkFun Electronics Joel Bartlett August 31, 2015 Basic skecth to print out soil moisture values to the Serial Monitor Released under the MIT License( */ int val = 0; //value for storing moisture value int soilPin = A0;//Declare a variable for the soil moisture sensor int soilPower = 7;//Variable for Soil moisture Power //Rather than powering the sensor through the 3.3V or 5V pins, //we'll use a digital pin to power the sensor. This will //prevent corrosion of the sensor as it sits in the soil. void setup() { Serial.begin(9600); // open serial over USB pinMode(soilPower, OUTPUT);//Set D7 as an OUTPUT digitalWrite(soilPower, LOW);//Set to LOW so no power is flowing through the sensor } void loop() { Serial.print("Soil Moisture = "); //get soil moisture value from the function below and print it Serial.println(readSoil()); //This 1 second timefrme is used so you can test the sensor and see it change in real-time. //For in-plant applications, you will want to take readings much less frequently. delay(1000);//take a reading every second } //This is a function used to get the soil moisture content int readSoil() { digitalWrite(soilPower, HIGH);//turn D7 "On" delay(10);//wait 10 milliseconds val = analogRead(soilPin);//Read the SIG value form sensor digitalWrite(soilPower, LOW);//turn D7 "Off" return val;//send current moisture value }

When you receive a Low value it corresponds to DRY Soil, while a High value corresponds to WET soil.