# Ways to make a "How hard is it raining?" detector for personal use?

Is there a consensus on the "heaviness" of rain? and Relationship between Probability of Precipitation and Predicted Amount of Rain remind me of a gedankenexperiment of mine. I like to imagine a home project Arduino or Raspberry Pi-based weather monitor that lets me know the precipitation situation outside.

The "state of the art" for electronic hobbyists is the interdigitated electrode sensor, which is the way it is because it's easy to mass produce cheaply as a printed circuit board, not because it's a good idea.

Source: Last Minute Engineers' How Rain Sensor Works and Interface it with Arduino

This resistance is inversely proportional to the amount of water:

• The more water on the surface means better conductivity and will result in a lower resistance.
• The less water on the surface means poor conductivity and will result in a higher resistance.

The sensor produces an output voltage according to the resistance, which by measuring we can determine whether it’s raining or not.

Earth scientists, amateur and professionals alike will tear out their hair since 1) a puddle may tell you if it has rained, but not if it's raining and 2) conductivity of rainwater varies dramatically, so conductivity is will not correlate directly to amount or area covered.

Question: What are ways to make a "How hard is it raining?" detector for personal use?

I'm thinking of a laser pointers, photodiodes, rainproofed PiCamera modules, microphones, level sensors, but the sky's the limit. What needs to be addressed is how "rained on" I'm going to feel when I go outside, and a static puddle detector is not going to do that very well.

• Use a funnel with a very narrow exit. First of all, it will be self emptying so no need to do that in between rain weathers. Then to use it you just need to weigh it. Say that 1 cl/h pours out through the funnel and the current weigh corresponds to 9 cl of water, then it rains 10 cl/h.
– d-b
Jul 18, 2021 at 16:29
• Quick brainstorm idea (hence a comment): array of the smallest cheap piezo-detectors you can find. Raindrops hits will show up as spikes. Count these and you get an approximate hit/area number. Compare this with the water mm (collect water in bottle, measure height, should be simple), get the ratio of incoming water volume per area and the droplet number per area, and you get an (approximate) average size of droplets. Could be an interestig experiment to see what kind of weather produces what sizes. Jul 18, 2021 at 21:34
• I like the idea from a Berenstain Bears book I had when I was younger. TV was forbidden from the house for a week, and one objection raised was how they would know what the weather is. The solution was stick your hand out the window and see if it's raining. Sometimes simple is best. Jul 19, 2021 at 7:01
• @jpmc26 I can imagine it :-) I'm poor and have at times lived in incredibly small one-room apartments without windows, or with windows with no real access to the sky due to floors above and adjacent buildings, so there have really been times when I would like to know what's going on with the sky before venturing down the stairs and outside and then having to turn around and walk back up several floors to adjust.
– uhoh
Jul 19, 2021 at 7:10
• There are much better answers, but my initial thought was, if you want to use the resistance setup in the picture, just tilt it sideways enough so that the water constantly runs off, and divide the result by the cosine of the angle. Jul 19, 2021 at 18:21

