Soil Moisture Sensing
Our goal is to measure the moisture of soil using electrical conductivity. Normally this will result in corroded probes due to electrolysis. You can find a discussion of this at the gardenbot website.
One option is to use platinum wire for the positive side (anode), as we did in the Gel Box project. Other possibilities include stainless steel, galvinized steel, nichrome, and titanium.
There are also options to reduce oxidation using electrical control. We can only turn on the sensor circuit when we want to make a measurement (for example, running it a few milliseconds once per minute). We can also reverse the current between measurements (i.e. alternating current).
A related goal is measuring the water level in a supply tank. This can be done using the same circuit used to measure soil moisture. We could avoid corrosion issues or using a sonar sensor or capactive sensor outside the supply tank.
For the plant watering kit we are using a modified Grove moisture sensor (from Seeed Studio). We use nickel chromium wire for the cathode and titanium wire for the anode. We modify the control circuit so that it is only energized when the Arduino turns it on (for a few milliseconds). For example, In the PlantWatering sketch, we turn the sensors on for less than 2 milliseconds every 10 seconds. This will keep the sensors in working order for several years. We also clip the 5V line in the cable so that it does not get corroded due to stray drips of water.
Here's our soil moisture sensor:
Here's our water sensor (for measuring whether a water supply bucket is empty):