One of the great things about the ESP32 is that it has tons more GPIO than the ESP8266. You won't have to juggle or multiplex your IO pins! There's a few things to watch out for so please read through the pinouts carefully

Power Pins

  • GND - this is the common ground for all power and logic
  • BAT - this is the positive voltage to/from the JST jack on the back as well as input into the 3.3V regulator
  • V+ - this is the positive voltage from the USB-to-Serial converter if one is plugged into the 6-pin header
  • 3V - this is the output from the 3.3V regulator. The regulator can supply 500mA peak but half of that is drawn by the ESP32, and it's a fairly power-hungry chip. So if you need a ton of power for stuff like LEDs, motors, etc. Use the USB or BAT pins, and an additional regulator

Serial pins

RX and TX are the main Serial pins, and are connected to the USB/Serial converter. These are for use to program/bootload or debug the ESP32. They shouldn't be connected to any other hardware since the bootloader uses these pins only!

Logic pins

This is the general purpose I/O pin set for the microcontroller. All logic is 3.3V

The ESP32 runs on 3.3V power and logic, and unless otherwise specified, GPIO pins are not 5V safe!

There are tons of GPIO and analog inputs available to you for connecting LEDs, buttons, switches, sensors, etc. Here's the remaining pins available. Note that SPI/I2C/UART can be on any pins but we mark out the ones we've set up in our Arduino definition which is probably what you want. Likewise for the analog pin names.

  • IO0 - Used primarily for bootloader detect. Hold low while resetting to enter the bootloader. This is also connected to a small tactile button on the board.
  • IO2 - This is GPIO #2
  • IO4 - This is GPIO #4 and also an analog input A5 on ADC #2.
  • IO5 - This is GPIO #5 and also SPI SCK
  • IO12 - This is GPIO #12 and also an analog input A11 on ADC #2. This pin has a pull-down resistor built into it, we recommend using it as an output only, or making sure that the pull-down is not affected during boot.
  • IO13 - This is GPIO #13 and also an analog input A12 on ADC #2. It's also connected to the red LED next to the USB port
  • IO14 - This is GPIO #14 and also an analog input A6 on ADC #2
  • IO15 - This is GPIO #15 and also an analog input A8 on ADC #2
  • IO16 - This is GPIO #16  and also Serial1 RX
  • IO17 - This is GPIO #17 and also Serial1 TX
  • IO18 - This is GPIO #18 and also SPI MOSI
  • IO19 - This is GPIO #19 and also SPI MISO
  • IO21 - This is GPIO #21
  • IO22 - This is GPIO #22 and also I2C SCL
  • IO23 - This is GPIO #23 and also I2C SDA
  • IO25- This is GPIO #25 and an analog input A1 on ADC #2 and also an analog output DAC1
  • IO26 - This is GPIO #26 and an analog input A0 on ADC #2 and also an analog output DAC2
  • IO27 - This is GPIO #27 and also an analog input A10 on ADC #2
  • IO32 - This is GPIO #32 and also an analog input A7 on ADC #1. It can also be used to connect a 32 KHz crystal.
  • IO33 - This is GPIO #33 and also an analog input A9 on ADC #1. It can also be used to connect a 32 KHz crystal.
  • I34 - This is GPI #34 and also an analog input A2. Note it is not an output-capable pin! It uses ADC #1
  • I35 - This is GPI #35 and also an analog input A13. Note it is not an output-capable pin! It uses ADC #1
  • I36 - This is GPI #36 and also an analog input A4. Note it is not an output-capable pin! It uses ADC #1
  • I39 - This is GPI #39 and also an analog input A3. Note it is not an output-capable pin! It uses ADC #1

Note you cannot read analog inputs on ADC #2 once WiFi has started as it is shared with the WiFi module.

JST Connector Pads

On the back of the board are four pads, designed for a JST connector that, when soldered on, allows you to plug in a lipoly battery.

This guide was first published on May 12, 2019. It was last updated on Mar 08, 2024.

This page (Pinouts) was last updated on Mar 08, 2024.

Text editor powered by tinymce.