The QT Py ESP32-C3 is tiny but packed with features. Here's a detailed look.


  • USB-C port - This is used for both powering and programming the board. You can power it with any USB C cable.
  • 3.3V - These pins are the output from the 3.3V regulator, they can supply 500mA peak.
  • GND - This is the common ground for all power and logic.
  • 5V - This is 5v out from the USB port. 

You can also use the 5V pin as a voltage input but you must have some sort of diode (schottky, signal, power, really anything) between your external power source and this pin with anode to battery, cathode to 5V pin.  There are two pads on the back, with the protection diode in series, so you could use those if you wish.

Note that you cannot power the USB port by supplying 5V to this pin: there is a protection diode that prevents the 5V from reaching the USB connector (unless you bridge the jumper on the back!). This is to protect host computer USB ports, etc. You can draw 1A peak through the diode, but we recommend keeping it lower than that, about 500mA.

BAT/GND pads - On the back of the board are two pads labeled BAT and GND. These are the battery input pads with diode protection for external battery packs up to 6V input.

ESP32-C3 Chip

The ESP32-C3 is a highly-integrated, low-power, 2.4 GHz Wi-Fi and BLE System-on-Chip (SoC) solution. With its state-of-the-art power and RF performance, this SoC is an ideal choice for a wide variety of application scenarios relating to the Internet of Things (IoT), wearable electronics, and smart homes.

Please note, this is a single-core 160 MHz chip so it won't be as fast as ESP32's with dual-core. This chip has WiFi and Bluetooth Low Energy, there is no Bluetooth classic support. This chip comes with 4 MB flash and 400 KB of SRAM. No PSRAM

Logic Pins

There are eleven GPIO pins broken out to pads. There is hardware I2C, UART, and SPI. The UART pins are also the hardware UART debug port pins.

Five pads are 12-bit analog inputs (A0 thru A3 and SDA).

You can do PWM output or hardware I2S on any pin.

That's the general concept. Now for the details!

There are five analog pins.

  • A0 A1 A2 A3 are ADC1 inputs, and are also GPIO #4, #3, #1, #0 in that order
  • SDA is an ADC2 input

The I2C pins. These are shared by the STEMMA QT connector!

  • SCL - This is the I2C clock pin. There is no pull-up on this pin, so for I2C please add an external pull-up if the breakout doesn't have one already. GPIO #6
  • SDA - This is the I2C data pin.There is no pull-up on this pin, so for I2C please add an external pull-up if the breakout doesn't have one already. GPIO #5
  • In CircuitPython, you can use the STEMMA connector with board.SCL and board.SDA, or board.STEMMA_I2C().

The UART interface:

  • RX - This is the UART receive pin. Connect to TX (transmit) pin on your sensor or breakout. GPIO #20
  • TX - This is the UART transmit pin. Connect to RX (receive) pin on your sensor or breakout. This is also the hardware UART output so debug information can be emitted from this pad. GPIO #21

The SPI interface:

  • SCK - This is the SPI clock pin. GPIO #10
  • MI - This is the SPI Microcontroller In / Sensor Out pin. GPIO #8
  • MO - This is the SPI Microcontroller Out / Sensor In pin. GPIO #7

STEMMA QT Connector

This JST SH 4-pin STEMMA QT connector breaks out the I2C interface (SCL, SDA, 3.3V, GND). It allows you to connect to various breakouts and sensors with STEMMA QT connectors or to other things using assorted associated accessories. It works great with any STEMMA QT or Qwiic sensor/device. You can also use it with Grove I2C devices thanks to this handy cable.

The ESP32-C3 does not have enough pins for a secondary I2C port, so the STEMMA QT connector IO pins are the same as SDA and SCL!

NeoPixel LED

Near the SCK and MI on the silk, is the RGB NeoPixel LED. This addressable LED works both as a status LED (in CircuitPython), or can be controlled with code. It is available in CircuitPython as board.NEOPIXEL, and in Arduino as PIN_NEOPIXEL. It is on GPIO #2


There are two buttons.

  • Reset button - This button restarts the board and helps enter the ROM bootloader. You can click it once to reset the board without unplugging the USB cable or battery.
  • Boot button - This button can be used to put the board into ROM bootloader mode. To enter ROM bootloader mode, hold down boot button while clicking reset button mentioned above. When in the ROM bootloader, you can upload code and query the chip using esptool.
    This button can also be read as GPIO 9 (set it to be an input-with-pullup)

This guide was first published on Mar 14, 2022. It was last updated on Mar 14, 2022.

This page (Pinouts) was last updated on Mar 14, 2022.

Text editor powered by tinymce.