If you're open to a more mechanical solution, I'd suggest building a "tipping bucket rain gauge", best explained by a picture (source: https://www.researchgate.net/figure/Sideview-of-tipping-bucket-Rain-Gauge_fig4_304297354):

This should be relatively easy to build and it's trivial to read this electronically by detecting the time it takes to tip. It seems like this is also the way that "real" weather stations measure rainfall. This is what a professional unit of this kind looks like: https://www.hyquestsolutions.de/products/hardware/meteorology/model-tb3-tipping-bucket-rain-gauge-1-1-1-1-1-1-1-1-1-1-1-1-1

• I see, so for a "How hard is it raining?" detector that gives some information quite soon after it starts raining (we need something in real time, not historical) we should make the funnel area to bucket volume ratio as large as possible.
– uhoh
Jul 18, 2021 at 16:07
• The firs bucket emptying tells us something is happening, but we don't know if it filled up quickly or was almost full already; the time between the first and second empty is our first actual rate measurement.
– uhoh
Jul 18, 2021 at 22:16
• For realtime data, set up a weight sensor between the bucket and the base and differentiate the weight. Jul 19, 2021 at 9:47
• And a DIY one is relatively straightforward. Jul 19, 2021 at 11:48
• @uhoh: a friend had one of these that registered a tip every 0.1 inch of rain. He wanted it to register every 0.01 inch, so fitted a much larger funnel. The problem was that in heavy rain the bucket couldn't keep up because it had to tip so fast. The part full bucket is not such a problem. Your first data point is between the first and second tips. Jul 19, 2021 at 14:25

Upon reading the question my first thought was, please define what is meant by "how hard is it raining?".

My initial tangent thought was "what about the impact energy of the rain" - heavy rain can be felt. Anyone who has heard rain fall on a metal or poly-carbonate roof will know the difference in noise produced by light and heavy rain.

The impact energy of rain will be determined by the size of the rain drops, their length of fall and the density of rain drops for a given area. Some researchers have investigated the potential to harvest the kinetic energy of rain. Other's have even investigated the sound pressure produced by rain drops and its potential effect on soil erosion.

Back to your proposed electronic rain intensity device. I think the "resistance plate" type of sensor might be using the wrong type of sensor. One of the problems I see with such a sensor is once it is totally or mostly inundated with water how does one determine rainfall intensity when additional raindrops don't affect the inundation level and hence the electrical resistance produced by the sensor?

A digital accelerometer or pressure sensor connected to a system that can record the impact pressure and the time of impact would be a better system.

A simple analog device would be placing a microphone to the underside of a piece of sheet metal and connecting the output from the microphone to a sound meter - the louder the sound, the heavier the rain.

Using a horizontal laser beam with a light receptor or a doorway beam, as used in shops or restaurants, etc., could also be used where the rain intensity would interfere with the amount of light received by the light sensor. One of the situations where such a device would not work would be during fog.

• mm/h can be converted to L/m²/h, but not L/m² directly. Jul 18, 2021 at 13:37
• Yes. The "hardness" of a rainfall isn't simply how much water falls per unit time. You can have a "soft" rain with small drops falling under the influence of gravity & air resistance, that still deposits quite a bit of water. At the other end of the scale, you can have large drops driven by wind and/or downdrafts (as in a western thunderstorm) that really hits hard. An accelerometer connected to a flat plate, or maybe a hemisphere, would seem like the best bet. Also see the Irish rain scale: ps://www.dailyedge.ie/irish-rain-scale-1275040-Jan2014/ Jul 18, 2021 at 16:19
• +1 for the "light receptor" suggestion, which is how aviation weather stations differentiate between light/moderate/heavy precipitation (visibility range determines intensity). There is a separate "precipitation-at-all" sensor, which tells the device if the low visibility is due to fog or precipitation. Jul 20, 2021 at 0:08
• Random aside, but the sound of rain on metal is always lovely to hear - a project based around measuring that and converting it into some sort of heaviness scale seems certainly enticing! Jul 21, 2021 at 0:13

One way to do that is to estimate how much water is changing. If you can ignore the spill over, then that is approximately how much the puddle is changing.

Another idea you can use is to measure the changing weight of a rain gauge (that will need to be emptied daily, unless you can rig something that will do that for you). The faster the weight increases, the heavier it is raining. Even though it may cause a measurement problem, I would say a wider gauge will accumulate more weight, and you would just have to do some math with the density of water and the translation to a standard rain gauge for proper display.

• Yes, this really addresses the problem; a person going outside cares more about the recent rate, not about accumulation. I'll bet every time a droplet hits the puddle of the conductivity sensor, or the electronic weight sensor there is also a tiny transient or pulse. I wonder if counting those and even measuring their amplitudes might be possible?
– uhoh
Jul 18, 2021 at 3:45
• @uhoh That's overcomplicating things and you're still measuring a secondary signal that isn't what you're actually looking for (ie: the rate of water falling in mm/h or whatever). A simple rain gauge with a sensor to measure the depth of water would let you calculate the accumulation rate. Measuring weight also works, but depth is usually cheaper and easier to measure. The only thing you'd need to add is an automated dump valve when it got full. This would let you continually measure the rainfall rate and would let you record accumulation as well.
– J...
Jul 18, 2021 at 14:11
• re: emptying, you could just make it a pythagorean cup so it siphons off (mechanically, and with no moving parts!) when it goes above a certain level Jul 19, 2021 at 6:49
• @uhoh I think you'll discover that when it's raining "big ol' fat rain" that the accumulation rate is also considerably higher than when it's a "little bitty stingin' rain" ;)
– J...
Jul 19, 2021 at 13:17
• @uhoh And your direction of travel. If you're cycling with the wind then you get less wet, so yeah, add a wind vane to your weather station, but you still only need a cylinder for the rain gauge.
– J...
Jul 19, 2021 at 13:33

It's not perfect, but a simple solution to the issue of a puddle building up on the resistance plate is to tilt the plate a bit, so that instead of the water building up on the plate it runs off. Your device would then look for sudden drops in resistance, indicating that a droplet has formed on the device, followed by the resistance rising again after the drop has rolled off of the plate

• Oh I like this! There may need to be three or four tilted by the same amount but in different azimuthal directions since if there's wind the rain will be falling slanted, but that's fine. I think I will definitely try to implement this and compare it directly to other methods. Thanks!
– uhoh
Jul 18, 2021 at 23:25
• @uhoh depending on your manufacturing method, make it a cone (maybe some other shape of rotation that lets the water run off faster/slower as needed?) so that it is completely independent of wind direction Jul 21, 2021 at 13:45

I would approach this by counting pings on a plate with an attached piezo or microphone. The amplitude of the ping will give the volume of the drop and the number of pings the drop quantity. This is a more robust real-world interface than an electrode sensor.

• This is the right answer! I once had a car with an actual, working "how hard is it raining" sensor that would start the windshield wipers on intermittent as soon as a few raindrops hit the windshield and made the wipers go more frequently or at full speed when the rain got more intense. When the rain stopped, the wipers stopped. It actually worked very well. It had a piezo sensor on the windshield and interpretation of the signal was done by the computer in the body module. It was a 2007 Hyundai Azera.
– MTA
Jul 18, 2021 at 20:43
• Coincidentally microphones are mentioned in the question ;-) I like this solution a lot. One might need to do some work to correlate the nature of the pulses with both drop size and their velocity but I like this because it clearly tells you the difference between "pitter-patter" and "raining cats and dogs".
– uhoh
Jul 18, 2021 at 23:01
• The amplitude of a ping won't give the volume of the drop, unless it's perfectly calm. A drop driven by a strong wind will have a larger amplitude than one simply falling. Of course that goes back to the OP's poor definition of the "hardness" of a rainfall. Jul 19, 2021 at 1:38
• Weatherflow's new no-moving-parts personal weather station works this way. It's surprisingly good... but I think they rely on quite a bit of DSP to make it that way :) Jul 19, 2021 at 2:08
• @MTA could you fool the sensor by drumming your fingers on the windshield? Jul 21, 2021 at 1:02

