ESP32-DevKitC-VE: Your Gateway to Powerful IoT Projects
A versatile development board featuring the ESP32-WROOM-32 module, ideal for Wi-Fi and Bluetooth enabled embedded applications.
The ESP32-DevKitC-VE is a popular and affordable development board designed to easily prototype with Espressif's ESP32 System-on-Chip (SoC). It provides a convenient platform for makers, students, and engineers to leverage the ESP32's extensive capabilities without the need for complex circuit design. The board breaks out most of the ESP32's GPIO pins to standard 0.1-inch headers, making it simple to connect sensors, actuators, and other peripherals.
At its heart, the ESP32-DevKitC-VE utilizes the ESP32-WROOM-32 module, which integrates the powerful ESP32 chip. The ESP32 is a dual-core Tensilica Xtensa LX6 microprocessor running at up to 240MHz, equipped with built-in Wi-Fi (802.11 b/g/n) and Bluetooth (v4.2 BR/EDR and BLE) connectivity. This makes it an excellent choice for Internet of Things (IoT) projects requiring wireless communication.
Released around 2019, the ESP32-DevKitC-VE represents a mature iteration of Espressif's development boards, building upon earlier designs. It strikes a balance between extensive features and ease of use, making it suitable for a wide range of applications, from simple sensor data logging to complex smart home automation systems. Its widespread adoption means a vast community and abundant resources are available for support and inspiration.
This board is particularly well-suited for makers looking to explore IoT, wireless sensor networks, robotics, and embedded machine learning. Its integrated Wi-Fi and Bluetooth simplify connectivity, reducing the need for external modules. The availability of multiple development environments, including Arduino IDE, MicroPython, and Espressif's own ESP-IDF, caters to various skill levels and project requirements.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ESP32-WROOM-32 module (based on ESP32-D0WDQ6 chip) |
| Architecture | Dual-core Tensilica Xtensa LX6 |
| Clock speed | Up to 240 MHz |
| Flash / Storage | 4 MB (on ESP32-WROOM-32 module) |
| RAM / SRAM | 520 KB SRAM |
| Operating voltage | 3.3V |
| Digital I/O pins | 36 (some shared or not accessible on this board) |
| Analog / ADC | 12-bit, up to 18 channels |
| PWM | Up to 16 channels |
| Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE |
| USB | Micro-USB for power and programming (CP2102 or CH340 USB-to-Serial converter) |
| Power input | 5V via Micro-USB or 5V/Vin pin, 3.3V via 3.3V pin |
| Dimensions | Approx. 52mm x 26.5mm (PCB) |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | 3.3V Power Output |
| GND | Ground |
| EN | Enable (Reset) |
| GPIO34 | Input only ADC1_CH6 |
| GPIO35 | Input only ADC1_CH7 |
| GPIO36 | Input only ADC1_CH0 |
| GPIO39 | Input only ADC1_CH3 |
| GPIO32 | ADC1_CH4 |
| GPIO33 | ADC1_CH2 |
| GPIO25 | DAC1 ADC2_CH8 |
| GPIO26 | DAC2 ADC2_CH9 |
| GPIO27 | ADC2_CH7 |
| GPIO14 | ADC2_CH6 |
| GPIO12 | ADC2_CH5 |
| GPIO13 | ADC2_CH4 |
| GPIO4 | GPIO4 |
| GPIO2 | GPIO2 |
| GPIO15 | ADC2_CH3 Input only |
| GPIO5 | GPIO5 |
| GPIO18 | ADC1_CH5 SPI SCK |
| GPIO19 | ADC1_CH6 SPI MISO |
| GPIO21 | I2C SDA |
| GPIO22 | I2C SCL |
| GPIO23 | ADC1_CH9 SPI MOSI |
| GPIO17 | SPI CS0 |
| GPIO16 | GPIO16 |
| GPIO0 | Boot button input GPIO0 |
| GPIO2 | Built-in LED GPIO2 |
| GPIO1 | UART TXD0 |
| GPIO3 | UART RXD0 |
| VIN | 5V Power Input |
| GND | Ground |
| 5V | 5V Power Output |
| 3.3V | 3.3V Power Output |
| RST | Reset Button |
Wiring & circuit basics
The ESP32-DevKitC-VE operates at a logic level of 3.3V. Connecting 5V devices directly to its GPIO pins can cause damage. If you need to interface with 5V components, use a logic level shifter. Powering the board can be done via the Micro-USB port (typically 5V from a computer or USB adapter) or the VIN pin, which should also receive a 5V supply. The onboard voltage regulator will step this down to 3.3V for the ESP32 chip and other components. Ensure your power source can supply at least 500mA, especially when using Wi-Fi or Bluetooth, to avoid brownouts.
For a simple LED project, connect an LED's anode (longer leg) to a digital GPIO pin (e.g., GPIO2, which also controls the onboard LED) through a current-limiting resistor (typically 220-330 ohms). Connect the LED's cathode (shorter leg) to a GND pin. When the GPIO pin is HIGH (3.3V), current flows, and the LED lights up. For an I2C sensor, connect its SDA pin to the board's SDA pin (GPIO21) and its SCL pin to the board's SCL pin (GPIO22). Also, connect the sensor's VCC to the board's 3.3V pin and its GND to a GND pin. Remember to enable the pull-up resistors on the SDA and SCL lines, either externally or via software configuration if the sensor doesn't have them built-in.
Always double-check pin assignments and voltage levels before connecting external components. Incorrect wiring can permanently damage the ESP32-DevKitC-VE or the connected peripherals. Refer to the specific datasheet of any sensor or module you intend to use for precise connection details and operating requirements.
Programming & getting started
The ESP32-DevKitC-VE is well-supported by several popular development environments. For beginners and those familiar with Arduino, the Arduino IDE is an excellent choice. Install the ESP32 board support package via the Board Manager. For a more Pythonic experience, MicroPython or CircuitPython can be flashed onto the device, offering a high-level programming environment. For advanced users and complex projects, Espressif's official ESP-IDF (Espressif IoT Development Framework) provides the most control and access to all hardware features. PlatformIO, an open-source ecosystem for IoT development, also offers robust support for the ESP32.
To upload your first program using the Arduino IDE: 1. Install the ESP32 board support. 2. Select the 'ESP32 Dev Module' from the Tools > Board menu. 3. Choose the correct COM port associated with your board (check Device Manager on Windows or `ls /dev/tty*` on Linux/macOS). 4. Write a simple sketch, like the 'Blink' example, modifying the pin number if necessary (e.g., use GPIO2 for the onboard LED). 5. 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 RST button, then release BOOT.