A look at the ESP32 PICO KIT development board

ESP32-PICO-KIT is an ESP32-based mini development board produced by Espressif.

The core of this board is ESP32-PICO-D4 – a System-in-Package (SiP) module with complete Wi-Fi and Bluetooth functionalities. Compared to other ESP32 modules, ESP32-PICO-D4 integrates the following peripheral components in one single package, which otherwise would need to be installed separately:

  • 40 MHz crystal oscillator
  • 4 MB flash
  • Filter capacitors
  • RF matching links

This setup reduces the costs of additional external components as well as the cost of assembly and testing and also increases the overall usability of the product.

The development board features a USB-UART Bridge circuit which allows developers to connect the board to a computer’s USB port for flashing and debugging.

All the IO signals and system power on ESP32-PICO-D4 are led out to two rows of 20 x 0.1” header pads on both sides of the development board for easy access. For compatibility with Dupont wires, 2 x 17 header pads are populated with two rows of male pin headers. The remaining 2 x 3 header pads beside the antenna are not populated. These pads may be populated later by the user if required.

Functional Description

The following figure and the table below describe the key components, interfaces, and controls of the ESP32-PICO-KIT board.

Below is the description of the items identified in the figure starting from the top left corner and going clockwise.

Key Component Description
ESP32-PICO-D4 Standard ESP32-PICO-D4 module soldered to the ESP32-PICO-KIT board. The complete ESP32 system on a chip (ESP32 SoC) has been integrated into the SiP module, requiring only an external antenna with LC matching network, decoupling capacitors, and a pull-up resistor for EN signals to function properly.
LDO 5V-to-3.3V Low dropout voltage regulator (LDO).
USB-UART bridge Single-chip USB-UART bridge: CP2102 in V4 provides up to 1 Mbps transfer rates and CP2102N in V4.1 offers up to 3 Mbps transfers rates.
Micro USB Port USB interface. Power supply for the board as well as the communication interface between a computer and the board.
5V Power On LED This red LED turns on when power is supplied to the board. For details, see the schematics in Related Documents.
I/O All the pins on ESP32-PICO-D4 are broken out to pin headers. You can program ESP32 to enable multiple functions, such as PWM, ADC, DAC, I2C, I2S, SPI, etc. For details, please see Section Pin Descriptions.
BOOT Button Download button. Holding down Boot and then pressing EN initiates Firmware Download mode for downloading firmware through the serial port.
EN Button Reset button.

Power Supply Options

There are three mutually exclusive ways to provide power to the board:

  • Micro USB port, default power supply
  • 5V / GND header pins
  • 3V3 / GND header pins

Warning

The power supply must be provided using one and only one of the options above, otherwise the board and/or the power supply source can be damaged.

Pin Descriptions

The two tables below provide the Name and Function of I/O headers on both sides of the board

J2

No. Name Type Function
1 FLASH_SD1 (FSD1) I/O
GPIO8, SD_DATA1, SPID, HS1_DATA1 (See 1) , U2CTS
2 FLASH_SD3 (FSD3) I/O
GPIO7, SD_DATA0, SPIQ, HS1_DATA0 (See 1) , U2RTS
3 FLASH_CLK (FCLK) I/O
GPIO6, SD_CLK, SPICLK, HS1_CLK (See 1) , U1CTS
4 IO21 I/O
GPIO21, VSPIHD, EMAC_TX_EN
5 IO22 I/O
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
6 IO19 I/O
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
7 IO23 I/O
GPIO23, VSPID, HS1_STROBE
8 IO18 I/O
GPIO18, VSPICLK, HS1_DATA7
9 IO5 I/O
GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK
10 IO10 I/O
GPIO10, SD_DATA3, SPIWP, HS1_DATA3, U1TXD
11 IO9 I/O
GPIO9, SD_DATA2, SPIHD, HS1_DATA2, U1RXD
12 RXD0 I/O
GPIO3, U0RXD (See 3) , CLK_OUT2
13 TXD0 I/O
GPIO1, U0TXD (See 3) , CLK_OUT3, EMAC_RXD2
14 IO35 I
ADC1_CH7, RTC_GPIO5
15 IO34 I
ADC1_CH6, RTC_GPIO4
16 IO38 I
GPIO38, ADC1_CH2, RTC_GPIO2
17 IO37 I
GPIO37, ADC1_CH1, RTC_GPIO1
18 EN I
CHIP_PU
19 GND P
Ground
20 VDD33 (3V3) P
3.3V power supply

