ESP32 DevKit V1
microcontroller with WiFi and Bluetooth
The brain of every project. The ESP32 is a dual-core 240 MHz microcontroller with built-in WiFi and Bluetooth, 520 kB RAM and 4 MB flash. The development board (DevKit V1) adds a USB port for programming, a 5 V → 3.3 V regulator and two buttons.
Open the course →How it works
You write a program in the Arduino IDE, upload it over USB, and the ESP32 runs it in an endless loop (loop()). Through the GPIO pins it reads signals from sensors (input) or drives LEDs, relays and motors (output). Every pin works at 3.3 V — that is the most important thing to remember.
Pins and wiring
| Pin | What it is | Where it connects / why |
|---|---|---|
| 3V3 | 3.3 V output from the regulator | Power for sensors and modules that run on 3.3 V (DHT22, OLED, potentiometer). About 500 mA total maximum. |
| VIN / 5V | 5 V input/output | With USB connected there is ~5 V here. Powers modules that need 5 V (HC-SR04, servo, relay, PIR). |
| GND | Ground (0 V), two pins | The common reference point. Every component needs a path to GND. |
| GPIO (D0…D33) | Digital input/output pins | Can be an input (reads 0/1) or an output (gives 0 or 3.3 V). Most also support PWM. |
| GPIO 34, 35, 36 (VP), 39 (VN) | Input only | No output stage and no internal pull-up/pull-down resistor. Excellent for analog reading (ADC1). |
| ADC1 (GPIO 32–39) / ADC2 | Analog-to-digital converter, 12-bit (0–4095) | For potentiometer, LDR, analog sensors. ADC2 (GPIO 0, 2, 4, 12–15, 25–27) does not work while WiFi is on — use ADC1. |
| DAC (GPIO 25, 26) | Digital-to-analog output, 8-bit | Can output a true analog voltage 0–3.3 V (e.g. for audio). |
| TOUCH (T0–T9) | Capacitive touch sensors | GPIO 4, 0, 2, 15, 13, 12, 14, 27, 33, 32 — react to a finger touch without extra components. |
| TX0 / RX0 (GPIO 1, 3) | UART0 — serial link to the computer | Used by USB for the Serial Monitor. Do not use for anything else while debugging. |
| TX2 / RX2 (GPIO 17, 16) | UART2 — free serial port | For GPS, Bluetooth modules and other UART devices. |
| SDA (GPIO 21) / SCL (GPIO 22) | I2C bus (default pins) | For OLED display, RTC, BMP280 and all I2C devices. Several devices on one bus, each with its own address. |
| MOSI 23 / MISO 19 / SCK 18 / CS 5 | SPI bus (VSPI) | Fast communication for SD cards, TFT displays, nRF24. |
| EN | Reset (active low) | Connect to GND and the board resets. The EN button does the same. |
| GPIO 0 (BOOT) | Strapping pin — programming mode | The BOOT button pulls it to GND. If you use it, make sure it is not at GND at power-up. |
| GPIO 2 | Built-in LED (blue) on DevKit V1 | Use it for a test without anything external. Also a strapping pin. |
Specifications
ProcessorXtensa LX6, 2 cores, 240 MHz
RAM520 kB SRAM
Flash4 MB
Logic voltage3.3 V (pins do NOT tolerate 5 V)
Max current per pin~12 mA recommended, 40 mA absolute max
WiFi802.11 b/g/n, 2.4 GHz
Bluetoothv4.2 + BLE
GPIO25 usable on DevKit V1
ADC18 channels, 12-bit
PWM16 channels (LEDC)
Tips and typical mistakes
- Never put 5 V directly on a GPIO — you will damage it. Use a voltage divider or a level shifter.
- Avoid GPIO 0, 2, 5, 12, 15 for critical things — they are "strapping" pins and affect boot.
- GPIO 6–11 are connected to the flash memory and are not brought out on the board.
- If uploading fails ("Connecting…"), hold the BOOT button until it starts.