ESP32/Chips/ESP32

ESP32

The original, and still the only one that speaks classic Bluetooth serial.

Before you plan anything
No native USB.
Every board carries a separate USB-to-serial chip, which is why you may need a CP210x or CH340 driver before the port even appears.
Wi-Fi 4BLE 4.2Classic BTNo Zigbee or ThreadNo native USBDAC outTouch, 10 pinsPSRAM optionalTwo coresNo MIPI display
Xtensa LX6 · 2 × 240 MHz
ESP32 board photo
We stock
DOIT ESP32 DevKit v1
Cheap, everywhere, and the board most internet tutorials assume. Good first board, poor last one.
See it in the shop →

The pins that matter

Not all forty-odd of them. The five rows that decide whether your wiring works.

Default I2CSDA 21 · SCL 22What the Arduino core uses unless you pass your own pins to Wire.begin().
On-board LEDGPIO 2On most DevKit v1 boards. Some clones use GPIO 5 instead.
Never useGPIO 6–11Wired to the flash chip. Touching them stops the board booting.
Strapping pinsGPIO 0, 2, 5, 12, 15Read at boot. A pull-down on the wrong one leaves you in download mode, and 0, 5 and 15 emit a PWM burst on the way up.
Input onlyGPIO 34–39No output, and no internal pull-up either, so buttons here need a real resistor.
Pinout diagram — DOIT ESP32 DevKit v1

Board settings, all three toolchains

Get one of these wrong and nothing else on the site will work.

Arduino IDEC++Tools → BoardESP32 Dev Module

Also set Upload Speed to 115200 if uploads fail on a long cable.

MicroPythonPython + ThonnyfirmwareESP32_GENERIC-20260201-v1.25.bin

Hold BOOT while the flash starts, or esptool will not find the chip.

PlatformIObuild systemplatformio.iniboard = esp32dev

The most widely tested target in PlatformIO. Nothing special needed.

What catches people out on this chip

These are the support emails. They exist nowhere else on the site because they are true of nothing else.

ADC2 stops working the moment Wi-Fi turns on

The second ADC block shares hardware with the radio. Any analog pin on ADC2 returns garbage while Wi-Fi is up. Move the sensor to an ADC1 pin — this is the single most common “my sensor broke when I added Wi-Fi” report.

GPIO 6 to 11 are not free pins

They are the flash bus. Headers on some clone boards expose them anyway, which is a trap, not a feature.

Input-only pins have no pull-ups

GPIO 34 to 39 accept INPUT_PULLUP in code and silently do nothing with it. A button on those pins needs an external resistor.

Brownouts on USB power

Wi-Fi transmit bursts pull well over 300 mA. A thin cable or an unpowered hub causes reboots that look exactly like a code crash.

News about this chip

2026-08-01MicroPython 1.25 firmware for all five chipsFresh .bin files, and the C6 build finally exposes the Wi-Fi 6 flags.

Guides for this chip

78 of 81 apply

Written once for the whole family. Opening one from here fixes the pins to this chip and the code to your language.

01 · Start hereWhat the ESP32 is02 · Start hereChoosing your tools03 · Setup and uploadingInstall the toolchain04 · Setup and uploadingHello world over serial05 · Setup and uploadingBlink an LED06 · Setup and uploadingWhen uploads fail07 · Setup and uploadingSerial ports and drivers08 · Setup and uploadingPrinting, plotting and debugging09 · The board itselfThe EN and BOOT buttons10 · The board itselfThe pins you cannot use11 · The board itselfWhat the chip says about itself12 · Pins and signalsDigital I/O13 · Pins and signalsPWM with LEDC14 · Pins and signalsReading the ADC15 · Pins and signalsDAC output16 · Pins and signalsTouch pins17 · Interrupts and timingInterrupts on a pin18 · Interrupts and timingSharing data with an ISR19 · Interrupts and timingHardware timers20 · Interrupts and timingCounting pulses21 · Interrupts and timingAddressable LEDs with RMT22 · Wires on the boardDigital in and digital out23 · Wires on the boardOne-wire sensor timing24 · Wires on the board1-Wire and device chains25 · Wires on the boardI2C, start to stop26 · Wires on the boardI2C addresses and conflicts27 · Wires on the boardI2C on a shared bus28 · Wires on the boardSPI and chip select29 · Wires on the boardUART, start to stop30 · Wires on the boardIR remote codes31 · BusesI2C32 · BusesSPI33 · BusesUART and baud rates34 · BusesRS485 and Modbus35 · StorageFilesystem on flash36 · StorageUploading files to LittleFS37 · StoragePreferences and NVS38 · StoragemicroSD cards39 · StoragePartition tables and flash size40 · Joining a networkWi-Fi station mode41 · Joining a networkAccess point mode42 · Joining a networkBoth at once: AP and station43 · Joining a networkSeveral networks, one board44 · Joining a networkWi-Fi provisioning45 · Joining a networkuse insteadWi-Fi 6 features46 · Living on a networkmDNS and NTP47 · Living on a networkKeeping time with time.h48 · Living on a networkHTTPS and certificates49 · Living on a networkOTA updates50 · Living on a networkEthernet instead of Wi-Fi51 · Web serverHello world from the board52 · Web serverA reading on the page53 · Web serverSwitching a pin from the page54 · Web serverAsync web server55 · Messages on the networkHTTP from a board56 · Messages on the networkMQTT and a broker57 · Messages on the networkWebSocket dashboards58 · Messages on the networkNames and time59 · Messages on the networkFirmware in two slots60 · BluetoothBLE server and client61 · BluetoothA value a phone can read62 · BluetoothA value a phone can write63 · BluetoothClassic Bluetooth serial64 · Other radiosESP-NOW65 · Other radiosESP-WIFI-MESH66 · Other radiosuse insteadZigbee, Thread and Matter67 · Other radiosLoRa for long range68 · Sleep and wake-upDeep sleep and wake sources69 · Sleep and wake-upHibernation, the floor below sleep70 · Sleep and wake-upWaking on a timer71 · Sleep and wake-upWaking on a pin or a touch72 · Sleep and wake-upWhat survives deep sleep73 · Sleep and wake-upThe ULP low-power core74 · PowerPower and the 3V3 rail75 · PowerBattery and power budget76 · PowerMeasuring current draw77 · SystemDual core tasks78 · SystemCrash dumps and the watchdog79 · SystemI2S audio80 · SystemCamera capture81 · Systemuse insteadMIPI displays
Modules that work with the ESP32

All 47 documented modules work with it. It is the only chip here that can also do classic Bluetooth serial, so the Bluetooth audio and SPP examples are written against this one.

Browse the module index →