A 'video disdrometer' is a device for characterizing raindrop size distributions. Professional versions (e.g A 1D distrometer) can use a video camera to image the shadow cast by water droplets moving in front of a bright light. So one DIY approach might be a camera imaging rain drops falling through a gap.

Delft university have put up an instructable for an audio distrometer, although their version lacks the signal processing required for quantitative measurements.

Both these approaches would probably need access to a tipping bucket rain gauge to calibrate intensities (and maybe a hosepipe to simulate the rain!)

• This sounds fun! Thanks for the links.
– uhoh
Jul 20, 2021 at 12:22

I sort of accidentally did this in one of my projects in a complicated, backhanded sort of way.

I installed 16 soil moisture sensors in my yard as part of an attempt to track the distribution of water in the soil of a flower garden.

The sensors are battery powered. They transmit their data via Bluetooth Low Energy to a couple of WiFi enabled control nodes in the yard. From the control nodes, the data are collected in a database on a Raspberry Pi. Besides the standard data from the sensors (soil moisture, temperature, illumination, conductivity of the soil, and battery state of the sensor,) the control nodes also report how many attempts they had to make when reading the data from each sensor.

I used the "read attempts" data to assign sensors to control nodes so as to reduce the read tries. This makes the data collection more reliable and also reduces the power drawn from the CR2032 coin cells in the sensors.

