The readily available ESP32-DevKitC boards have served me well in many application, but there are some issues with one of the circuits that is up all throughout the year in my house to record moisture and temperature levels. Occasionally, like, every few month, this ESP32 gets stuck, so the web server running on that ESP32 is not responding anymore, and the logging of the data will stop (red marked portions in the plot).
The root cause of that relates to the current pulses drawn by the WLAN circuits of the ESP32, and despite connecting a good USB power supply, proper cables, and capacitors, it seems that there are occasional issues that I haven’t been able to solve be capacitors, better power supply, or software restart-features. I added the later, but the ESP32 freezes to a level that any software reset triggered by the code won’t work. Shortly disabling the power converter on the ESP32-DevKitC (of the on-board 3.3 V regulator – its EN/enable pin is pulled high by a resistor) will restore the function and get the circuit started again.
As I am not always around watching this circuit, I added a good old trusted NE555 timer, which will send a reset pulse (by pulling the EN signal low through a Schottky diode), and the capacitor is shorted by the small MOSFET, as long as the ESP32 is sending a pulse (this is send every 10 seconds approximately, for a few milliseconds) — if the ESP32 gets stuck, there won’t be any pulses, and the NE555 will then reboot the ESP32 every other minute by cycling the power to the ESP32.