Measuring the speed of flowing water in a stream

I'm looking to make a side project that measures the speed of the flowing water in a nearby stream, to see how the value raises and lowers throughout a day/week timeframe. For now I'm not interested in measuring a calibrated value (actual m/sec units) but just getting an analog value that I can see change with time.

The goal is to build a pole type structure that houses the electronics on top, above the water line, and has a sensor submerged underwater to take a measurement.

What to use for the sensor part is what I'm currently brainstorming. I'm thinking I need to create something akin to a homemade underwater anemometer that spins from the water current, and measures an analog value related to the RPMs.

Is there any sensors out there that does this? One though was to use a DC motor, with fan blades attached to it, and measure the voltage that gets generated by the motor as it spins. Would this work?

As a second thought, if you used a load cell, you could measure the “force” the water exerts.
No moving parts to worry about.

Yes and yes.
A turbine flow meter is common for liquids
A paddle wheel flow meter is also common
Usually a magnet will give pulses that way every thing is waterproof

Long used industrially
An ultrasonic distance sensor can give you level

What about mounting a paddle wheel on a streamlined raft that can rise and fall with the water level?

...R

What about mounting a paddle wheel on a streamlined raft that can rise and fall with the water level?

That was my first thought, how large a stream? What is the nominal surface velocity? Throw in a float and time it for, say, 20 meters or so.

the float sensor is a great idea, but often hard to put into practice.
a branch that is partially submerged could snag on it and effect readings
it requires a pot or grey-scale encoder.
lots of uses in fuel tanks so the technology is there for a pot.

both the paddle wheel and turbine are for complete immersion often inside of pipe. so there is no need to have the rate sensor float.

I found that by putting an ultrasonic in a PVC tube, there is much less noise.
you could burry the tube base below the stream bed and put a few small holes (6mm) in the tube to allow water to easily enter and drain as the water changes height.
The water level would be that of the surrounding water, but zero turbulence.
also, you could your a dirt-cheap sensor that is not waterproof. all it needs is an inverted bucket to keep the rain out, and a large air gap to allow the wind to pass and control humidity.
this could be part of your post that houses your electronics.

Have you noticed that most river measurement uses only the height of the river? That is because it is very difficult to make a paddlewheel survive more than a month - it gets destroyed by floods, debris, and even hitting the bottom when the level is very low.

The height gives an estimate of the flow due to the fact that the river cross-section is relatively fixed. Higher height = higher flow. It is actually a better estimate since the top and bottom of the river can flow at different speeds.

If you just want m/s then drop in a float and measure the time taken between two points. Divide distance by time. If you also measure the height of the river then you know what height corresponds to that speed.

If you put a tube with open end straight down in moving water the surface inside the tube will be lower than outside. If the water moves fast enough the tube will stream air bubbles from the bottom. You can even tell flow at different depths this way.

An underwater ping will travel slower against flow from what I've read....