J3

No. Name Type Function
1 FLASH_CS (FCS) I/O
GPIO16, HS1_DATA4  , U2RXD, EMAC_CLK_OUT
2 FLASH_SD0 (FSD0) I/O
GPIO17, HS1_DATA5 , U2TXD, EMAC_CLK_OUT_180
3 FLASH_SD2 (FSD2) I/O
GPIO11, SD_CMD, SPICS0, HS1_CMD , U1RTS
4 SENSOR_VP (FSVP) I
GPIO36, ADC1_CH0, RTC_GPIO0
5 SENSOR_VN (FSVN) I
GPIO39, ADC1_CH3, RTC_GPIO3
6 IO25 I/O
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
7 IO26 I/O
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
8 IO32 I/O
32K_XP , ADC1_CH4, TOUCH9, RTC_GPIO9
9 IO33 I/O
32K_XN , ADC1_CH5, TOUCH8, RTC_GPIO8
10 IO27 I/O
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17
EMAC_RX_DV
11 IO14 I/O
ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
12 IO12 I/O
ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI , HSPIQ,
HS2_DATA2, SD_DATA2, EMAC_TXD3
13 IO13 I/O
ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
14 IO15 I/O
ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0
HS2_CMD, SD_CMD, EMAC_RXD3
15 IO2 I/O
ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
16 IO4 I/O
ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
17 IO0 I/O
ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1
EMAC_TX_CLK
18 VDD33 (3V3) P
3.3V power supply
19 GND P
Ground
20 EXT_5V (5V) P
5V power supply

 

Testing

Add the ESP32 package using the Arduino IDE as per the steps below

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Starting with 1.6.4, Arduino allows installation of third-party platform packages using Boards Manager. We have packages available for Windows, Mac OS, and Linux (32, 64 bit and ARM).

  • Install the current upstream Arduino IDE at the 1.8 level or later. The current version is at the Arduino website.
  • Start Arduino and open Preferences window.
  • Enter one of the release links above into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.
  • Open Boards Manager from Tools > Board menu and install esp32 platform (and don’t forget to select your ESP32 board from Tools > Board menu after installation).

You will see the ESP32 Pico Kit listed in the ESP32 Arduino list

I used the WifiScan example, this is a hello world type example for detecting Wifi networks nearby

#include "WiFi.h"
 
void setup()
{
    Serial.begin(115200);
 
    // Set WiFi to station mode and disconnect from an AP if it was previously connected
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
 
    Serial.println("Setup done");
}
 
void loop()
{
    Serial.println("scan start");
 
    // WiFi.scanNetworks will return the number of networks found
    int n = WiFi.scanNetworks();
    Serial.println("scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.print(i + 1);
            Serial.print(": ");
            Serial.print(WiFi.SSID(i));
            Serial.print(" (");
            Serial.print(WiFi.RSSI(i));
            Serial.print(")");
            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            delay(10);
        }
    }
    Serial.println("");
 
    // Wait a bit before scanning again
    delay(5000);
}

The output was

scan start
scan done
2 networks found
1: mynetwork1(-63)*
2: mynetwork2(-74)*

Parts List

The board comes in it under $14

ESP32-PICO-KIT ESP32 SiP development board with PICO-D4 male / female

SHARE
Previous articleBMM150 digital geomagnetic sensor and ESP32 example