From Waveshare Wiki
Jump to: navigation, search

Main Chip: ESP32-S3
Interface: USB Type-C






The ESP32-S3-Pico is a low-cost, high-performance microcontroller development board with a compact size and rich peripheral interfaces.

Adopts ESP32-S3R2 as the main chip, which is an MCU chip with integrated 2.4 GHz Wi-Fi and Bluetooth 5 (LE).
The interface chips are CH343 and CH334, so you can experience the fun of USB and UART development with a single USB-C port, and no more trouble switching interfaces.

The DC-DC chip adopts MP28164, a high-efficiency buck-boost chip, which adopts PWM fixed-frequency current control mode to optimize circuit stability and response speed.

You can choose ESP-IDF, Arduino, MicroPython, or other development environments in software so that you can easily and quickly get started and apply it to the product.


  • Adopts ESP32-S3R2 as the main chip.
  • Comes with Xtensa 32-bit LX7 dual-core processor, capable of running at 240 MHz.
  • Integrated 512KB SRAM, 384KB ROM, 2MB PSRAM, 16MB Flash memory.
  • Type-C connector, easier to use.
  • Onboard CH343 and CH334 chips can meet the needs of USB and UART development via a Type-C interface.
  • Onboard DC-DC chip MP28164, high-efficiency DC-DC buck-boost chip with load current up to 2A.
  • Supports multiple low-power operating states, the adjustable balance between communication distance, data rate, and power consumption to meet the power requirements of various application scenarios.
  • 27 × multi-function GPIO headers.
  • Castellated module allows soldering directly to carrier boards.
  • Rich peripheral interfaces, including full-speed USB OTG, SPI, I2C, UART, ADC, PWM, and DVP (8-bit ~ 16-bit camera interface), LCD interfaces (8-bit ~ 16-bit parallel RGB, I8080, MOTO6800), etc. to achieve various functions flexibly.

Pinout Definition


  • Note: SPI, I2C, UART, and other interfaces can be mapped to most GPIOs through the GPIO Matrix and IO MUX, see the ESP32-S3 datasheet for details.


ESP32-S3-Pico 04.jpg

Development Environment Configuration

  • The following development system is Windows by default.


  • It is recommended to develop with the VSC plug-in.

Develop with VSCode

Install VSCode

1. Open the download page of the official VSCode website, and select the corresponding system and system bit to download.
ESP32-S3-Pico 05.jpg
2. After running the installation package, the rest can be installed by default, but here for the subsequent experience, it is recommended to check boxes 1, 2, and 3.
ESP32-S3-Pico 06.jpg
    • After the first two items are enabled, you can open VSCode directly by right-clicking files or directories, which can improve the subsequent user experience.
    • After the third item is enabled, you can select VSCode directly when you choose how to open it.

Install Espressif IDF Plug-in

  • Note: The latest version of the current plug-in is V1.6.0, for a consistent experience, users can choose the same version as us.
1. Open VSCode and use the shortcut key Shift + Ctrl + X to enter the plugin manager.

ESP32-S3-Pico 07.jpg

2. In the search bar, type Espressif IDF, select the corresponding plug-in, and click install.

ESP32-S3-Pico 08.jpg

3. Press F1 to enter:
esp-idf: configure esp-idf extension

ESP32-S3-Pico 09.jpg

4. Choose express (This tutorial is for users who install it for the first time, so only the first general installation tutorial is covered.)

ESP32-S3-Pico 10.jpg

5. Open and display this screen.

ESP32-S3-Pico 11.jpg

6. Choose a server to download.

ESP32-S3-Pico 12.jpg

7. Select the ESP-IDF version you want now, we choose the latest V5.0.1 (note that ESP-IDF started to support ESP32-S3 only after V4.4).

ESP32-S3-Pico 13.jpg

8. The following two are the ESP-IDF directory installation address and the ESP-IDF required tools installation address respectively.

ESP32-S3-Pico 14.jpg

    • Note: If you have installed ESP-IDF before, or if it has failed, please make sure to delete the file completely or create a new path.
9. Once the configuration is finished, click "install" to download.

ESP32-S3-Pico 15.jpg

10. Enter the download page, and it will automatically install the corresponding tools and environment, just wait a moment.

ESP32-S3-Pico 15.jpg

11. After the installation is completed, it will enter the following screen, indicating that the installation is finished.

ESP32-S3-Pico 17.jpg

Official Demo Usage

  • Click here to view more details provided by the official ESP.
Creating a Demo
1. Using the shortcut F1, type:
esp-idf:show examples projects

ESP32-S3-Pico 18.jpg

2. Choose your current IDF version:

