ZimbruL — Hardware Reference Series

ESP32 DevKit V1
Complete Pinout Reference

Dual-Core Xtensa LX6  |  Wi-Fi 802.11 b/g/n  |  Bluetooth 4.2 BLE  |  38 Pins

Chip Overview
ESP32-WROOM-32 | Espressif Systems
CPU Cores
2× LX6
Up to 240 MHz
Flash
4 MB
SPI Flash (some boards 8/16 MB)
RAM
520 KB
SRAM internal
GPIO Pins
34
Of which 18 with ADC input
ADC
2× 12-bit
ADC1 (8 ch) + ADC2 (10 ch)
DAC
2× 8-bit
GPIO 25 & GPIO 26
Touch Sensors
10
Capacitive touch input
PWM Channels
16
LEDC controller
UART
3
UART0 / UART1 / UART2
I2C
2
Configurable on any GPIO
SPI
4
HSPI / VSPI / SPI0 / SPI1
Supply Voltage
3.3 V
VIN: 5V via USB / 3.3V reg.
Toate GPIO-urile ESP32 functioneaza la 3.3V logic. Nu conecta semnale de 5V direct pe pini fara level shifter — risc de deteriorare permanenta a chip-ului.
GPIO 6, 7, 8, 9, 10, 11 sunt conectati intern la Flash SPI — nu le folosi in proiecte externe.
Pinout Diagram
ESP32 DevKit V1 — 38 pini, vedere de sus
USB Micro-B ESP32-WROOM-32 Dual-Core 240MHz WiFi + BT 4.2 PCB Antenna LED EN BOOT 3V3 GND IO15 IO02 IO04 IO16 IO17 IO05 IO18 IO19 IO21 RX0 TX0 IO22 IO23 GND IO13 IO12 IO14 VIN GND IO36 IO39 IO34 IO35 IO32 IO33 IO25 IO26 IO27 IO14 IO12 GND IO13 IO9* IO10* IO11* IO00 LEGENDA POWER GPIO / SPI I2C UART ADC / DAC SPI / Multi ⚠ Flash SPI STANGA 3V3 → Tensiune GND → Masa IO21 → SDA IO22 → SCL RX0/TX0 → UART0 DREAPTA VIN → 5V in IO36-39 → input only, no pull IO25/26 → DAC IO9-11 → FLASH ⚠ NU FOLOSI
* IO9, IO10, IO11 sunt rezervati pentru Flash SPI intern. Nu pot fi utilizati in proiecte externe.
Referinta completa — Toti pinii
ESP32 DevKit V1 — 38 pini total
#PinGPIOTipFunctii alternativeNote importante
13V3POWERAlimentare 3.3V iesireMax 600mA curent total
2GNDGNDMasaMai multi pini GND disponibili
3IO1515GPIOADCTOUCHADC2_CH3, Touch3, HSPI_CS, MTDOPullup intern la boot — afecteaza log serial
4IO022GPIOADCTOUCHADC2_CH2, Touch2, LED built-inBoot fail daca HIGH — LED intern
5IO044GPIOADCTOUCHADC2_CH0, Touch0, HSPI_HDUtil pentru senzori touch
6IO1616GPIOUARTUART2_RX, RX2UART2 implicit RX
7IO1717GPIOUARTUART2_TX, TX2UART2 implicit TX
8IO055GPIOSPIVSPI_CS0, HSPI_CSPullup la boot — log serial afectat
9IO1818GPIOSPIVSPI_CLK, SPI ClockVSPI Clock — SPI displays, SD card
10IO1919GPIOSPIVSPI_MISOVSPI MISO
11IO2121I2CGPIOI2C SDA (Data)Default SDA — OLED, BMP280, etc.
12RX03UARTGPIOUART0_RX — Serial monitorFolosit de USB-UART — evita in proiecte
13TX01UARTGPIOUART0_TX — Serial monitorFolosit de USB-UART — evita in proiecte
14IO2222I2CGPIOI2C SCL (Clock)Default SCL — I2C bus
15IO2323GPIOSPIVSPI_MOSIVSPI MOSI
16GNDGNDMasa
17IO1313GPIOADCTOUCHADC2_CH4, Touch4, HSPI_ID, MTCKSigur pentru uz general
18IO1212GPIOADCTOUCHADC2_CH5, Touch5, HSPI_MISO, MTDIBoot fail daca HIGH la pornire
19IO1414GPIOADCTOUCHADC2_CH6, Touch6, HSPI_CLK, MTMSPWM la boot — nivel puls
20VINPOWER5V Input (din sursa externa)Intrare 5V — regulator intern la 3.3V
21GNDGNDMasa
22IO3636ADCINPUT ONLYADC1_CH0, RTC_GPIO0Input only — fara pull-up/down intern
23IO3939ADCINPUT ONLYADC1_CH3, RTC_GPIO3Input only — fara pull-up/down intern
24IO3434ADCINPUT ONLYADC1_CH6, RTC_GPIO4Input only — ideal pentru senzori analogici
25IO3535ADCINPUT ONLYADC1_CH7, RTC_GPIO5Input only
26IO3232GPIOADCTOUCHADC1_CH4, Touch9, RTC_GPIO9Versatil — PWM, ADC1 (mai stabil)
27IO3333GPIOADCTOUCHADC1_CH5, Touch8, RTC_GPIO8ADC1 — mai precis decat ADC2
28IO2525GPIODACADCDAC_1, ADC2_CH8, RTC_GPIO6Iesire analogica reala 8-bit (0–3.3V)
29IO2626GPIODACADCDAC_2, ADC2_CH9, RTC_GPIO7Iesire analogica reala 8-bit
30IO2727GPIOADCTOUCHADC2_CH7, Touch7, RTC_GPIO17Uz general, touch capacitiv
31IO1414GPIOADCADC2_CH6, HSPI_CLK, Touch6Apare si pe stanga — dual listing
32IO1212GPIOADCADC2_CH5, HSPI_MISO, Touch5Boot sensitivity — foloseste cu grija
33GNDGNDMasa
34IO1313GPIOADCADC2_CH4, HSPI_ID, Touch4Recomandat pentru uz general
35IO099⚠ FLASHSPI Flash — REZERVATNU FOLOSI — conectat la Flash intern
36IO1010⚠ FLASHSPI Flash — REZERVATNU FOLOSI
37IO1111⚠ FLASHSPI Flash — REZERVATNU FOLOSI
38IO000GPIOBOOTADC2_CH1, Touch1, CLK_OUT1Boot mode select — LOW = Download mode
GPIOInputOutputPWMADCTouchNote
0ADC2_CH1T1Boot mode select
2ADC2_CH2T2LED built-in; boot fail daca HIGH
4ADC2_CH0T0Uz general
5Pullup la boot
12ADC2_CH5T5Boot fail daca HIGH
13ADC2_CH4T4Sigur, recomandat
14ADC2_CH6T6PWM la boot
15ADC2_CH3T3Pullup la boot
16UART2 RX
17UART2 TX
18VSPI CLK
19VSPI MISO
21I2C SDA
22I2C SCL
23VSPI MOSI
25ADC2_CH8DAC1
26ADC2_CH9DAC2
27ADC2_CH7T7Uz general
32ADC1_CH4T9ADC1 — mai stabil
33ADC1_CH5T8ADC1 — mai stabil
Pinii de mai jos sunt input-only (fara rezistenta pull-up/down interna) sau rezervati pentru Flash SPI. Nu pot fi configurati ca output.
GPIOTipADCNote
34INPUT ONLYADC1_CH6Fara pull-up intern. Ideal senzori analogici.
35INPUT ONLYADC1_CH7Fara pull-up intern.
36INPUT ONLYADC1_CH0VP pin — cel mai precis ADC1
39INPUT ONLYADC1_CH3VN pin — precis, fara noise
6⚠ FLASH SPIConectat la memoria Flash interna. NU FOLOSI.
7⚠ FLASH SPINU FOLOSI.
8⚠ FLASH SPINU FOLOSI.
9⚠ FLASH SPINU FOLOSI.
10⚠ FLASH SPINU FOLOSI.
11⚠ FLASH SPINU FOLOSI.
PinTensiuneCurent maxFunctie
VIN5V~500mA (USB)Intrare 5V — trece prin regulator AMS1117-3.3
3V33.3V~600mA totalIesire 3.3V — nu supraincarca
GND (x3)0V3 pini GND pe board pentru layout mai simplu
GPIO max3.3V40mA / pinMax 40mA per pin, 1200mA total GPIO
Protocoale de comunicatie
Pinii impliciti + posibilitati remapping