What I found on reviewing the data from a couple of months was that the read attempts would rise before the soil moisture readings when it started raining.

The rain attenuates the Bluetooth signal enough to corrupt the data packages. It can take several attempts to read a sensor while it is raining, even though the same sensor will be read flawlessly on the first try every time when it is not raining.

I could add more sensors placed further from the control nodes, then shorten the poll time from once an hour to every few minutes. With a little data processing, I could have an online "rainfall" page telling me how hard it is raining - or I could look out the window before I go outside.

This is what a typical "rainy day" looks like:

Not raining:

The soil moisture distribution is shown in the upper section. The lower section shows the read try count. Black is the normal "read on the first try" color.

Rain has just started:

The read count has gone up on nearly all the sensors, but there hasn't been enough rain to make a difference in the soil moisture.

Raining harder:

The soil moisture has gone up, and the read tries have gone up even more, indicating hard(er) rain.

Rain has stopped:

The soil moisture has gone up quite a bit compared to before the rain started. The read tries count has dropped back down to one for all sensors.

This kind of setup would be massive over kill just to tell if it is raining, but it is a nifty side effect of the setup if you already have it in place for other reasons.

I could use the received signal strength indication (RSSI) value, but I didn't write that function into the control node software. The Bluetooth library can probably supply the data, I just don't have the control nodes programmed to do it. Maybe I ought to change it...

As an alternative, you could use a WiFi sniffer to collect data about WiFi base stations around your house or appartment. I know from experience with my own phone that I can detect fewer of my neighbors' WiFi base stations on rainy days.

The data normally includes a received signal strength indication (RSSI.) Lower (more negative) numbers means a weaker signal.

Track the data for all the WiFi base stations your sniffer can receive then apply some data processing and maybe some machine learning, and you could get a "how hard is it raining" indicator without installing any hardware outside your house.

• I'd mentioned the laser pointer in the question as a suggestion for an optical "raindrops still in the air" detection scheme, but an RF-based scheme is really interesting, and exploiting ambient RF for it is an excellent idea!
– uhoh
Jul 19, 2021 at 8:46
• I happened to have a lot of "ambient RF" going on with my little Bluetooth sensors. The Wifi thing occurred to me while describing the current set up. It reminded me that the WiFi from the control nodes occassionally doesn't connect to the base station in the house - mostly on rainy days. That reminded me of the neighbors' WiFi as seen when connecting my phone at home and... I get carried away sometimes. Anyway, if you go RF based then the WiFi system would be the cheapest - provided you've got neighbors close enough to "see" their base stations.
– JRE
Jul 19, 2021 at 8:51
• Bluetooth and "classic" WiFi are (usually) around 2.4 GHz, I wonder if 5 GHz WiFi is more, or less sensitive.
– uhoh
Jul 19, 2021 at 9:00
• Could be. Maybe there's a whole new area of research here. Investigation of short range effects rain fall and relative humidity on low power microwave signals
– JRE
Jul 19, 2021 at 9:16
• @uhoh: I've added RSSI to the data collection for the Bluetooth sensors and the control node WiFi. I'll see what kind of rain indications I can get from that - though it may take a while. We've got sunny weather predicted for the next few days.
– JRE
Jul 19, 2021 at 21:42

You could connect a funnel to a water wheel. The faster it spins the higher intensity of the rain.

This sensor was selected randomly, as should not be consider something I specifically endorse.