Imp001 - Gardening moisture sensor

Hello everyone,
I have a project for my bachelor degree that consists in implementing a network of moisture sensors that can monitor the moisture in plants soil. My question is: which sensor should I choose? I researched about this topic and found there are resistive and capacitive sensors. What is the difference in implementation with imp001? Basically which is better to use?
I am kinda new on this. Here is what I found:

Thank you in advance

Hi @aross -

I don’t have a lot of personal experience, but a quick Google search seems to suggest that the capacitive sensor might be the more reliable alternative for you … (i.e. it would minimize electrode corrosion, and yield more repeatable results).

You shouldn’t have a problem interfacing either sensor with an Imp. I couldn’t find any technical info on the resistive sensor link you provided, but believe it is very likely simply a voltage output. Here’s a reference to a similar sensor.

(Edit: ok, I just read the fine print and see that the little interface board associated with your sensor has a comparator which compares the voltage output of the sensor to a fixed level, so only gives you a high/low output. You would have to bypass this if you wanted to get some sort of actual moisture reading).

This said, I like that the capacitive sensor provides an I2C interface, also very easy to interface to the Imp, which (in my opinion) would be preferred to a voltage interface … I like digital interfaces whenever possible. Unlike the (unmodified) resistive sensor, you could also read some sort of moisture level. I also like that it appears to be well supported by the fellow making them (though I really don’t understand the graphs provided … would need to follow up on that).

Anyway, at first glance I think I would start down the capacitive sensor path (even though a bit more costly per device) given what appears to be increased reliability and easier interface.

If all you want is capacitive detection, you don’t even need a sensor: you can monkey it up out of an oscillator and the imp’s pulse-counter. See the Flora design at


Nice … thanks for the link Peter … had forgotten this was out there. (Too many projects … so little time). I try to keep tuned in to the various moisture/water sensor threads. Have got a couple ideas on the back burner - water alarm, snow depth measurement, etc. - I’d like to implement at some point.

Does there happen to be any gerbers out there anywhere for the Flora layout … or just Altium?

Thank you very muck for your replies. Unfortunately, my solution was to use a bunch of transceivers linked to the imp, so that i wouldn’t purchase so many imps for a network of flower pot sensors. (I don’t know yet if i’m aiming too high on this project. I could use only one imp for one flower pot) The oscillator idea wouldn’t work, but I appreciate the promptitude. I think i will go with the capacitive one, LarryJ, thank you again.

seeedstudio has two sensors… I bought some of the cheaper ones, but this one looks much more interesting

Looks good, but i need a cheaper solution. I can’t afford to buy like 5 or more of those plus the other expenses. Anyway, thank you for your reply. I’ll consider it for further research.

Did you see this one? I have several laying beside me in a pile of things to work on… I could test it for you if you like.

Yes, i saw it. That is the resistive type if I’m not mistaken. I wanted a comparison between those two types of sensors: which is easier to implement with the imp and which is more efficient and durable so i can know where to start from. I’m guessing that if you think that could help my “cause”, I would appreciate the effort. :slight_smile:

Hi all. The flora sample code is ideal as a base for a small project I have - but there is one thing I do not understand. “Start the oscillator” pin9 is configured Digital_out then set to 1 with write(1)
How does thus work as an oscillator?
What do I not know?
Thanks Bill.

level_sensor_en_high <- hardware.pin9;
level_sensor <- hardware.pin1;

level_sensor.configure(PULSE_COUNTER, 0.01);

// disable level sensor

function sample() {
local count;
local level;

// turn on oscillator, sample, turn off
count =;

The Tindie capacitive soil moisture sensor that you linked to in the OP works really well. I’ve used it for indoor plants and the results are quite repeatable. The I2C address can be changed so more than one can be used on the bus, although the total bus length would need to be short, maybe a few metres at most.

pin9 on the flora is connected to the power pin of a schmitt trigger inverter. This, along with the parasitic capacitance generated from the trace running down into the earth/liquid (next to a ground trace) and a resistor forms an oscillator, which the pulse counter measures the frequency of.

A real sensor is a lot more accurate, but the flora worked fine for things like sending text messages when a rabbit’s water bottle was getting low :slight_smile: