The ESP32 Dev Kit C (v4) is a development board created around the ESP32-Wroom-32D chip.
It has 38 pins, in 2.54mm pitch, so it will work with standard breadboards and connectors.
It can be programmed through it’s Micro USB port and the built-in CP2102 Serial Controller. The best way to program it is through the Arduino IDE.
While the ESP32 chip runs natively on 3.3 volts, the Dev Kit has a built in AMS1117 voltage converter, so it can rung through USB or from a 5v supply.
*** WARNING ***
While you can run the Dev Kit through 5 volts, you must NOT connect 5v to any pins other than the 5V pin (to power the unit). You must only connect 3.3v or below to any
|Power supply voltage (USB)||5V DC|
|Input/Output voltage||3.3V DC|
|Operating current required||min. 500mA|
|CPU||Xtensa® single-dual-core 32-bit LX6|
|Clock frequency range||80MHz / 240MHz|
|External flash memory||4MB|
|Communication interfaces||SPI, I2C, I2S, CAN, UART|
|Wi-Fi protocols||802.11 b/g/n (802.11n up to 150 Mbps)|
|Wi-Fi frequency||2.4 GHz – 2.5 GHz|
|Bluetooth||V4.2 – BLE and Classic Bluetooth|
The ESP32 WROOM 32D series of Wi-Fi chips is produced by Espressif Systems. ESP32 WROOM-32D is affordable Wi-Fi module suited for DIY projects in the Internet of Things (IoT) field. This module comes with many GPIOs and support for a variety of protocols like SPI, I2C, I2S, UART, and more. The best part is that it comes with wireless networking included, which makes it different to other micro controllers like the Arduino. This means that it can easily control and monitor devices remotely via Wi-Fi and Bluetooth® at an affordable price.
ESP32 WROOM-32D is a system-on-chip (SoC) integrating a 32-bit Tensilica microcontroller, standard digital peripheral interfaces, antenna switches, RF balun, power amplifier, low noise receive amplifier, filters and power management modules into a small package. It provides 2.4GHz Wi-Fi (802.11 b/g/n, supporting speeds up to 150MB/s), BLE and classic Bluetooth® wireless communication, 34 I/O pins, I2C and I2S interfaces, ADC (analog to digital conversion), DAC (digital to analog conversion), SPI interface, UART on dedicated pins, and PWM (Pulse Width Modulation).
The processor core, called LX6 by Espressif, is based on Xtensa® dual-core 32-bit LX6 processor controller and runs at frequency range between 80-240MHz. It has a 448kB boot ROM, 520kB of on-chip SRAM, and 4MB of external flash memory which can be accessed through SPI interface.
The GPIO pins 34 to 39 are GPIs – input only pins. These pins do not have internal pull-ups or pull-down resistors. They cannot be used as outputs, so use these pins only as inputs: GPIO 34, GPIO 35, GPIO 36, GPIO 39
There is an integrated SPI flash on the ESP-WROOM-32 chip. The pins GPIO6 to GPIO 11 are exposed in certain ESP32 development boards. These pins are connected to the integrated SPI flash on the chip and are not recommended for other uses.
GPIO 6 (SCK/CLK), GPIO 7 (SDO/SD0), GPIO 8 (SDI/SD1), GPIO 9 (SHD/SD2), GPIO 10 (SWP/SD3), GPIO 11 (CSC/CMD).
The ESP32 has 10 internal capacitive touch sensors. The capacitive touch pins can also be used to wake up the ESP32 from deep sleep. These internal touch sensors are connected to these GPIOs: T0 (GPIO 4), T1 (GPIO 0), T2 (GPIO 2), T3 (GPIO 15), T4 (GPIO 13), T5(GPIO 12), T6 (GPIO 14), T7 (GPIO 27), T8 (GPIO 33), T9 (GPIO 32).
The ESP32 has 18 x 12 bits ADC (Analog to Digital converter) input channels (while the ESP8266 only has 1x 10 bits ADC). These are the GPIOs that can be used as ADC and respective channels:
ADC1_CH0 (GPIO 36), ADC1_CH1 (GPIO 37), ADC1_CH2 (GPIO 38), ADC1_CH3 (GPIO 39), ADC1_CH4 (GPIO 32), ADC1_CH5 (GPIO 33), ADC1_CH6 (GPIO 34), ADC1_CH7 (GPIO 35), ADC2_CH0 (GPIO 4), ADC2_CH1 (GPIO 0), ADC2_CH2 (GPIO 2), ADC2_CH3 (GPIO 15), ADC2_CH4 (GPIO 13), ADC2_CH5 (GPIO 12), ADC2_CH6 (GPIO 14), ADC2_CH7 (GPIO 27), ADC2_CH8 (GPIO 25), ADC2_CH9 (GPIO 26).
There are 2 x 8 bits DAC (Digital to Analog converter) channels on the ESP32 to convert digital signals into analog voltage signal outputs. These are the DAC channels:
DAC1 (GPIO25), DAC2 (GPIO26).
There is RTC (Real time clock) GPIO support on the ESP32. The GPIOs routed to the RTC low-power subsystem can be used when the ESP32 is in deep sleep. These RTC GPIOs can be used to wake up the ESP32 from deep sleep when the Ultra Low Power (ULP) co-processor is running. The following GPIOs can be used as an external wake up source: RTC_GPIO0 (GPIO36), RTC_GPIO3 (GPIO39), RTC_GPIO4 (GPIO34), RTC_GPIO5 (GPIO35), RTC_GPIO6 (GPIO25), RTC_GPIO7 (GPIO26), RTC_GPIO8 (GPIO33), RTC_GPIO9 (GPIO32), RTC_GPIO10 (GPIO4), RTC_GPIO11 (GPIO0), RTC_GPIO12 (GPIO2), RTC_GPIO13 (GPIO15), RTC_GPIO14 (GPIO13), RTC_GPIO15 (GPIO12), RTC_GPIO16 (GPIO14), RTC_GPIO17 (GPIO27).
The ESP32 LED PWM (Pulse width modulation) controller has 16 independent channels that can be configured to generate PWM signals with different properties. All pins that can act as outputs can be used as PWM pins (GPIOs 34 to 39 cannot generate PWM). To set a PWM signal, you need to define these parameters in the code: Signal’s frequency, Duty cycle, PWM channel, GPIO where you want to output the signal.
The ESP32 has two I2C channels and any pin can be set as SDA or SCL. When using the ESP32 with the Arduino IDE, the default I2C pins are:
GPIO 21 (SDA), GPIO 22 (SCL).
By default, the pin mapping for SPI pins is:
|VSPI||GPIO 23||GPIO 19||GPIO 18||GPIO 5|
|HSPI||GPIO 13||GPIO 12||GPIO 14||GPIO 15|
Following pins are used to put the ESP32 into bootloader or flashing mode:
GPIO 0, GPIO 2, GPIO 4, GPIO 5 (must be HIGH during boot), GPIO 12 (must be LOW during boot), GPIO 15 (must be HIGH during boot).
Most development boards put the pins in the right state for flashing or boot mode. If some peripherals are connected to the strapping pins and the IDE is unable to upload the code or flash the ESP32, it may be because those peripherals are preventing the ESP32 to enter the right mode. After resetting, flashing, or booting, those pins work as expected. There is Boot Mode Selection documentation guide on the following link. Further and more extensive explanations are not in the scope of this eBook so please, refer to the datasheet.
Some GPIOs change their state to HIGH or output PWM signals at boot or reset. This means that if outputs are connected to these GPIOs this may get unexpected results when the ESP32 resets or boots.
GPIO 1, GPIO 3, GPIO 5, GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended for use), GPIO 14, GPIO 15.
Enable (EN) is the 3.3V regulator’s enable pin. It has a pulled up state and it needs to be connected to ground to disable the 3.3V regulator. This means that this pin can be connected to a push button to restart your ESP32, for example.
The ESP32 Dev Kit C V4 has a micro USB connection port. It is made around CP21202 chip made by Silicon Laboratories which allows USB to UART serial communication. The chip has the virtual COM port (VCP) feature that appears as COM port in PC applications. The CP2102 UART interface implements all RS-232 signals, including control and handshaking signals, so existing system firmware does not need to be modified. To be able to use the ESP32 the driver has to be installed.
ESP32 Dev Kit C V4 has integrated Wi-Fi communication interface and can operate in three different modes: Wi-Fi station, Wi-Fi access point, and both at the same time. It supports the following features:
• 802.11b and 802.11g data-rates
• 802.11n MCS0-7 in both 20MHz and 40MHz bandwidth
• 802.11n MCS32
• 802.11n 0.4μS guard-interval
• Data-rate up to 150 Mbps
• Receiving STBC 2×1
• Up to 21 dBm transmitting power
• Adjustable transmitting power
• Antenna diversity and selection (software-managed hardware)
The ESP32 Dev Kit C V4 has an integrated Bluetooth Radio and supports following features:
• Class-1, class-2 and class-3 transmit output powers and over 30 dB dynamic control range
• π/4 DQPSK and 8 DPSK modulation
• High performance in NZIF receiver sensitivity with over 98 dB dynamic range
• Class-1 operation without external PA
• Internal SRAM allows full speed data transfer, mixed voice and data, and full piconet operation
• Logic for forward error correction, header error control, access code correlation, CRC, demodulation, encryption bit stream generation, whitening and transmit pulse shaping
• ACL, SCO, eSCO and AFH
• A-law, μ-law and CVSD digital audio CODEC in PCM interface
• SBC audio CODEC
• Power management for low power applications
• SMP with 128-bit AES
• UART HCI interface, up to 4 Mbps
• SDIO / SPI HCI interface
• I2C interface
• PCM / I2S audio interface.