Grove Ap308 Technical Manual
The Ap308 is a capacitive soil moisture sensor from the Seeed Studio Grove ecosystem. I've used a bunch of these across greenhouse automation and home garden projects over the years. This one isn't special — it does the same job as a dozen other moisture sensors, but it has some gotchas that aren't obvious from the spec sheet. Here's what you actually need to know before you wire it up and trust your data to it. It outputs an analog signal proportional to soil capacitance, which means you're measuring water content indirectly through dielectric change. That's the same principle as most capacitive sensors — water has a much higher dielectric constant than dry soil or potting mix, so as moisture increases, capacitance increases, and the sensor reads higher. Simple enough in theory. In practice, soil composition, temperature, and even fertilizer salts can throw off readings significantly.
Grove Ap308 Technical Manual
The pinout follows standard Grove connector layout: VCC on one side, GND on the other, and the analog signal on the center pin. It runs on 3.3V to 5V logic, which means it plays nice with Raspberry Pi GPIO headers, Arduino boards, ESP32 setups, and pretty much any microcontroller you'd actually use in a project. The connector is a 4-pin JST PH, which Seeed uses across their entire product line, so cable swapping between modules is straightforward if you have a few spare Grove cables lying around. The operating voltage range is 3.3V to 5.5V DC. The current draw is roughly 3mA at 5V, which is negligible compared to most actuators you'd pair it with — pumps, relays, solenoid valves, that sort of thing. Output impedance sits around 10k ohms, so you want your ADC input to have high impedance on the receiving end. If you're reading it directly through an Arduino's built-in 10-bit ADC, you're probably fine for most applications, but you'll hit noise issues if you run long cable runs without some kind of filtering. I should note that the Grove Ap308 Technical Manual doesn't specify absolute accuracy. That's by design — these sensors are meant for relative monitoring and threshold-based triggering, not precision agriculture-grade measurements. If you need ±1% volumetric water content accuracy, look elsewhere. For "is my plant dying or not" type of decisions, this is adequate.
The actual calibration process is the part people skip and regret later. Take your sensor, stick it in the exact soil mix you're using, then record values at two known states: bone dry and fully saturated. Dry means you've let the pot sit for a few days with no watering until the reading stabilizes at its lowest point. Saturated means you've soaked it thoroughly and waited for surface water to drain away — not sitting in a puddle, just thoroughly wet. Map those two endpoints to your desired percentage scale using linear interpolation in your code. Without this step, the raw ADC values are basically useless numbers that shift every time you change pots or soil brands. Here's the edge case nobody talks about: if you're using this sensor in a project where the soil dries out repeatedly over weeks and months, the capacitance baseline drifts. I had a setup in a rooftop greenhouse where the Ap308 readings would slowly creep upward over three to four weeks even when I wasn't changing anything about the watering schedule. Turned out the organic matter in the potting mix was breaking down and changing the dielectric properties of the soil matrix. The workaround was simple but annoying — I added a monthly recalibration routine that re-saturates the soil, records the new max, then lets it dry completely to record the new min. The code then interpolates against those fresh endpoints. It adds about 20 seconds of downtime to the monthly cycle but keeps the readings honest. Another thing that trips people up: these sensors are vulnerable to electrolytic corrosion if you power them continuously. The Grove Ap308 Technical Manual mentions this briefly in a footnote, but I've seen corroded probes after just a few months of constant DC excitation. The solution is to only power the sensor when you're taking a reading — wire it through a transistor or relay controlled by your microcontroller, or use a GPIO pin to switch VCC on and off. A 500-millisecond dwell time is plenty for the capacitor to settle. This cuts corrosion lifetime by a factor of maybe ten or fifteen and makes negligible difference to your sampling rate unless you're reading more than once per second, which you almost certainly aren't.
Get the Full Details

Wiring it to an ESP32 for a basic monitoring station takes about five minutes. Connect Grove VCC to 5V, GND to ground, and the signal pin to any ADC-capable GPIO. The ESP32 has a 12-bit ADC, so you'll get readings from 0 to 4095 instead of the Arduino's 0 to 1023. Map those to your calibrated soil moisture percentage range in the sketch. I usually add a running average of 10 samples to smooth out the inherent noise — capacitive sensors are just noisier than resistive ones in dry conditions, and a little averaging makes the output readable without introducing significant lag. If you're building something more serious than a hobby garden project, consider adding a hardware low-pass filter. A simple RC filter with a 10k ohm resistor and a 100µF capacitor on the signal line before it hits your ADC will clean up most of the high-frequency noise. Don't go overboard on capacitance though — too much and you'll start getting sluggish responses when the soil moisture actually changes rapidly after watering. The sweet spot is usually somewhere between 47µF and 100µF depending on your sampling rate. The Grove Ap308 Technical Manual lists a measurement range of 0 to 100% relative soil moisture, but that's a software-scale definition, not a physical limit. The sensor will physically respond beyond those bounds — you'll get readings below zero or above 100 if your calibration points aren't tight. Clamp your values in software rather than relying on the sensor to behave.
One more nuance: temperature affects capacitive soil moisture readings. Not dramatically, but enough that if you're monitoring plants across seasons without recalibration, your winter readings will drift. The dielectric constant of water changes with temperature, and since the sensor is measuring the composite dielectric of soil-water-air, colder soil reads slightly different even at the same moisture content. For most home garden applications this doesn't matter. If you're running a commercial greenhouse with heating and cooling cycles, factor in a temperature compensation coefficient or recalibrate seasonally. The Grove Ap308 is an entry-level sensor. It's cheap, it's easy to integrate, and it works well enough for non-critical applications. If you need industrial-grade reliability or long-term stability without maintenance, there are better options — capacitive sensors with sealed probes and factory calibration, or even time-domain reflectometry-based solutions if budget allows. But for under twenty dollars per unit with Grove compatibility, it's hard to beat for a first pass at soil monitoring. The download for the Grove Ap308 Technical Manual is available directly from the Seeed Studio documentation page. It covers the electrical specs, pin definitions, and basic calibration guidance. I'd recommend printing it or saving it locally since documentation pages on their site get updated and rearranged periodically. The manual itself doesn't change dramatically between revisions — they mostly add new examples and fix typos.
Build the circuit, calibrate it in your actual soil, implement the corrosion-prevention trick, and you'll have a soil moisture monitor that gives you reliable readings for months without constant babysitting. The first month of setup is the only hard part. After that it's just checking that the sensor hasn't been knocked loose or the soil hasn't compacted enough to change the reading baseline.