ESP32-S3-Pico 19.jpg

3. Take "Hello World" as an example:

ESP32-S3-Pico 20.jpg

4. ① Choose the corresponding demo.
5. ② The readme file will explain which chip the demo is suitable for (the following section will introduce how to use the demo and its file structure, which is omitted here).
6. ③ Click to create the demo.
7. Choose the path to place the demo and ensure that there is no folder with the same name as the demo.

ESP32-S3-Pico 21.jpg

Modify COM Port
1. The corresponding COM port is displayed here, click on it to modify.

ESP32-S3-Pico 22.jpg

2. We check the device manager COM port, and select COM5, please select according to your corresponding COM port:

ESP32-S3-Pico 23.jpg

3. Choose the project and demo.

ESP32-S3-Pico 24.jpg

4. Then the COM port is modified.
Modify the Driver
1. Here shows the driver used, click here to modify the corresponding driver:

ESP32-S3-Pico 25.jpg

2. Choose the project or demo:

ESP32-S3-Pico 24.jpg

3. Wait for a few seconds after clicking.

ESP32-S3-Pico 27.jpg

4. Choose the driver we need, that is, the main chip ESP32S3.

ESP32-S3-Pico 28.jpg

5. Choose the openocd path, we can just choose one as it doesn't matter.

ESP32-S3-Pico 29.jpg

The Rest of the Status Bar Introduction

ESP32-S3-Pico 30.jpg

  • ① SDK configuration editor: many functions and configurations of ESP-IDF can be modified within it.
  • ② Clean up everything and delete all compiled files.
  • ③ Compile.
  • ④ Current download method, default is UART.
  • ⑤ Program the current firmware, please do it after compiling.
  • ⑥ Open the serial monitor to view serial information.
  • ⑦ Combined button for compiling, programming, and opening the serial monitor (most commonly used during debugging).
Compile, Program, and Serial Port Monitoring
1. Click on the Compile, Program, and Open Serial Monitor buttons we described earlier.

ESP32-S3-Pico 31.jpg

2. It may take a long time to compile, especially for the first time.

ESP32-S3-Pico 32.jpg

  • During this process, ESP-IDF may take up a lot of CPU resources and therefore may cause system lag.
3. If it fails to download, you can hold the boot button to power on and then release the button, and then program the download.

ESP32-S3-Pico 33.jpg

4. After successful download, it will automatically enter the serial monitor, and you can see the corresponding information output from the chip and prompt to reboot after 10s.

ESP32-S3-Pico 34.jpg


  • If you do not use arduino-esp32 before, you can refer to this link.

Install Arduino

1. Open the official software download webpage, and choose the corresponding system and system bits to download.

ESP32-S3-Pico 35.jpg

2. You can choose "Just Download", or "Contribute & Download".

ESP32-S3-Pico 36.jpg

3. Run to install the program and install it all by default.

Install arduino-esp32

1. Open Preferences.

ESP32-S3-Pico 37.jpg

2. Add the corresponding board manager URLs and click it.

ESP32-S3-Pico 38.jpg

3. Add the following content in the blank.

ESP32-S3-Pico 39.jpg

4. Save the setting.
5. Open the board manager and enter ESP32 in the search bar.

ESP32-S3-Pico 40.jpg

6. Wait for downloading.

ESP32-S3-Pico 41.jpg

7. arduino-esp32 is downloaded.

ESP32-S3-Pico 42.jpg

Use Arduino Demo

1. Select the demo, here we choose the demo to get the chip ID.

ESP32-S3-Pico 43.jpg

2. Select the board as ESP32S3 Dev Module.

ESP32-S3-Pico 44.jpg

3. Choose the COM5 port of ESP32-S3 USB.

ESP32-S3-Pico 45.jpg

4. Click the download button, then it compiles and downloads automatically.

ESP32-S3-Pico 47.jpg

5. Finish.

ESP32-S3-Pico 48.jpg

6. Open the Serial Port Monitor.

ESP32-S3-Pico 49.jpg

7. See the chip ID of the loop output.

ESP32-S3-Pico 50.jpg


Flash Firmware

1. For ESP32-S3-Pico, please download firmware: Click here to download the burner and firmware.
For ESP32-S3-DEV-KIT-N8R8, please download firmware: or download from micropython
2. Unzip the package downloaded before and enter.

ESP32-S3-Pico 54.jpg

3. Enter flash_download_tool_3.9.4 folder and open flash_download_tool_3.9.4.exe.

ESP32-S3-Pico 51.jpg

4. Choose the corresponding chip, choose ESP32-S3.

ESP32-S3-Pico 52.jpg

5. Choose the corresponding COM port, we have configured it and you just click Start to download.