I²C Bus

  • SDA (Data)GPIO 21
  • SCL (Clock)GPIO 22
  • Frecventa100 / 400 kHz
  • Adrese7-bit / 10-bit
  • Remappable?DA — orice GPIO
Rezistente pull-up externe: 4.7kΩ la 3.3V recomandat

SPI — VSPI (implicit)

  • MOSIGPIO 23
  • MISOGPIO 19
  • CLKGPIO 18
  • CSGPIO 5
  • Frecventa max80 MHz

SPI — HSPI

  • MOSIGPIO 13
  • MISOGPIO 12
  • CLKGPIO 14
  • CSGPIO 15
  • Frecventa max80 MHz

UART0 — Serial Monitor

  • TXGPIO 1
  • RXGPIO 3
  • Baud rate115200 (implicit)
  • Folosit deUSB / Serial
  • Disponibil?Evita in proiecte

UART1

  • TX implicitGPIO 10 ⚠
  • RX implicitGPIO 9 ⚠
  • RemapareOBLIGATORIE
  • Exemplu TXGPIO 4
  • Exemplu RXGPIO 2
Pinii impliciti sunt pe Flash SPI — remapeaza intotdeauna

UART2

  • TXGPIO 17
  • RXGPIO 16
  • Baud rateconfigurable
  • Remappable?DA
  • Ideal pentruGPS, GSM, BT
