Let's explore in this tutorial, the ESP32, the fantastic newer Development Kit board for IoT use. This board, developed by Espressif, should be the NodeMCU's successor, due to its low price and great features. But is also important to point that NOT ALL libraries or functions that you are used to working with ESP8266 and/or Arduino are yet functional on this new board. Oct 20, 2017 Board: ESP32 Dev Module Core Installation/update date: 11/jul/2017 IDE name: Arduino IDE Flash Frequency: 40Mhz Upload Speed: 115200. Description: the pin(25) is a dac pin. I call dacWrite(25, 0), the pin(25) output voltage should be 0v, but output is 0.1v.
- Esp32 Dev Kit
- Esp32 Dev Kit V1
- Esp32 Dev Kit C Voltage Output Pin System
- Esp32 Dev Kit C Voltage Output Pin Code
- Esp32 Dev Kit C Voltage Output Pink
ESP32 is a new IoT device comes with Dual core CPU, WiFi, Bluetooth, In this tutorial we start with ESP32 Simple LED Blink Example. For software setup with arduino IDE read this.
ESP32 DevKit V1 comes with on board red LED which is connected to GPIO2 same as ESP8266 blink example.
Steps to Make LED Blink
Step 1: Connect Board to Laptop
Step 2: ESP32 LED Blink Example Code
Upload this program to ESP32. Select boar ESP32 DEV Module from Tools >> Boards menu, then select appropriate com port. Upload the below program.
ESP32 LED Blink Example
- It has on board 18 Analog to digital convertsADCs. Each ADC is 12 bit SAR technology based.
- 2 digital to analog converts DACs.
- It integrates 9 touch sensors.
- For communication, it has 2 UART communications channels, 2 I2C communications interfaces, two I2S channels and one CAN communication interface.
- It has 16 pulse width modulation channels.
- It also has a cryptographic hardware acceleration module for various cryptographic algorithms like RSA, AES.
Introduction ESP32 pinout
The picture given below explains all the pins of this board. As I mentioned earlier chip which is used with the board has 48 GPIO pins. But we can not use all pins through these development boards.
GPIO pins of ESP32 DEVKIT
As mentioned earlier, the chip used with this board has 48 GPIO pins, but all pins are not accessible through development boards. ESP32 devkit has 36 pins and 18 on each side of the board as shown in the picture above. It has 34 GPIO pins and each pin has multiple functionalities which can be configured using specific registers. There are many types of GPIOs available like digital input, digital output, analog input, and analog output, capacitive touch, UART communication and many other features mentioned above.
Digital input GPIO pins
It has six GPIO pins which can be used as digital input pins only. They cannot be configured as digital output pins. They do not have internally connected push pull resistors. They can only be used as digital input pins.
- GPIO34
- GPIO35
- GPIO36
- GPIO37
- GPIO38
- GPIO39
Esp32 Dev Kit
Check this tutorial: How to use push button with ESP32
Analog to digital converter or Analog GPIO pins
This development board supports 18 ADC channels. And each channel is of 12 bits. So it has a good resolution. It can be used to measure analog voltage, current and any analog sensor which provides output in the form of analog voltage. These ADCs can also be used in sleep mode for lower power consumption. Each ADC channel has a resolution of 12 bits which is equal to
3.3 / 4095 where 3.3 volt is a reference voltage and 4095 is minimum step by ADC
So the minimum voltage, we can measure with these ADC channels is about 80 microvolt. Anything less than this will be an error. I will talk more about it in coming tutorials. The major drawback of ESP32 ADC is that it has a nonlinear behavior. you can check the diagram below:
Esp32 Dev Kit V1
Mapping of Analog pins with GPIO pins is shown below:
- ADC1_CH0 – GPIO36
- ADC1_CH1 – GPIO37
- ADC1_CH2 – GPIO38
- ADC1_CH3 – GPIO39
- ADC1_CH4 – GPIO32
- ADC1_CH5- GPIO33
- ADC1_CH6 – GPIO34
- ADC1_CH7 – GPIO35
- ADC2_CH0 – GPIO4
- ADC2_CH1 – GPIO0
- ADC2_CH2 – GPIO2
- ADC2_CH3 – GPIO15
- ADC2_CH4 – GPIO13
- ADC2_CH5 – GPIO12
- ADC2_CH6 – GPIO14
- ADC2_CH7 – GPIO27
- ADC2_CH8 – GPIO25
- ADC2_CH9 – GPIO26
Check this tutorial : How to use ADC of ESP32
Digital to analog converter pins
This development board has two onboard integrated 8-bit DAC. DACs are used to convert digital signals into analog signals. DACs has many applications like voltage control and PWM control.
- DAC_1 – GPIO25
- DAC_2 – GPIO26
Touch sensor pins of Devkit
ESP-WROOM-32 provide on board 10 capacitive touch sensors. So you don’t need to use separate touch sensors in your project when you are using this development board. These capacitive touch sensors can be used to detect any electrical and magnetic waves around like magnetic field detection. You can use a small array of pads instead of push buttons with these touch sensors.
- TOUCH0 – GPIO4
- TOUCH1 – GPIO0
- TOUCH2 – GPIO2
- TOUCH3 – GPIO15
- TOUCH4 – GPIO13
- TOUCH5 – GPIO12
- TOUCH6 – GPIO14
- TOUCH7 – GPIO27
- TOUCH8 – GPIO33
- TOUCH9 – GPIO32
Memory card interfacing pins
It also supports memory card interfacing through these pins.
- HS2_CLK – MTMS
- HS2_CMD – MTDO
- HS2_DATA0 – GPIO2
- HS2_DATA1 – GPIO4
- HS2_DATA2 – MTDI
- HS2_DATA3 – MTCK
External interrupt pins
All general purpose input output pins can be used as external interrupt. External interrupts are very useful. When you want to monitor change across any pin, you can use this pin as an interrupt instead of repeatedly monitoring the state of this pin.
PWM GPIO pins
All general purpose input output pins can be used to generate PWM except digital input pins from GPIO pins 34-39. Because these pins cannot be used as digital output pins. PWM signals are digital output signals. The maximum frequency of these PWM pins is 80 MHz. you can configure any other pin as a PWM pin by following these steps:
- Select a frequency for pulse width modulation.
- Select the duty cycle or pulse width.
- Select the PWM channel. ESP32 provides 16 PWM channels.
- Assign a digital pin to select the PWM channel.
PWM motor control feature
It also supports motor control feature through internal registers of ESP32 chip. you just need to configure these registers with any GPIO pins. you can find more information about these registers in the datasheet. Registers names are given below:
- PWM1_OUT_IN0~2
- PWM0_FLT_IN0~2
- PWM1_FLT_IN0~2
- PWM0_CAP_IN0~2
- PWM1_CAP_IN0~2
- PWM0_SYNC_IN0~2
- PWM1_SYNC_IN0~2
I2C communication pins
It has dedicated pins available for two-wire I2C communication. One pin is used for data transfer and another pin is used for clock synchronization.
Esp32 Dev Kit C Voltage Output Pin System
- GPIO21 is SDA pin.
- GPIO22 is SCL pin.
We have posted an article on I2C LCD interfacing with ESP32. This post explains how to I2C pins. you can read complete article:
RTC pins of ESP32 devKit
This board also provide RTC pins which can be used to trigger ESP32 from sleep mode.
- 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
Esp32 Dev Kit C Voltage Output Pin Code
Hall sensor pin
- A complete guide on How to use built-in hall effect sensor of ESP32
Esp32 Dev Kit C Voltage Output Pink
It also has one hall sensor which is used to detect the magnetic field. Whenever you please this development board in the magnetic field, ESP32 generates a small voltage which can be measured with any pin. I will post a tutorial on in coming articles. Other features of ESP32 development board and pins are shown in the above picture.
If you liked this tutorial, you may also like to check these tutorials and projects: