Programming ESP32 WROOM

Hi everybody. Two months ago, I decided to upgrade my "old project": a led matrix. The old version has one big problem: I mounted the 74HC595 shift register. This component haven't a own library to controll text that you want to write. So, I decided to designed new board using MAX7219 and ESP32 to have the possibility to write texts throught wifi connection.
After finished to mount all components, i wasn't able to programming the ESP32 WROOM. I have followed a lot of guide and video tutorial, but every time I haven't been able to program the ESP.
Below, I attach circuit that I designed for my PCB.

Thanks for your help.

1 Like

I have dl the core from github folowing instruction there. Connected via USB and first sketch uploaded successful. No problem.

Did the breadborded test circuit work OK ?

A few things:

  1. are you using a bare WROOM module and making your own carrier board for it, or are you using a dev board? You might want to get a breadboard friendly dev board (eg. wemos d1 or nodemcu) just to simplify this part - you won't need to worry about the boot pins and buttons so you can focus on making your code and other circuitry work first.
  2. why are you connecting pin 32 ("NC" or not connected)? I don't have an x-ray of the board but since they say "NC" I wouldn't connect anything to it.
  3. GPIO2 is supposed to be pulled down for download mode - are you sure that LED isn't interfering?
  4. What exactly do you do to program the board, and what exactly happens? You didn't say whether you're pushing the flash button, but the arduino IDE won't be able to trigger flash mode like it could on a dev board.
  5. is esptool.py able to detect and identify this board?

But I didn't use a board, I used only the esp32, so I can't program it using a USB cable but using 4 pins (3V3, GND, TXD, RXD)

Yes, all leds light up, but when I try to program the esp32, Arduino show me this error: "A fatal error occured. Time out waiting for packet content"

Thanks for your answers.

  1. I use a bare esp32 (esp32 wroom). I didn't design a circuit with nodemcu or similar because I didn't want to create a PCB to much thick.
  2. I connected "NC pin" because in the official schematic of Espressif System connect NC pin to GPIO 23 pin. In case of problems, I'll to cut out it.
  3. When I tried to program the esp32, I pushed the button attached to GPIO2, but nothing happens.
  4. Arduino IDE only shows me this error: "A fatal error occured. Time out waiting for packet content". For program ESP I used various method: USB TTL and Arduino as ISP, but no method worked.
  5. I downloaded two different library from GitHub (.JSON files). I followed istruction for using them on the GitHub website and on YouTube, but every time that I tried program it, Arduino showed me the previous error.

Sorry for my poor English skills and thanks for your time


I did not seen any reference to NC and IO23.
I see no button or switch on EN.
I see on IO0 only a removable jamper.

So no reset button ?

much worse, even without a reset pin. stupid developers.

But EN is used as Reset.

I followed the connections from this schematic. I found it in the Espressif website:

Earlier you said;

"When I tried to program the esp32, I pushed the button attached to GPIO2, but nothing happens"

I watched and read many tutorials and all write that you must press boot button to program the esp

Sorry, I was wrong. I followed the Espressif schematic for design my own PCB

Ok so , if there is a button attached to IO2 , it should be attached to IO0 instead.
And what is connected to RX and TX ?
You can follow the same instructions as for the ESP32 CAM.

i prefer to prototype with dev boards so it's one less thing I have to worry about while I write code or build the rest of the circuit. Once I know the code works, and my circuit design is good, then I start to design a PCB. I'll shut up about this now, do what works for you.

Since you're just using a 4-wire serial, the programming failure is expected; esptool.py tries to use serial control lines to reset the chip. To program the ESP you need to pull GPIO0 low (either by pushing a button or jumpering it to ground), then reset, then release GPIO0. Pushing the program button after power-up/reset won't switch into boot mode.

TX to RX of Arduino (or USB TTL)
RX to TX of Arduino

Tomorrow I'm going to modify the connections

Ok thanks for the tips. Tomorrow I'm going to try this method. I hope it works

Please don't forget the voltage difference.