ESP32 DevKit

๐Ÿ” Hover or click board hotspots to inspect components
Select a component to view technical specifications.

Components Index

What is ESP32?

The ESP32 is a powerful System on a Chip (SoC) that integrates a 32-bit dual-core processor with native 2.4 GHz Wi-Fi and dual-mode Bluetooth. It's the go-to choice for IoT projects requiring wireless connectivity and high computational power.

Its Dual-core Architecture allows one core to handle time-critical wireless communications (like maintaining a Wi-Fi link) while the other core executes your main application logic, preventing lag and connection drops common in single-core systems. With built-in WiFi and Bluetooth, the ESP32 eliminates the need for external wireless modules. Perfect for advanced projects.

Key Features

๐Ÿ“ก

Built-in WiFi & Bluetooth

802.11 b/g/n WiFi (up to 150 Mbps) and Bluetooth v4.2 BR/EDR and BLE for seamless wireless connectivity.

โšก

Dual-Core 240MHz

Xtensaยฎ 32-bit LX6 dual-core processor running up to 240 MHz for parallel task execution.

๐Ÿ’พ

520KB SRAM + 4MB Flash

Ample memory for complex applications, data logging, and web server hosting.

๐Ÿ”Œ

34 GPIO Pins

Extensive I/O capabilities with support for SPI, I2C, UART, PWM, ADC, and DAC.

๐Ÿ‘†

10 Capacitive Touch Sensors

Built-in touch sensing without external components for intuitive user interfaces.

๐Ÿ”‹

Low Power Modes

Multiple sleep modes (deep sleep, light sleep) for battery-powered IoT applications.

Pin Configuration

GPIO Pins (34 total)

Configurable as digital input/output. Most pins support internal pull-up/pull-down resistors.

  • Input-only pins: GPIO 34-39 (no pull-up/down)
  • Strapping pins: GPIO 0, 2, 5, 12, 15 (boot config)
  • PWM: All output-capable pins support PWM
  • Touch: GPIO 0, 2, 4, 12-15, 27, 32, 33

ADC & DAC

12-bit ADC with 18 channels and 8-bit DAC with 2 channels for analog signal processing.

  • ADC1: GPIO 32-39 (8 channels)
  • ADC2: GPIO 0, 2, 4, 12-15, 25-27 (10 channels)
  • DAC: GPIO 25, 26 (audio output capable)
  • Note: ADC2 unavailable when WiFi is active

Power Pins

  • 3.3V: Regulated output (max 600mA)
  • 5V (Vin): USB power or external 5-12V input
  • GND: Multiple ground pins available
  • EN: Enable pin (pull low to reset)
  • Note: ESP32 is 3.3V logic level only

Communication Protocols

WiFi

2.4 GHz 802.11 b/g/n

Built-in WiFi with AP, STA, and AP+STA modes. Supports WPA/WPA2 security.

Bluetooth

v4.2 BR/EDR & BLE

Classic Bluetooth and Low Energy for wireless sensor networks and audio streaming.

SPI

4 SPI interfaces

High-speed serial communication for displays, SD cards, and sensors.

I2C

2 I2C interfaces

Connect multiple devices on the same bus. Configurable on any GPIO.

UART

3 UART interfaces

Serial communication with GPS modules, GSM, and other serial devices.

I2S

Audio interface

Digital audio input/output for microphones and speakers.

Advanced Topics & Expert Knowledge

โš™๏ธ

FreeRTOS Multitasking

ESP32 runs FreeRTOS, allowing true multitasking. Create tasks that run on different cores simultaneously for optimal performance.

xTaskCreatePinnedToCore(Task1, "Task1", 10000, NULL, 1, NULL, 0);

Use case: WiFi on Core 0, sensor processing on Core 1

๐Ÿ’ค

Deep Sleep & Wake Sources

Reduce power consumption to 10ฮผA in deep sleep. Wake from timer, touch, or external GPIO interrupt.

esp_sleep_enable_timer_wakeup(60 * 1000000); // 60s

Battery life: Months on a single charge with proper sleep cycles

๐Ÿ“ก

WiFi Modes & Web Server

Run as Access Point (AP), Station (STA), or both simultaneously. Host web servers, REST APIs, or WebSocket connections.

WiFi.mode(WIFI_AP_STA); // Dual mode

Pro tip: Use AsyncWebServer for non-blocking HTTP requests

๐Ÿ”„

OTA (Over-The-Air) Updates

Update firmware wirelessly without physical access. Essential for deployed IoT devices and remote installations.

ArduinoOTA.begin(); // Enable OTA updates

Security: Always use password protection for OTA

๐Ÿ“

File System (SPIFFS/LittleFS)

Store HTML, CSS, JSON config files, or sensor logs in flash memory. Serve web pages directly from ESP32.

File file = LittleFS.open("/config.json", "r");

Recommendation: Use LittleFS over SPIFFS for better reliability

๐Ÿ”ต

BLE (Bluetooth Low Energy)

Create BLE servers/clients for smartphone apps, wearables, or mesh networks. Ultra-low power for always-on connectivity.

BLEDevice::init("ESP32_BLE"); // Start BLE

Use case: Fitness trackers, smart home sensors, beacons

๐Ÿ“š Official Citations & Technical References

To ensure the absolute accuracy and reliability of this guide, all specifications, pinouts, and register settings have been cross-verified with official manufacturer documentation: