ESP32 Development board is based on the ESP WROOM32 WIFI + BLE Module.It’s a low-footprint, minimal system development board powered by the latest ESP-WROOM-32 module and can be easily inserted into a solderless breadboard.
It contains the entire basic support circuitry for the ESP-WROOM-32, including the USB-UART bridge, reset- and boot-mode buttons, LDO regulator and a micro-USB connector. Every important GPIO is available to the developer.
The ESP32 -S is a very flexible IOT board that is a significant superset of the popular ESP8266 line. Compared to the ESP8266, it primarily adds significantly more I/O that is very flexible in its functionality as well as Bluetooth. The downside is that being newer, the support is not as extensive as it is for the ESP8266 for some of the unique features such as using the hall effect sensor, IR remote or I2S buses, but items such as CAN bus and capacitive touch are supported in the Arduino IDE.
Besides the IDE, it can also be programmed using the Espressif IDF, Microphytoon, LUA and other programming environments.
Compared to the typical AVR processor of the standard Arduino it also has a larger 4 MB of Flash memory for program space and runs at clock speeds of 160 MHz and can sometimes optionally be overclocked to 240 MHz and therefore has a very fast processing speed. These can be used as a stand-alone MCU in place of something like an Arduino or it can be used as a peripheral in conjunction with another MCU just to provide WiFi, Bluetooth or other unique capabilities that it has.
The board incorporates 2 pushbuttons. One is labeled ‘EN‘ which is the Reset button. The other button is labeled ‘IO0‘ which is also called the Boot button. This button is used to download programs to the board as described in the example program section down below.
The ESP32-S chip allows most of the I/O such as the serial ports and I2C to be multiplexed to any of the GPIO pins for flexibility. The pinout shown in the attached drawing is the default pinout.
The 38-pin board is breadboard compatible and will leave one row of open contacts on each side of the board.
There are a total of 32 GPIO on the board that are brought out to the header pins. The pins are labeled GPIOx. When using with Arduino IDE, the digital pin number is the same as the GPIO pin number, so GPIO2 is referenced as just ‘2’.
The pins labeled ‘FLASH’ (GPIO6 – 11) down by the USB connector are tied to the on-board FLASH memory chip and it is recommended to not use them for any other purposes to avoid possible conflict. That leaves 26 GPIO for general use.
Also note that GPIO 34, 35, 36 and 39 are input only pins and cannot be used for outputs.
All of the digital I/O support PWM and interrupts. In addition they can be configured to have pull-up or pull-down resistors. 16 of the pins support hardware LED PWM.
The small blue on-board LED is connected to GPIO2.
The digital I/O is limited to 3.3V. If using with 5V logic other than over the I2C bus, level translators should be used.
There are two 12-bit analog-to-digital converters (ADC1 / ADC2) which can be multiplexed across up to 16 input pins.
There are two 8-bit digital-to-analog converters (DAC1 / DAC2).
Powering the Board
Internally, the board operates on 3.3V.
There are three mutually exclusive ways to provide power to the board.
- Micro USB port through the USB cable
- 5-9V applied to the VIN 5V pin
- 3.3V applied to the VIN 3.3V pin
Operating current is about 130mA under normal operation and the maximum current draw per the datasheet is 500mA. A red power LED is lit when power is applied.
The ESP32 can be placed into various low power modes when batter operated to maximize battery life. The power LED draws about 3mA and can be removed to reduce that power draw if desired.
Please note that the board does not have power switching circuitry as a typical Arduino does, so ensure only one of these power options are used to power the board at one time or damage may result.
If programming the board in a system that also has VIN power, a USB cable can be modified by cutting the red 5V power wire inside cable, but an easier/cleaner solution is to get a USB Micro-B cable that has both data lines and a DC power switch as shown below. That way the USB DC power can be switched off while keeping the data lines still connected.