ADC & DAC
Convertoare analog-digital si digital-analog
ADC2 nu functioneaza cand WiFi este activ. Foloseste ADC1 (GPIO 32–39) pentru aplicatii WiFi + analogic simultan.
ADC1 — Stabil, compatibil WiFi
CanalGPIONote
ADC1_CH036 (VP)Cel mai precis
ADC1_CH339 (VN)Precis, input-only
ADC1_CH432GPIO full
ADC1_CH533GPIO full
ADC1_CH634Input only
ADC1_CH735Input only
ADC2 — Conflicte cu WiFi
CanalGPIONote
ADC2_CH04
ADC2_CH10Boot pin
ADC2_CH22LED intern
ADC2_CH315
ADC2_CH413
ADC2_CH512Boot sensitive
ADC2_CH614
ADC2_CH727
ADC2_CH825DAC1
ADC2_CH926DAC2
DAC — Iesire analogica adevarata
DACGPIORezolutieTensiune
DAC1258-bit (256 pasi)0 – 3.3V
DAC2268-bit (256 pasi)0 – 3.3V
Boot Modes
Starile de pornire controlate prin GPIO 0, 2, 12, 15

Normal Boot (Run Mode)

GPIO 0HIGH (flotant/pullup)
GPIO 2Don't care
GPIO 12LOW
GPIO 15HIGH
Pornire normala din Flash. Butonul EN (reset) lanseaza aceasta stare.

Download Mode (Flash Firmware)

GPIO 0LOW (apasat BOOT)
GPIO 2LOW
GPIO 15HIGH
Tine apasat BOOT, apasa EN, elibereaza EN, elibereaza BOOT.

GPIO 12 — Tensiune Flash

IO12 = LOWFlash 3.3V VDD
IO12 = HIGHFlash 1.8V VDD ⚠
Nu lasa IO12 HIGH la boot — poate deteriora flash-ul daca nu este 1.8V.

Pinii care afecteaza boot-ul

