MakerLab
ESP32ESP32-DevKitC

ESP32-DevKitC: Your Gateway to Powerful IoT Development

The ESP32-DevKitC is a versatile development board featuring Espressif's flagship ESP32 chip, ideal for Wi-Fi and Bluetooth enabled projects.

ESP32-DevKitC

The ESP32-DevKitC is a popular and accessible development board designed by Espressif Systems, serving as an excellent platform for prototyping and developing applications with the ESP32 System-on-Chip (SoC). It breaks out most of the ESP32's GPIO pins to standard 0.1-inch pitch headers, making it easy to connect external components and sensors. The board typically includes a USB-to-UART bridge for easy programming and serial communication directly from a computer.

At its heart lies the ESP32, a highly integrated Wi-Fi and Bluetooth SoC. This chip features a dual-core Tensilica LX6 microprocessor, running at up to 240 MHz, and includes built-in antennas for Wi-Fi and Bluetooth 4.2 (or later, depending on the specific ESP32 variant used on the board). It boasts a rich set of peripherals, including ADCs, DACs, I2C, SPI, UART, CAN, and PWM controllers, making it suitable for a wide range of embedded applications.

The ESP32-DevKitC represents a significant step up in performance and features compared to its predecessor, the ESP8266. While the ESP8266 offered Wi-Fi connectivity and a single core, the ESP32 adds Bluetooth, dual cores, more GPIOs, and enhanced analog capabilities. This makes the ESP32-DevKitC particularly appealing to makers, students, and engineers looking to build more complex, connected projects that require both wireless communication and substantial processing power, such as IoT devices, smart home controllers, and data loggers.

Initially released around 2017, the ESP32-DevKitC has become a de facto standard for ESP32 development. Its widespread adoption, extensive community support, and the availability of numerous libraries and examples have cemented its position as a go-to board for hobbyists and professionals alike. Its ease of use, combined with the powerful capabilities of the ESP32, makes it an excellent choice for anyone venturing into the world of embedded systems and the Internet of Things.

Specifications

Microcontroller / SoCEspressif ESP32-WROOM-32 (or similar ESP32 module)
ArchitectureDual-core Tensilica LX6 microprocessor
Clock speedUp to 240 MHz
Flash / Storage4MB (on-module, typically)
RAM / SRAM520 KB SRAM
Operating voltage3.3V
Digital I/O pins36 (available on module, exposed pins vary by board revision)
Analog / ADC12-bit SAR ADC (up to 18 channels)
PWMUp to 16 channels
ConnectivityWi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE
USBMicro-USB for power and programming (via CP2102 or CH340 USB-to-UART bridge)
Power input5V via Micro-USB, or 5V/VIN pin, or 3.3V pin
DimensionsApprox. 52mm x 26.5mm

Pinout & pin functions

PinFunction
3V33.3V power output
ENEnable pin (active high; pull low to reset)
VP / GPIO34ADC1 Channel 6, Input only
VN / GPIO35ADC1 Channel 7, Input only
GNDGround
G32 / GPIO32Input/Output, ADC1 Channel 4
G33 / GPIO33Input/Output, ADC1 Channel 5
G25 / GPIO25Input/Output, DAC1, ADC1 Channel 8
G26 / GPIO26Input/Output, ADC1 Channel 9
G27 / GPIO27Input/Output, ADC1 Channel 10
G14 / GPIO14Input/Output, HSPI MISO
G12 / GPIO12Input/Output, HSPI MISO, ADC1 Channel 12
G13 / GPIO13Input/Output, HSPI MOSI, ADC1 Channel 11
G2 / GPIO2Input/Output, ADC1 Channel 2
G4 / GPIO4Input/Output, ADC1 Channel 3
G15 / GPIO15Input/Output, HSPI SCK, ADC1 Channel 13
G5 / GPIO5Input/Output, HSPI CS
G18 / GPIO18Input/Output, I2S0 TX_BCLK, ADC1 Channel 0
G19 / GPIO19Input/Output, I2S0 TX_WS, I2C SCL
G21 / GPIO21Input/Output, I2S0 RX_SCLK, I2C SDA
G22 / GPIO22Input/Output, I2S0 RX_WS, ADC1 Channel 1
G17 / GPIO17Input/Output, I2S0 RX_SD
G16 / GPIO16Input/Output, I2S0 TX_SD
TXD0 / GPIO1UART0 TXD
RXD0 / GPIO3UART0 RXD, ADC1 Channel 0
G0 / GPIO0Input/Output, Boot button
G2 / GPIO2Input/Output, ADC1 Channel 2
G15 / GPIO15Input/Output, HSPI SCK, ADC1 Channel 13
G4 / GPIO4Input/Output, ADC1 Channel 3
G5 / GPIO5Input/Output, HSPI CS
G12 / GPIO12Input/Output, HSPI MISO, ADC1 Channel 12
G13 / GPIO13Input/Output, HSPI MOSI, ADC1 Channel 11
G14 / GPIO14Input/Output, HSPI MISO
G27 / GPIO27Input/Output, ADC1 Channel 10
G26 / GPIO26Input/Output, ADC1 Channel 9
G25 / GPIO25Input/Output, DAC1, ADC1 Channel 8
G33 / GPIO33Input/Output, ADC1 Channel 5
G32 / GPIO32Input/Output, ADC1 Channel 4
G35 / GPIO35Input only, ADC1 Channel 7
G34 / GPIO34Input only, ADC1 Channel 6
G39 / GPIO39Input only, ADC1 Channel 3
G36 / GPIO36Input only, ADC1 Channel 0
G37 / GPIO37Input only, ADC1 Channel 1
G38 / GPIO38Input only, ADC1 Channel 2
VIN5V input
GNDGround
3V33.3V power output
USBMicro-USB connector (5V power and data)

