Water level sensor (exposed-trace board)
The red water level / rain-depth sensor (S, +, −) pinout, why it corrodes in days, powering it only while reading, and safe 3.3 V wiring on ESP32 and Pico.
Community draft — report a mistake
3.3 V or 5 V? S can reach the supply voltage. Power the + pin from 3.3 V (or from a GPIO) on ESP32 and Pico, from 5 V on Uno, and S is always safe for your ADC.
This small red board has interleaved copper traces connected through a transistor. Water bridging the traces lets current flow, so the S output rises the deeper the board sits in water — about 0 to 4 cm of sensing length. It’s used for rain gauges, flood and leak alarms, and “is there water in the pot” checks.
It’s a cheap way to learn analog reading, but it has two real limits. First, corrosion: with constant DC power the traces dissolve within days to weeks. Switching power on only while you read (a GPIO to the + pin, read, then LOW) makes it last months. Second, the output is non-linear and depends on water quality, so it’s a level indicator, not a depth gauge.
For tank level, use a float switch, a JSN-SR04T ultrasonic sensor, or a capacitive sensor that never touches the water.
Prices are indicative (Nov 2026) and vary by seller.
Pinout
| Pin | What it does |
|---|---|
S | Analog output — rises as more of the traces are under water |
+ | 3.3–5 V supply. Best fed from a GPIO set HIGH only while reading (about 20 mA). |
- | Ground |
Use it with
Common errors
Traces turned green or black within a week
Electrolysis: DC current through the water eats the copper. Power the sensor from a GPIO only for the few milliseconds you read it, then switch it off.
Reading doesn’t match the depth
It isn’t linear and depends on how mineral-rich the water is. Calibrate by dipping it to known depths in your own water, and treat it as low / half / full rather than millimetres.
Board stopped working after it got wet
Only the traces are meant to get wet — the transistor and pins at the top must stay dry. Mount it so water never reaches the header.