ESP32 Dev Board (30-pin)¶
Dual-core Tensilica Xtensa LX6 @ 240 MHz with WiFi + Bluetooth Classic + BLE. The Circuitrocks variant uses the CH9102 USB-serial bridge with micro-USB.
In stock
Espressif
2 files · 1.0 MB
Specs¶
| Spec | Value |
|---|---|
| SoC | ESP32 (Xtensa LX6 dual-core, 240 MHz) |
| Flash | 4 MB (typical) |
| SRAM | 520 KB |
| WiFi | 802.11 b/g/n (2.4 GHz) |
| Bluetooth | Classic + BLE 4.2 |
| GPIO | 25 usable (30-pin board) |
| ADC | 12-bit, 18 channels (use ADC1 if WiFi is on) |
| DAC | 2× 8-bit |
| Operating voltage | 3.3 V (5 V tolerant on USB only) |
| USB-serial | CH9102 |
Pinout summary (30-pin)¶
| Group | Pins |
|---|---|
| Power | 3V3, GND, VIN (5 V) |
| Strapping (boot mode) | GPIO0, GPIO2, GPIO5, GPIO12, GPIO15 |
| Input-only | GPIO34, 35, 36, 39 |
| Default I²C | SDA = GPIO21, SCL = GPIO22 |
| Default SPI (VSPI) | MISO 19, MOSI 23, SCK 18, CS 5 |
| Default UART (UART0) | RX 3, TX 1 (also USB) |
| Touch | T0–T9 (GPIO 0, 2, 4, 12–15, 27, 32, 33) |
Strapping pins
GPIO0 must be HIGH at boot (it pulls low for download mode). Avoid loads on GPIO12 at boot — it sets flash voltage.
Wiring example — WiFi scan¶
#include <WiFi.h>
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
}
void loop() {
int n = WiFi.scanNetworks();
for (int i = 0; i < n; i++) {
Serial.printf("%2d %4d dBm %s\n", i, WiFi.RSSI(i), WiFi.SSID(i).c_str());
}
Serial.println("---");
delay(5000);
}
Board: ESP32 Dev Module in Arduino IDE.
Driver install¶
The CH9102 needs its driver on Windows and older macOS. Download from wch-ic.com/products/CH9102.html. Linux works out of the box (kernel ≥ 5.4).
Schematic¶
Open ESP32-DevKitC schematic (PDF)
The DevKitC schematic matches the 30-pin board's MCU side. USB-serial section differs (CH9102 vs CP2102N) but the ESP32 pinout is identical.
Last updated: 2026-05-13 · Source on GitHub