Esp32 | Skills Pool
Esp32 ESP32 hardware platform specifications including GPIO pins, PWM capabilities, ADC/DAC, communication interfaces, and hardware constraints. Reference this when generating code for ESP32 or validating pin configurations.
Occupation Categories Health & Fitness
Core Specifications
MCU : ESP32-WROOM-32 (Dual-core Xtensa LX6)
Operating Voltage : 3.3V (⚠️ NOT 5V tolerant)
Clock Speed : 240 MHz (dual-core, adjustable)
Flash Memory : 4 MB
SRAM : 520 KB
ROM : 448 KB
Built-in Peripherals : WiFi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE
GPIO Pin Capabilities
Digital GPIO Pins
Available : GPIO 0-39 (40 pins total)
Usable for general I/O : 0-5, 12-19, 21-23, 25-27, 32-39
PWM-Capable Pins
All GPIO pins support PWM via LEDC peripheral (16 independent channels, 0-15)
npx skillvault add ynyxxx/ynyxxx-esp-arduino-skills-skills-platforms-esp32-skill-md
stars 0
Updated Feb 9, 2026
Occupation
Frequency range: 1 Hz to 40 MHz
Resolution: 1-16 bits (configurable)
Recommended for PWM : 16, 17, 18, 19, 21, 22, 23, 25, 26, 27
ADC1 (usable with WiFi) : GPIO 32, 33, 34, 35, 36, 39
12-bit resolution (0-4095)
0-3.3V input range
Attenuation configurable (0dB, 2.5dB, 6dB, 11dB)
ADC2 (CANNOT use when WiFi active) : GPIO 0, 2, 4, 12, 13, 14, 15, 25, 26, 27
Same specs as ADC1
⚠️ Critical : ADC2 is disabled when WiFi is running
Analog Output (DAC) DAC Pins : GPIO 25, GPIO 26
8-bit resolution (0-255)
0-3.3V output range
Use dacWrite(pin, value)
Interrupt-Capable Pins All GPIO pins support interrupts
Rising edge, falling edge, both edges, low level, high level
Use attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
Communication Interfaces
UART (Serial) UART0 : RX=GPIO3, TX=GPIO1 (connected to USB)
Default for Serial.println()
Used by bootloader
UART1 : RX=GPIO9, TX=GPIO10
⚠️ Connected to flash memory, not recommended for general use
UART2 : RX=GPIO16, TX=GPIO17
Recommended for external serial devices
Can be remapped to other pins
I2C (Wire) Default pins : SDA=GPIO21, SCL=GPIO22
Can be remapped to any GPIO pair
Master or slave mode
Standard (100 kHz) and Fast (400 kHz) modes
SPI
MOSI=GPIO23
MISO=GPIO19
SCK=GPIO18
SS=GPIO5
MOSI=GPIO13
MISO=GPIO12
SCK=GPIO14
SS=GPIO15
Both can be remapped to other pins.
Pin Constraints and Special Functions
GPIO 34, 35, 36, 39 are INPUT ONLY
No internal pull-up/pull-down resistors
Cannot be used with pinMode(pin, OUTPUT)
Cannot be used with pinMode(pin, INPUT_PULLUP)
⚠️ Strapping Pins (Boot Mode) These pins affect boot mode and should be avoided for critical functions:
Must be HIGH during boot
Has internal pull-up
Boot button usually connected here
Safe to use after boot
Must be LOW or floating during boot
Has internal pull-down
Some boards have built-in LED here
Controls SDIO slave timing
Has internal pull-up
Controls flash voltage (VDD_SDIO)
Must be LOW during boot for 3.3V flash
Has internal pull-down
Must be HIGH during boot
Controls boot message output
Has internal pull-up
Touch Sensing Touch-capable pins : GPIO 0, 2, 4, 12, 13, 14, 15, 27, 32, 33
Use touchRead(pin) to get capacitance value
Threshold-based touch detection
RTC GPIO (Deep Sleep Wake) RTC_GPIO pins : 0, 2, 4, 12-15, 25-27, 32-39
Can wake ESP32 from deep sleep
Retain state during deep sleep
Pin Selection Best Practices
For Digital Output (LED, Relay, etc.) Best choices : 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
Avoid : Strapping pins (0, 2, 5, 12, 15), input-only pins (34-39)
Best choices : 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33, 34, 35, 36, 39
Avoid : Strapping pins if possible
For PWM (Servo, Motor, LED dimming) Best choices : 16, 17, 18, 19, 21, 22, 23, 25, 26, 27
Avoid : Strapping pins, input-only pins
Best choices : 32, 33, 34, 35, 36, 39 (ADC1 - works with WiFi)
Avoid : ADC2 pins if using WiFi (0, 2, 4, 12-15, 25-27)
For I2C Default : SDA=21, SCL=22 (recommended to keep default)
Alternative : Any GPIO pair except input-only pins
For SPI Recommended : Use default VSPI pins (23, 19, 18, 5)
Alternative : HSPI or custom pins
Power and Current
Max current per GPIO : 40 mA (recommended 20 mA)
Max total current : 200 mA across all pins
Operating voltage : 3.3V logic level
⚠️ Never connect 5V signals directly - use level shifters
Pin Conflict Checker Before assigning a pin, verify:
✅ Pin supports required function (INPUT/OUTPUT/PWM/ADC/etc.)
✅ Not an input-only pin if output needed (avoid 34, 35, 36, 39)
✅ Not a strapping pin if possible (avoid 0, 2, 5, 12, 15)
✅ Not already used by another peripheral in your project
✅ If using WiFi, avoid ADC2 pins for analog input
Common Pin Assignments
Safe General Purpose Pins These are the safest pins for most projects:
GPIO 16, 17 : Often free, good for general I/O
GPIO 21, 22 : I2C default but can be repurposed
GPIO 23 : VSPI MOSI but can be repurposed
GPIO 25, 26 : Have DAC if needed
GPIO 32, 33 : Good for analog or digital
Pins to Avoid
GPIO 6-11 : Connected to flash memory (SPI flash)
GPIO 34-39 : Input only
GPIO 1, 3 : UART0 (USB serial)
Hardware Errata
ADC readings can be affected by WiFi activity (use ADC1)
Some boards have LED on GPIO 2 that can interfere
Touch sensor values vary with board design
Deep sleep current depends on which pins are used
02
Core Specifications
Data Analysis
Data Analyst SQL, pandas, and statistical analysis expertise for data exploration and insights.
Use when: analyzing data, writing SQL queries, using pandas, performing statistical analysis,
or when user mentions data analysis, SQL, pandas, statistics, or needs help exploring datasets.
Finance & Investment
Project Planner Breaks down complex projects into actionable tasks with timelines, dependencies, and milestones.
Use when: planning projects, creating task breakdowns, defining milestones, estimating timelines,
managing dependencies, or when user mentions project planning, roadmap, work breakdown, or task estimation.
Health & Fitness
Fitness Nutrition Gym workout planner and nutrition tracker. Search 690+ exercises by muscle, equipment, or category via wger. Look up macros and calories for 380,000+ foods via USDA FoodData Central. Compute BMI, TDEE, one-rep max, macro splits, and body fat — pure Python, no pip installs. Built for anyone chasing gains, cutting weight, or just trying to eat better.