The QT Py ESP32 Pico is a tiny microcontroller board featuring Wi-Fi and Bluetooth connectivity. The heart of the board is the all-in-one ESP32 Pico V3 02. This chip provides 2.4 GHz Wi-Fi and Bluetooth (with BLE). It has 8 MB of flash memory and 2 MB of RAM. It even brings its own oscillator. Adafruit adds to this a USB bridge for programming over the USB-C connector, a chip antenna, and a NeoPixel RGB LED for status indication. Adafruit has also broken two pins out to a STEMMA QT connector for attaching I2C based IO peripherals. STEMMA QT is compatible with Sparkfun’s QWIIC.
The form factor for the ESP32 Pico matches that of the Seeed Studio XIAO boards. Fourteen pins are broken out to headers. There are castellations along with the header pins, but note that there are chips on both sides of the board so it cannot be mounted flush to a larger board without a cut-out for the chips. With this being a double-sided board, make sure you decide which way is up before soldering headers in.
Despite having few pins, the ones broken out are very capable. Three pins are reserved for power connections. Four pins are labeled as analog inputs, but in fact ten of the eleven GPIO pins accept 12-bit analog input. Two of the analog pins also act as 8-bit DAC outputs. Three pins are marked for hardware SPI communication, two pins for I2C, and two for UART serial. All of the pins are capable of PWM output. The two header pins marked for I2C are separate from the two I2C pins on the STEMMA QT connector, so thirteen GPIO pins in total are broken out. The NeoPixel RGB LED is on its own microcontroller pin, so it does not conflict with any other I/O pin.
All I/O on the QT Py ESP32 Pico is at 3.3V. There is a 3.3V regulator on board that provides up to 600mA “peak” but should probably not be tested near its limit. There is a 5V pin on the board that provides power from the USB connector, meaning 5V is not available when not connected to USB. There are two pads on the bottom of the board marked “VBat” which provide a diode-protected place to connect a battery. You can also power the board through the 5V pin, but Adafruit warns you to provide your own diode to protect the battery when the board is connected to USB.
Adafruit makes a point of alerting us to the low-power modes of this ESP32. There is a light sleep that turns off the transmitters and brings the chip down to 2mA of current consumption. There is also a deep sleep that lowers the current to 100uA but does not maintain the RAM state. Adafruit has provided some useful example code for Arduino IDE that shows how they test the power consumption.
The guide provided by Adafruit for this board is thorough and will get you up and running in no time. There are instructions for programming the board in Arduino IDE and MicroPython. You may have to install one of two drivers for the USB to serial chip, or your system may install one automatically. I found that zooming in with a smart phone camera was good enough to read the part number to determine which chip I had. Adafruit’s links then will take you to the third-party sites for a driver for Windows or MacOS.
Starting with Arduino IDE, you will need to add a Boards Manager URL to your Preferences and then use the Boards Manager to install support for ESP32 boards. After that, the board will appear in the boards list as Adafruit QT Py ESP32. Under the File->Examples menu, you will find a list of example programs for the Adafruit QT PY ESP32, many of which run on any ESP32 platform. One standard Arduino example program that won’t run is Blink. This is because there is only a NeoPixel on board, and not a standard LED. To give you the ‘getting started’ experience, Adafruit has written a NeoPixel version of Blink that they walk you through installing as your first sketch. I also recommend running the WifiScan example to make sure the board can reach your network.
The QT Py ESP32 can also be programmed in MicroPython. Because this ESP32 chip doesn’t have native support for USB, it can’t mount itself as a USB drive the way CircuitPython would require. If you prefer CircuitPython, consider the Adafruit QT Py ESP32-S2 board. Still, you can use esptool.py to upload MicroPython to the board and then program it using the REPL. Adafruit’s guide shows you how to use Thonny to interact with the board.
As a third option, you can use WipperSnapper to interact with the board. WipperSnapper is a firmware that interacts with Adafruit.IO so you can control the board remotely.
- Super small footprint
- Very flexible GPIO pins can serve multiple roles