Plant Moisture Monitor

Hi All,
I'm looking to add a plant moisture monitor of some sort to my expanding project list... I've tried a 9v battery, led and two probes but that was a bit simple. I was wondering if a single probe connected to an analog pin could use some sort of ADC trickery to give me a value based on how moist the plant is? Ideally I'd have this connected to a lcd screen for displaying values. I've not really researched this at all, just thought I'd see if there are any suggestions.

[EDIT] Botanicalls ( ) make exactly what I'm after, minus the twitter. I'm going to ready up adc conversion...


Is this what you're looking for?

I'm working on a similar thing, and I've found this site: OWL2c and conductivity to be most helpful. Basically they say you have to measure moisture with AC, because electrolysis will cause problems with your readings over time if you simply use a DC resistance measure. While I have built a PCB that has 3 of the 555 based moisture measurement circuits, I have yet to see it work well; I have my garden on an timer based drip irrigation system, but I don't see change in soil moisture after these waterings. I think I still need to come up with a better moisture probe. Once I get though some of my current non-moisture related issues, I'm going to focus on the moisture sensor design. I've found this site: to have a scientific approach to moisture sensors. They have and approach where you heat up a gypsum block and measure the time it takes for the heat to dissipate as a measurement for soil moisture which I find interesting. While I'm posting links from my notes, this site, , is interesting, and is the sort of thing I want to do as I test out various moisture sensors.

The Botanicalls is interesting, but I think it is more focused on the Tweeting part and not on an accurate soil moisture measurement.


The usual problem with Soil Moisture measurements is poor long-term stability.

AC is needed as an applied signal because of electrolysis effects.

Here's a design that uses Arduino and an H-Bridge like we use for motor control:

It's basically this:

The idea is to take a series of readings in both polarities and average them. When not reading, set probes so no voltage is across them to minimize electrolysis.

I don't see any code posted for this yet.. more search needed.. Not sure how this can be calibrated other than by experience.

I don't think the 57K resistance is critical...

Let us know what you get working...

I'll build one of these when I get back to Vermont this Summer. Right now I'm in a desert in Saudi Arabia :sweat_smile:

You may also want to have a look at a circuit I found recently. It's a capacitive sensor which should be packed in plastic, electronics don't come in contact with the wet earth.

Readings shouldn't become less reliable because of corrosion and another advantage is that it can't be influenced by the amounts of nutrients (salts) in the soil.

You may need google translate though, it's written in German.

The usual problem with Soil Moisture measurements is poor long-term stability.
AC is needed as an applied signal because of electrolysis effects.

or if you are using an Arduino, just don't apply the measurement potential all the time. Just turn on the positive end (one digital output), wait a millisecond for things to settle, take a reading, turn the measurement plus voltage off again.

Do this once a minute or whatever you need and I electrolysis effects will not be measurable.

Unless you require accurate readings, then a simple potential divider with the soil as one resistor and a fixed resistor as the other (connected to a digital output as described above) should tell you if things are getting too dry.

You will need some kind of electrodes that don't corrode.

Keep it simple. You probably just need one resistor and some electrodes for this :slight_smile:

Hey i am just wondering on which parameters the ranges are defined in the program for moisture sensors like 'if it's value is less than 800 then it's gonna need watering again if it's drowning the value must have crossed 800.'Now from where they have got this 800? what is it? what is the unit of it?How they measured it?.PLEASE REPLY.


Arduino controllers have an Analog to Digital Converter (ADC) with a resolution of 10 bits.
It gives you the possibility to read a voltage between 0 and 5 volts in 1024 steps (10 bits).

You can calculate the voltage by multiplying (5 /1024) * the number you get from an analog pin, 800 in this case translates to about 3.9 volts.

This has been my experience. I'm using stainless steel probes which are only powered for a few seconds while taking a measurement, and are then powered in reverse for the same duration to minimise any cumulative electrolytic effects. The readings respond sensibly to changes in the soil moisture content and remain stable (as far as I can tell) for several months, but then start to drift and eventually become completely unreliable. If I simply remove and reinsert the probe, it goes back to normal. I suspect the surface of the probe is getting contaminated by something non-conductive, perhaps air bubbles or something. My solution is to simply move the probe every month or so.

About this, I'm trying to do what can be read here:

But I have a problem. I try circuit with multisim. This is the schema:

But the plot of the ossiloscope is this:

As you can see, the output of my circuit is a square wave but not 0-5V. It's -2.5 to 2.5 volts.

I don't want to try it with my arduino, because I will burn it, but what am I doing wrong not to get a 0-5V square wave ?

Everything else is working fine (I mean frecuency and so on).

Maybe a problem of Multisim ??

Best regards