Uploading code to esp-wroom-32ue chip from arduino IDE


I am trying to understand how to upload code from the arduino IDE to my ESP32­WROOM­32UE chip. Normally I go and select the board in the tools tab and if it's not there I go to boards manager and download it. But this is not a board I normally deal with so not sure where to begin. Could someone point me in the right direction?

Please see the instructions here:

Let us know if you have any questions or problems.

I have a similar issue. What I did for a prototype was use a Sparkfun ESP32 Thing board. Now as I move to the ESP32 daughter board, I am selecting the same board Sparkfun ESP32 Thing and programming using a 3v3TTL to USB cable with a jumper for GPIO2 and GPIO0 to gnd for download and using the Sparkfun pin numbers in the code as before.

Note from Sparkfun circuit
"If U0TXD, GPIO2, GPIO5 are floating, GPIO0 determines boot mode"
But in my case I am using ALL the I/O and GPIO2 is pulled up.

Edit -- Sparkfun pins 37 and 38 are not available on ESP32 WROOM 32

1 Like

I just installed the stable esp32 board library. But now I am trying to determine which board to select. This might be an espressIf question?

@drmpf Interesting do you use the wroom-32ue or something slightly different? I upload my firmware using UART TXD0 and RXD0. I am not using pins 37 and 38 do you think I could use this board in the IDE?

Yes that I what I am doing.

I am using this one from Adafruit ESP32 WiFi-BT-BLE MCU Module / ESP-WROOM-32 : ID 3320 : $8.95 : Adafruit Industries, Unique & fun DIY electronics and kits
I am laying out the board at the moment. To be honest I have not actually done an upload yet, but am confident it will work base on my previous experience working with ESP8266 bare modules.

If you check the Sparkfun ESP32 Thing variant in the package you will see the pin numbers are one for one for the GPIO's (NOT the chip pins, the GPIO's)
Sparkfun defines some names like CS etc and allocates them to specific GPIO's. My code ignores those and passes GPIO numbers directly for the various chip select pins I use.
So use the Sparkfun board and just work with the GPIO numbers.

Here are some restrictions on the GPIOs

GPIO0 MUST be High for run, LOW for download pwm output on boot
GPIO2 MUST be LOW for download else Don't Care
GPIO5 MUST be HIGH on boot pwm output on boot
GPIO12,MTDI, MUST be LOW on boot
GPIO14 pwm output on boot
GPIO15,MTDO MUST be HIGH on boot, pwm output on boot
1K to gnd on GPIO15 seems to work to disable boot but changes flash timing also

GPIO34 to GPIO39 are inputs only
GPIO6 to GPIO11 (SD2 SD3 CMD CLK SD0 SD1) are not available for use (used for connection to external flash)

1 Like

Don't forget to pullup the EN pin as well.

Thanks @drmpf ... I am reviewing your restrictions at the moment to see if I have any issues/limitations with them and my hardware. Will be able to go into more detail this weekend when my schedule frees up. Maybe these schematics will help you with your build or you may see some issues, but this is my current set-up for the wroom-32ue.

Let me know what you think!

I am just skipping the Firmware circuit and just using this USB to TTL Serial Cable and a 12V to 3V3 supply.
I just have the EN pull up with a resistor (no cap)
I have a link on GPIO0 to go into prog mode
Since you have some spare pins I would avoid using GPIO5 and GPIO2 and GPIO15 and GPIO12
let me know how you go, it will be a while before my board is ready.

1 Like