Okay, I tested the ADC of the ESP32 and I'm not convinced that buying 3 of them was a good idea XD
Here you see the curves that the Pi PIco and the ESP32 ADC give:
Idealy, the ADC would give more or less a perfect diagonal, which is the blue curve.
The Pico is pretty close with the green curve on this scale being visualy almost the same.
The ESP32 is rather horrible when you want a measurement range of 0-3.3 V.
You can't measure voltages from 0.000 V to 0.138 V as they will all read as zero.
You can measure voltages between 0.138 V to 2.660 V will be measureable farily well
You can measure voltages over 2.660 V with increasing difficulty.
You can't measure voltages over 3.190 V as they will all read the same value of 4095.
If you rather plot the difference from the ideal curve vs the value the ADC gives you, you get this:
(To get voltage you roughly have to calculate value/4095*3.3V, e.g.:
error of ~10 means 10/4095*3.3V ~ 8 mV
Value of 502 means 502/4095*3.3V ~ 0.405 V)
So the Pico is closer to the ideal, BUT it has these jumps, which regularly leads to voltage "gaps" of around 8 mV each:
You can't measure 0.405 V to 0.413 V as it will all read as 0.405V
You can't measure 1.230 V to 1.238 V as it will all read as 1.230V
You can't measure 2.055 V to 2.063 V as it will all read as 2.055V
You can't measure 2.880 V to 2.888 V as it will all read as 2.880V
The ESP32 has jumps as well, but these are smaller ... The rest of the slope, deviating from the ideal 0 is not as bad as it looks, since I can mostly correct this. I had to offset the ESP32 curve by -180, so it would end up around 0. The ESP32's ADC value is mostly too small by around 0.145V, as I noted above. But if you know that it isn't a problem.
I'll have to test this in a practical circuit. The noise will for sure be worse, but I can simpy increase the filtering and wait a bit longer. In a Reef-Pi scenario you also don't expect a value every 10s ^^