A long reset press to enter download mode
Posted: Mon Dec 19, 2022 2:39 am
Hi All,
Why do most ESP32 boards, including the TinyS2, TinyS3, FeatherS2 and FeatherS3 have 2 buttons for reset and GPIO00? Sometimes two buttons are very close and it's very hard to push with two big fingers. I think that the problem can be solved by using the reset button with a hardware timer. A short reset press will run your code, and a long reset press (press the button until a LED is lit) will enter download mode. It should work every time.
I use 2 inverters in the following circuit for the theory, but in a real application, you can use a buffer to replace two inverters to save cost. I recently made a Small ESP32 board called SmallPICO which does not need two buttons, like the TinyPICO. When I design a S2 or S3 board I will try this approach. I would appreciate it very much if anyone could verify it on a breadboard. It's not very difficult. It worked for me. The 2G14 is not in a DIP package, but you can use a 74HC14 instead on a breadboard. The 470 ohm resistor is to prevent signal contention in case the IO00 becomes an output. If the LED is too dim, you can change the current limit resistor from 10K to 4.7K or 2.7K.
Happy Holidays!
Why do most ESP32 boards, including the TinyS2, TinyS3, FeatherS2 and FeatherS3 have 2 buttons for reset and GPIO00? Sometimes two buttons are very close and it's very hard to push with two big fingers. I think that the problem can be solved by using the reset button with a hardware timer. A short reset press will run your code, and a long reset press (press the button until a LED is lit) will enter download mode. It should work every time.
I use 2 inverters in the following circuit for the theory, but in a real application, you can use a buffer to replace two inverters to save cost. I recently made a Small ESP32 board called SmallPICO which does not need two buttons, like the TinyPICO. When I design a S2 or S3 board I will try this approach. I would appreciate it very much if anyone could verify it on a breadboard. It's not very difficult. It worked for me. The 2G14 is not in a DIP package, but you can use a 74HC14 instead on a breadboard. The 470 ohm resistor is to prevent signal contention in case the IO00 becomes an output. If the LED is too dim, you can change the current limit resistor from 10K to 4.7K or 2.7K.
Happy Holidays!