I've come across many Arduino shields for various boards like the Uno, ESP8266, and ESP32 which sometimes have a button for flashing and other times they do not because the flashing is automatic.
When I upload a binary sketch to ESP32 directly through a separate Serial to USB converter, I have to make the button connections and press the buttons manually for the uploading process to work.
The manual button pressing flashing process for the ESP32 goes like this:
- Hold the Reset button (IO0 to ground)
- Hold the Flash button (EN to ground)
- Release the Reset button (IO0 to float)
- Release the Flash button (EN to 3.3v)
- The board is now in flashing mode
- Press "Upload" in Arduino IDE
- Wait until the IDE log shows "Connecting..."
- Wait until the sketch is fully uploaded
- Press the Reset button (IO0 to ground then float)
Arduino boards like the WeMos Lolin32 board eliminate the button pressing process completely during the flashing process.
QUESTION: Which part of the hardware on the Lolin32 board makes the flashing process autonomous?
I believe the answer will also apply to any other auto-flashing board out there.