The Adafruit ESP32-S3 Feather represents an upgrade to ESP32-based microcontrollers in the popular Feather form factor. This new ESP32 chip is a dual-core design running at 240 MHz. It has built-in support for Wi-Fi and BLE. For comparison, the ESP32-S2 was single-core and did not support BLE. Both chips have native USB support, making it easy to run CircuitPython or emulate input devices. The ESP32-S3 has 512KB of SRAM. The version we tested has an additional 2 MB of slower PSRAM and 4 MB of flash memory. A previous version of this product, still available, had no PSRAM and 8 MB of flash memory.
The ESP32-S3 Feather has all the features we would expect from an entry in the Feather ecosystem. There is a LiPoly battery connector that feeds to a battery monitor and charge controller. A connected LiPoly battery will charge whenever the Feather is powered via its USB-C port. There is a STEMMA QT port for adding I2C-based peripherals. The STEMMA QT is a four-pin port that delivers power and the I2C bus to sensors and actuators compatible with STEMMA QT or Sparkfun’s QWIIC system. Compatible cables and batteries are available as add-ons to your Adafruit order.
There are twenty GPIO pins broken out on the feather. Pins assignments on the ESP32-S3 are very flexible. Six of the pins on the feather are marked as analog inputs, but in fact fifteen of the pins are capable of accepting analog inputs. The pins marked for SPI bus, I2C bus, and UART can all be used for GPIO. Most of the GPIO pins can be used for PWM, I2S, I2C, SPI, or UART if you need them. The on-board NeoPixel LED connects to its own microcontroller pins and does not duplicate any pins that are broken out. Note that all I/O on Feather platforms is at 3.3V.
To test this board we started by installing the latest version of CircuitPython, following the guide from Adafruit. Simply double-clicking the reset button on the board causes it to mount as a USB mass storage device called FTHRS3BOOT. You can then download the latest CircuitPython firmware for this board and drag-and-drop it to install on the board. Note that the link in the guide is for the no PSRAM / 8MB flash version of the board and will not work with the model we tested. Either follow our link above or navigate the CircuitPython website to find the right version of the firmware. You will know the firmware has successfully installed when the board reboots and remounts with the name CIRCUITPY. Adafruit then guides you through installing and using the Mu editor for interacting with the board. You can also drag and drop libraries and code onto the CIRCUITPY drive to execute them. Because the board has the standard red built-in LED you can download and drop the blink example onto the board for that first-program experience.
Your other programming option is the Arduino IDE. Support for this version of the Feather appears under the name “Adafruit Feather ESP32-S3 2MB PSRAM” in version 2.0.4 of the ESP32 board support module. Unfortunately, the code is broken and won’t compile. Espressif is aware of the errors and has targeted them for fixing in 2.0.5. In the meantime you can follow Espressif’s instructions for installing the latest board support direct from their Github repository. You may or may not find the latest code to be in a usable state.
For a non-programming option, you can use Adafruit’s WipperSnapper firmware with the Adafruit.IO website to control your board through the cloud. This service is considered “in Beta” but is pretty easy to use. Start at Adafruit.IO to make an account and add a “new device.” It will give you a walkthrough to install the firmware, which is much the same as installing CircuitPython. Once you have set your local WiFi settings on the board you’ll be able to control it from the cloud.
All in all, this iteration of the ESP32 on Feather has a lot of potential. Once the board support issues are resolved, it will simply be a more powerful version of boards Adafruit has released in the past.
Standout features:
- Latest ESP32 chip is more powerful than its predecessor
- Features Wi-Fi and BLE
- Native USB support makes CircuitPython easy to install