Raindrop Sensor Module with LM393 Analog and Digital Outputs The Raindrop Sensor detects water droplets on a large plated sensing board and provides both analog and digital outputs. It is suitable for rain alarms, automatic window or sunroof projects, smart lighting triggers, and weather-station prototypes. The module uses an LM393-style comparator for the digital threshold output and also exposes an analog voltage for estimating droplet coverage. For comparator background, see the TI LM393 product page; for Arduino wiring, it pairs well with an OpenELAB Sensor Shield V5. The detection board is made for contact with droplets, but the electronics still need protection. Dry the board after testing and avoid corrosive liquids for long-term reliability. Technical Specifications Parameter Value Sensor type Raindrop / water droplet detection module Comparator LM393 dual comparator class circuit Output types AO analog output and DO/S digital output Operating voltage 3.3 V / 5 V Sensing board area Approx. 5.0 x 4.0 cm Surface finish Nickel-plated conductive traces Sensitivity adjustment Onboard potentiometer Digital behavior Typically high when dry, low when wet Pinout GND, VCC, S/DO, A/AO Connector 2.54 mm pitch pin header Development support Arduino, ESP32, STM32, Raspberry Pi Pico ADC/GPIO Board Layout & Label Guide Sensing plate: Large conductive area where raindrops bridge traces. LM393 comparator: Creates a clean digital threshold output. Potentiometer: Adjusts digital wet/dry trigger point. G pin: Power ground. V pin: 3.3 V or 5 V power input. S/DO pin: Digital rain detection output. A/AO pin: Analog droplet-level output. Application Scenarios 1. Rain or Water Presence Monitor Read the sensor surface and print a simple moisture level for roof, window, or tabletop experiments. const int ANALOG_PIN = A0; const int DIGITAL_PIN = 2; void setup() { pinMode(DIGITAL_PIN, INPUT); Serial.begin(115200); } void loop() { int wetLevel = analogRead(ANALOG_PIN); bool wetSwitch = digitalRead(DIGITAL_PIN) == LOW; Serial.print("analog="); Serial.print(wetLevel); Serial.print(" digital_wet="); Serial.println(wetSwitch ? "yes" : "no"); delay(200); } 2. Automatic Cover Trigger Use a threshold to trigger a servo, relay, or warning output when water is detected. const int SENSOR_PIN = A0; const int OUTPUT_PIN = 8; const int WET_THRESHOLD = 500; void setup() { pinMode(OUTPUT_PIN, OUTPUT); } void loop() { int wetLevel = analogRead(SENSOR_PIN); digitalWrite(OUTPUT_PIN, wetLevel > WET_THRESHOLD ? HIGH : LOW); delay(100); } 3. Moisture Trend Logger Average several samples before logging so droplets, fog, or touch events are easier to compare. const int SENSOR_PIN = A0; void setup() { Serial.begin(115200); } void loop() { long total = 0; for (int i = 0; i < 16; i++) { total += analogRead(SENSOR_PIN); delay(5); } Serial.print("average_wet_level="); Serial.println(total / 16); delay(1000); } Packing List 1 x Raindrop Sensor FAQ Q: Can this module work with Arduino?A: Yes. Connect VCC, GND, and the signal pin to an Arduino-compatible board or an OpenELAB Sensor Shield V5. Q: Can it work with 3.3 V controllers?A: Yes for the listed 3.3 V to 5 V modules, but keep analog output within the controller ADC range. Q: Is calibration required?A: For threshold or quantitative use, calibrate in the final installation and record baseline readings. Q: Can I use long wires?A: Shorter wires are better for analog stability; use averaging in firmware if readings fluctuate. Q: Does the module output precise engineering units?A: Most of these modules provide relative analog or digital signals, not certified measurement data. Q: What should I check first if it does not trigger?A: Verify power, ground, pin mapping, threshold setting, and whether the signal is active-high or active-low. Q: Is it suitable outdoors?A: Only with enclosure protection. Keep connectors and electronics away from water and corrosion. Q: Can it drive a relay or motor directly?A: No. Use the module as an input to a controller, then drive a suitable relay or motor driver.