Specifications
This lesson covers the specifications of the original/classic ESP32 - the chip found in modules like the ESP32-WROOM-32, which is what the rest of this track assumes. Espressif has since released newer variants (ESP32-S2, ESP32-S3, ESP32-C3, and others) which are different chips with their own differences in pinout and peripherals - they are not covered by this track.
Full Specification Table
| Spec | Value |
|---|---|
| CPU | Dual-core Tensilica Xtensa LX6, up to 240MHz |
| RAM | 520KB internal SRAM |
| Flash storage | External SPI flash chip, commonly 4MB on the popular ESP32-WROOM-32 module - exact size varies by module SKU (2MB/4MB/8MB/16MB variants all exist) |
| Wi-Fi | 802.11 b/g/n, 2.4GHz band only (no 5GHz), up to 150Mbps, supports 20MHz and 40MHz channel bandwidth |
| Bluetooth | Bluetooth v4.2 BR/EDR (Classic Bluetooth) and Bluetooth LE (BLE), dual-mode |
| Supply voltage | Recommended 2.3V-3.6V; 3.3V is the typical/standard operating voltage |
| GPIO logic level | 3.3V logic - NOT 5V tolerant |
| ADC | ADC1: 8 channels, ADC2: 10 channels (18 total) |
| DAC | 2 channels (GPIO25, GPIO26), 8-bit resolution |
| Capacitive touch pins | 10 pins total |
What These Specs Actually Mean For You
Dual-core @ up to 240MHz - a single-core microcontroller running your loop has to interleave every task on the same core: reading a sensor, updating an LED, and (if it has wireless at all) servicing the radio all compete for the same cycles. The ESP32's second core changes that picture in practice - it is common for one core to be occupied largely with Wi-Fi/BLE radio-stack housekeeping while your own application logic runs on the other core, so your loop is less likely to stall just because the radio is busy. You do not have to manage this manually to get the benefit; it is simply more headroom than a single-core chip has.
520KB SRAM - generous for a microcontroller (far more than a classic 8-bit Arduino), but still tiny compared to a computer. It is enough for networking buffers, a reasonable number of variables and small data structures, and modest string handling - not for loading large files into memory or running anything resembling desktop software.
External flash - this is where your compiled program (and, in MicroPython's case, your script files) actually lives between power cycles, since SRAM is cleared on every reboot. A larger flash chip (8MB/16MB variants) matters mainly if your program itself is large, or if you plan to store a filesystem of assets on it - a basic blink-an-LED sketch will fit comfortably even on the smallest common size.
Wi-Fi at 2.4GHz only - the ESP32 will connect happily to a 2.4GHz Wi-Fi network but cannot see or join a 5GHz-only network. Many home routers broadcast both bands under the same or different network names - if your ESP32 cannot find your Wi-Fi network at all, check whether you are looking at the 5GHz band.
Bluetooth: Two Stacks, One Radio
The ESP32 supports both Classic Bluetooth (BR/EDR) and Bluetooth LE (BLE) - both stacks are genuinely available on the chip, which is unusual for a low-cost microcontroller. That said, they share the same underlying radio hardware, and running heavy Wi-Fi activity at the same time as Bluetooth at full power needs careful coexistence handling in your firmware - it is not something to assume "just works" flawlessly with zero tuning in every scenario. This track's Bluetooth & BLE lesson goes into when to reach for Classic Bluetooth versus BLE.