GPIO 0Boot mode select
GPIO 2Must be LOW/float
GPIO 5SDIO timing
GPIO 12Flash voltage
GPIO 15SDIO timing
Arhitectura de alimentare
Surse, regulatoare, curent
USB 5V / 500mA 5V VIN Pin 4.75–12V AMS1117-3.3 LDO Regulator max 800mA 3.3V ESP32 Core CPU: ~80–240mA WiFi TX: ~250mA Deep Sleep: ~10µA Modem Sleep: ~3mA 3V3 Pin Perifericele tale GPIO Pins 40mA / pin 1200mA total ESP32 Power Architecture
Deep Sleep: ~10 µA — ideal pentru baterie. Modem Sleep: ~3 mA. Active + WiFi: pana la ~300 mA peak. Foloseste condensatoare de decuplaj 100µF pe linia VCC pentru stabilitatate WiFi.
Exemple de cod
Arduino IDE / ESP-IDF basics
Blink LED GPIO 2
ARDUINO void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000); }
Citire ADC1 (GPIO 34)
ARDUINO void setup() { Serial.begin(115200); // ADC1 - sigur cu WiFi analogReadResolution(12); } void loop() { int val = analogRead(34); Serial.println(val); delay(500); }
I2C — Scanner dispozitive
ARDUINO #include <Wire.h> void setup() { Wire.begin(21, 22); // SDA, SCL Serial.begin(115200); } void loop() { for(byte i=1; i<127; i++) { Wire.beginTransmission(i); if(!Wire.endTransmission()) Serial.println(i, HEX); } delay(3000); }
DAC — Semnal sinusoidal
ARDUINO #include <math.h> void setup() {} void loop() { for(int i=0; i<360; i++) { uint8_t v = (uint8_t)( (sin(i * 3.14/180) + 1) * 127 ); dacWrite(25, v); // GPIO 25 = DAC1 delay(1); } }
PWM — LED dimmer
ARDUINO const int ledPin = 13; const int channel = 0; const int freq = 5000; const int res = 8; // 8-bit = 0-255 void setup() { ledcSetup(channel, freq, res); ledcAttachPin(ledPin, channel); } void loop() { for(int i=0; i<=255; i++) { ledcWrite(channel, i); delay(10); } }
Deep Sleep — Baterie optimizat
ARDUINO #define uS_TO_S 1000000ULL void setup() { Serial.begin(115200); // lucreaza... trimite date... // Doarme 30 secunde (~10 µA) esp_sleep_enable_timer_wakeup( 30 * uS_TO_S ); esp_deep_sleep_start(); } void loop() {}
FAQ — Intrebari frecvente
Probleme comune si raspunsuri directe
De ce nu merge ADC-ul cand am WiFi activ?
ADC2 partajeaza resurse cu driverul WiFi. Cand WiFi este pornit, analogRead() pe pinii ADC2 (GPIO 0, 2, 4, 12-15, 25-27) va returna erori sau valori gresite. Solutie: foloseste exclusiv ADC1 (GPIO 32, 33, 34, 35, 36, 39) pentru orice citire analogica in aplicatii WiFi.
ESP32 nu se flash-uieste / nu intra in download mode
Procedura corecta: 1. Tine apasat butonul BOOT (GPIO 0). 2. Apasa scurt butonul EN (reset). 3. Elibereaza EN. 4. Elibereaza BOOT. 5. Acum apasa Upload in Arduino IDE. Daca nu merge, verifica ca GPIO 2 nu este HIGH si ca nu ai componente externe pe GPIO 0 care trag pinul HIGH.
Care pini sunt siguri pentru uz general fara griji?
Pinii recomandati fara efecte secundare la boot: GPIO 13, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33. Evita GPIO 0, 2, 5, 12, 15 daca nu esti sigur de starea lor la pornire.
Pot alimenta senzori direct din pinul 3V3?
Da, cu limita. Regulatorul AMS1117-3.3 de pe DevKit poate livra pana la ~800mA total, din care ESP32 consuma ~80-250mA activ. Ramai cu maxim ~500mA pentru perifericele tale. Pentru senzori simpli (DHT22, BMP280, OLED) este perfect. Pentru motoare sau multe LED-uri, alimenteaza extern si foloseste doar GND comun.
Pot folosi I2C pe alti pini in afara de GPIO 21/22?
Da. ESP32 are I2C remappable pe aproape orice GPIO. In Arduino IDE: Wire.begin(SDA_pin, SCL_pin). Exemplu: Wire.begin(4, 5). Poti rula chiar doua bus-uri I2C simultan pe pini diferiti cu Wire si Wire1.
Ce inseamna "GPIO input only" la 34, 35, 36, 39?
Acesti 4 pini nu au tranzistori de iesire intern — pot doar citi, niciodata scrie. In plus, nu au rezistente pull-up sau pull-down interne, deci foloseste rezistente externe (10kΩ) daca ai nevoie de nivel definit. Avantaj: sunt cei mai curati pentru citire ADC precisa.
De ce apare garbage in Serial Monitor la pornire?
Primele mesaje la pornire sunt la 74880 baud (bootloader Espressif) — sunt caractere ciudate in monitorul setat pe 115200. Dupa ce codul tau ruleaza, urmeaza la baud-ul setat de tine. Solutie: seteaza monitorul la 74880 daca vrei sa citesti mesajele de boot, sau ignora primele linii la 115200.
Cat de precis este ADC-ul ESP32?
ADC-ul ESP32 este 12-bit teoretic (0–4095) dar in practica are neliniaritate semnificativa, mai ales intre 0–100mV si 3000–3300mV. Precizia reala este de circa 9–10 biti efectivi. Espressif ofera o functie de calibrare esp_adc_cal_get_voltage() care imbunatateste substantial rezultatele. Pentru precizie ridicata, foloseste un ADC extern (ADS1115 via I2C).
Pot conecta semnale de 5V direct pe GPIO-urile ESP32?
NU. GPIO-urile ESP32 sunt tolerate la maxim 3.6V. Semnalele de 5V (Arduino, senzori vechi) vor deteriora chip-ul in timp sau imediat. Solutie: level shifter bidirecțional (ex: TXS0108E, BSS138) sau simplu divizor rezistiv (10kΩ + 20kΩ) pentru semnale unidirectionale.
Care este diferenta intre ESP32 si ESP8266?
ESP32 are: 2 nuclee CPU vs 1 / 240MHz vs 160MHz / Bluetooth 4.2 BLE (inexistent pe ESP8266) / mai multi GPIO (34 vs 17 utili) / DAC real / touch sensors / mai multa RAM (520KB vs 96KB) / consum mai mare dar si performanta mai mare. ESP8266 este mai ieftin si mai simplu pentru proiecte WiFi-only de baza.