FREE SHIPPING for all orders over $40
The HS-S37A Water Level Liquid Detection Sensor is a simple analog water-contact sensor for detecting rainfall, liquid leaks, container level changes, and shallow water depth. As more of the exposed sensing traces contact water, the analog output changes, allowing a microcontroller ADC to estimate relative water level or trigger a warning when liquid is present.
This module is useful for STEM experiments, weather-station rain detection, leak alarms, tank-level demos, and robot safety inputs. It works naturally with boards such as the ELAB Nano V3, breadboard prototypes built with the MB 102 Breadboard Kit, and larger Arduino learning setups using an UNO R3 Prototype Expansion Board.
For stable results, calibrate the dry value and the first-immersion value in the actual liquid and enclosure where the sensor will be used. This is a contact-style water sensor rather than an industrial sealed level transmitter, so keep the controller electronics protected from splashes and corrosion during long-term use.
| Parameter | Value |
|---|---|
| SKU | HS-S37A |
| Product Type | Analog water level and liquid detection sensor |
| Output Signal | Analog voltage proportional to contacted sensing area |
| Typical Supply | 3.3V or 5V microcontroller systems |
| Interface | VCC, GND, signal output |
| Detection Medium | Water and conductive liquids |
| Use Mode | Relative water depth, rain detection, leak detection |
| Host Requirement | ADC-capable microcontroller input |
| Calibration | Recommended for every enclosure and liquid condition |
| Applications | Rain alarms, tank demos, plant trays, leak monitoring, robotics |
Print the analog water level value for calibration.
const int waterPin = A0;void setup() { Serial.begin(115200);}void loop() { int value = analogRead(waterPin); Serial.println(value); delay(300);}
Turn on an LED when liquid is detected above a calibrated threshold.
const int waterPin = A0;const int ledPin = 13;const int threshold = 350;void setup() { pinMode(ledPin, OUTPUT);}void loop() { int value = analogRead(waterPin); digitalWrite(ledPin, value > threshold ? HIGH : LOW); delay(200);}
Map calibrated ADC values to a simple percentage for display or telemetry.
const int waterPin = 34;const int dryValue = 500;const int wetValue = 2600;void setup() { Serial.begin(115200);}void loop() { int raw = analogRead(waterPin); int percent = map(raw, dryValue, wetValue, 0, 100); percent = constrain(percent, 0, 100); Serial.println(percent); delay(1000);}
Use a Pico-style ADC input to detect rain or tray overflow.
from machine import ADC, Pinimport timesensor = ADC(Pin(26))while True: value = sensor.read_u16() print(“wet” if value > 20000 else “dry”, value) time.sleep(1)
Q: Is this sensor digital or analog?
A: It is an analog liquid-contact sensor.
Q: Can it measure exact water depth?
A: It is best for relative depth or threshold detection after calibration.
Q: Can it detect rain?
A: Yes, when mounted so droplets contact the sensing traces.
Q: Can it stay submerged permanently?
A: It is better for experiments and short-term sensing; long-term immersion may cause corrosion.
Q: Does it need an ADC pin?
A: Yes, use an analog input to read the changing voltage.
Q: What should I calibrate?
A: Record dry, first-contact, and target wet readings in your final installation.
Q: Can it detect non-conductive liquids?
A: It works best with water or conductive liquids.
Q: Why are readings drifting?
A: Residue, corrosion, water composition, and unstable wiring can affect readings.
Only logged in customers who have purchased this product may leave a review.