ESP32-S3-Pico 53.jpg

    • ①Choose the COM port.
    • ②Download key.

Install Thonny

1. Open official Thonny website.

ESP32-S3-Pico 58.jpg

2. Select the corresponding system and version, here I choose "Windows", and the mouse has to move to Windows, only then will the corresponding information be displayed.

ESP32-S3-Pico 55.jpg

3. Just install it all the way by default.

ESP32-S3-Pico 56.jpg

4. Finish.

ESP32-S3-Pico 57.jpg

Get the Demo

1. Click here to download the demo.
2. Unzip the demo zip file.

ESP32-S3-Pico 89.jpg

Run the Demo

1. Open Thonny and choose Configure Interpreter.

ESP32-S3-Pico 90.jpg

2. Choose MicroPython (ESP32) as the Interpreter.

ESP32-S3-Pico 91.jpg

3. Click OK to save.

ESP32-S3-Pico 92.jpg

4. Click Stop or Ctrl + F2.

ESP32-S3-Pico 93.jpg

5. You can see the MicroPython version information and the board name.

ESP32-S3-Pico 94.jpg

6. Open the files.

ESP-S3-Pico 95.jpg

7. Choose our demo file and open a demo, here we choose a wifi-scan demo.

ESP-32-Pico 96.jpg

  • ①Current local file directory.
  • ②The demo we want to open is
  • ③ESP32-S3-PICO directory.
8. Click to run or press F5.

ESP-32-Pico 97.jpg

9. Please wait a moment, and you can see the wifi output information of esp32-s3-pico.

ESP-32-Pico 98.jpg

MicroPython Demo Description

For better using experience, we include a py file in the firmware。 The following code is used to organize scattered GPIO pins in the order of Pico pins. The source code is shown below:

from micropython import const
D0 = const(11)
D1 = const(12)
D2 = const(13)
D3 = const(14)
D4 = const(15)
D5 = const(16)
D6 = const(17)
D7 = const(18)
D8 = const(33)
D9 = const(34)
D10= const(35)
D11= const(36)
D12= const(37)
D13= const(38)
D14= const(39)
D15= const(40)
D16= const(42)
D17= const(41)
D18= const(1)
D19= const(2)
D20= const(4)
D21= const(5)
D22= const(6)
D26= const(7)
D27= const(8)
D28= const(9)

A1= const(7)
A2= const(8)
A3= const(9)

RGB_PIN= const(21)
USB_ADC= const(3)



  • Blink the GPIO10 corresponding to the Raspberry Pi PICO (GP35 corresponding to the ESP32-S3) at 1-sec interval.


  • Read the level of GPIO3 corresponding to Raspberry Pi PICO (corresponding to GP13 of ESP32-S3).
    • If it is low level, press the key to flip the LED level.



  • Output PWM frequency of GPIO12 corresponding to Raspberry Pi PICO (GP37 corresponding to ESP32-S3) at 1000Hz, with duty cycle increasing or decreasing between 0% and 100%.


  • Configure GPIO12 of the corresponding Raspberry Pi PICO (corresponding to GP37 of ESP32-S3) to output PWM with a duty cycle of 30%, and increase or decrease the frequency between 600-1400Hz.



  • Using GPIO0 of Raspberry Pi Pico (corresponding to GP11 of ESP32-S3) and GPIO1 (corresponding to GP12 of ESP32-S3) as the TX and RX pins for UART, perform UART echo.



  • Using GPIO6 of Raspberry Pi Pico (corresponding to GP17 of ESP32-S3) and GPIO7 (corresponding to GP18 of ESP32-S3) as the SDA and SCL pins for I2C, drive the 1.5-inch OLED module.


  • Using GPIO8 of Raspberry Pi Pico (corresponding to GP33 of ESP32-S3) and GPIO9 (corresponding to GP34 of ESP32-S3) as the SDA and SCL pins for I2C, scan the device addresses on the I2C bus.



  • Drive the PICO-LCD-1.3 module.



  • Sequentially read the voltage values of GPIO pins 26-29 of the Raspberry Pi PICO and output the information.



  • Lights up the on-board RGB-LEDs and keeps on converting colors.



  • Output remaining FLASH memory.


  • Output the remaining and used RAM space.


  • Set RTC time and read the RTC value in a loop.


  • Set the ESP32-S3 to deep sleep for 10 seconds, it will automatically reset and reboot when it reaches the sleep time.


  • Set watchdog and wait for watchdog reset.



  • Scan the surrounding wifi signal and display the related information.











Official Documentation

Official ESP32 Document

Official MicroPython Document



Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 AM GMT+8 (Monday to Friday)