4
\$\begingroup\$

My ESP32 NodeMCU need to press boot when upload new program from Arduino IDE. However, many sources suggest that we can upload without pressing any button by simply adding capacitor between EN pin and ground. But how? What is going on? Why does it work that way?

Note: I know question like these seem trivia, but most tutorials do not explain in detail about this and I really want to know.

\$\endgroup\$
1
  • \$\begingroup\$ we can upload without pressing any button by simply adding capacitor between EN pin and ground ... you probably have to do something else to start the upload \$\endgroup\$
    – jsotola
    Commented Jun 6, 2021 at 18:28

1 Answer 1

5
\$\begingroup\$

I found the schematics for that ESP32 board on this page:

https://github.com/espressif/arduino-esp32/issues/544

Schematics: https://github.com/espressif/arduino-esp32/files/1215494/SchematicsforESP32.pdf

Here is basically what's going on:

schematic

simulate this circuit – Schematic created using CircuitLab

The Arduino IDE brings DTR high in order to signal the ESP32 that it wants to upload a new firmware image. The intent is to bring EN low. However, the software is likely bringing DTR high for too short of a time.

With the cap added bringing DTR high for even a very short time will quickly discharge the cap. It will then slowly charge back through the 10K resistor. This means that the EN line will remain low for a longer period of time.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.