Wiring & circuit basics

The ESP32-DevKitC operates at a logic level of 3.3V. Connecting 5V signals directly to its GPIO pins can damage the microcontroller. Always use a level shifter if interfacing with 5V components. Powering the board can be done via the Micro-USB port (typically 5V at 500mA or more) or the VIN pin. The board has an onboard 3.3V voltage regulator that can supply up to 500mA, but it's advisable to keep total current draw below this to avoid overheating, especially when powering external devices.

A common beginner project is to blink an LED. Connect an LED's anode (longer leg) to a digital GPIO pin (e.g., GPIO2) and its cathode (shorter leg) through a current-limiting resistor (typically 220-330 ohms for a standard LED) to a GND pin. This setup ensures the LED receives the correct voltage and current, preventing damage to both the LED and the ESP32.

For more advanced projects, consider connecting I2C sensors. For example, to connect a BME280 sensor, use 3.3V from the 3V3 pin to the sensor's VCC, GND to a GND pin, and the sensor's SDA and SCL pins to the ESP32's designated I2C pins (GPIO21 for SDA and GPIO19 for SCL). Ensure your code is configured to use these specific pins for I2C communication.

Programming & getting started

The ESP32-DevKitC is well-supported by multiple development environments. For beginners, the Arduino IDE with the ESP32 board manager installed is a popular choice, offering a familiar C++ based programming environment. MicroPython and CircuitPython also provide Python-based alternatives for rapid prototyping. For professional embedded development, Espressif's own ESP-IDF (IoT Development Framework) offers the most comprehensive features and control, while PlatformIO is a versatile IDE extension supporting various frameworks including Arduino and ESP-IDF.

To upload your first program using the Arduino IDE: 1. Install the ESP32 board support via the Boards Manager. 2. Select the correct ESP32 Dev Module from the Tools > Board menu. 3. Connect the ESP32-DevKitC to your computer via USB. 4. Choose the correct COM port from the Tools > Port menu. 5. Write or load a sketch (e.g., the Blink example). 6. Click the Upload button. The board will typically enter bootloader mode automatically, or you may need to press the BOOT button while pressing and releasing the RESET button.

Project ideas

Wi-Fi Connected LED ControlControl an LED remotely via a web server hosted on the ESP32. Uses GPIO pins for the LED and the ESP32's Wi-Fi capabilities. Teaches basic web server implementation and GPIO control.
Bluetooth Low Energy Sensor NodeRead data from a sensor (e.g., temperature, humidity) and broadcast it using BLE. Utilizes ADC pins and the ESP32's BLE stack. Introduces BLE concepts and sensor data acquisition.
Smart Home HubBuild a central hub to control multiple smart devices using Wi-Fi or Bluetooth. Involves managing multiple peripherals, network protocols, and potentially MQTT. Teaches system integration and IoT communication.
Data Logger to CloudCollect sensor data and upload it to a cloud service (like ThingSpeak or AWS IoT) using Wi-Fi. Uses ADC/GPIO pins and Wi-Fi/MQTT libraries. Focuses on data management and cloud connectivity.
ESP32 Web Server with SPIFFSHost a simple HTML interface from the ESP32's internal file system (SPIFFS) to control peripherals. Combines web serving with file system management. Teaches embedded web development and file storage.
Real-time Clock and NTP SyncCreate a network-connected clock that synchronizes its time with an NTP server. Uses Wi-Fi and potentially an external RTC module. Covers network time protocols and timekeeping.

Buying tips & gotchas

When purchasing an ESP32-DevKitC, be aware of numerous clones and variants; look for boards with the ESP32-WROOM-32 module for good compatibility. Ensure the USB-to-UART chip is either CP2102 or CH340, as these are commonly supported by drivers. Avoid powering the board directly from a low-quality 5V adapter, as unstable power can lead to unpredictable behavior. Always double-check pinouts for your specific board revision, as minor variations exist. Essential accessories include jumper wires, a breadboard, and basic electronic components like LEDs and resistors.