Which CircuitPython Board is Right for You?
2024-05-31 | By Adafruit Industries
License: See Original Project Programmers Arduino Circuit Playground Adafruit Feather
Courtesy of Adafruit
Guide by Kattni Rembor
Overview
There are so many Adafruit microcontrollers that are compatible with CircuitPython, choosing a board can be overwhelming. Perhaps you have a feature in mind that you're looking for. This helps narrow it down, but there may be multiple boards with that feature. So, what can you do? Check out this guide!
This guide breaks down the CircuitPython compatible Adafruit microcontrollers into feature categories. Within those categories, each board has text explaining its other features to explain why you might choose it over another board.
For example, let's say you want a board that's WiFi enabled. Great! But which board do you choose? Maybe a built-in display would be ideal for your WiFi project. Check out the WiFi Enabled page, scan through the boards, and get a feel for their differences. You could find that PyPortal is perfect for you!
Beginner Boards
Perhaps you're new to electronics and programming. Maybe you're a pro, but you've never worked with CircuitPython. Working with CircuitPython is super simple but requires that you have a CircuitPython compatible microcontroller. Some boards are better than others for getting started than others. So which one do you choose?
This page contains all of the beginner CircuitPython compatible boards and a bit about the features of each one. You're ready to get started, now to figure out what features will work best for you!
Circuit Playground Express
The Adafruit Circuit Playground Express, running the ATSAMD21 microcontroller, is the perfect board for beginners to electronics and programming. It has tons built in ten RGB NeoPixel LEDs, an accelerometer, temperature, light and sound sensors, mini speaker, two buttons, a slide switch, IR transmitter and receiver, little red LED, and eight alligator-clip friendly GPIO pads, seven of which can act as touch pads.
This is an excellent beginner choice that does not require any soldering.
Circuit Playground Bluefruit
Circuit Playground Bluefruit - Bluetooth Low Energy
The Adafruit Circuit Playground Bluefruit, running the Bluetooth LE capabile nRF52840, is an all-in-one board designed to get you started with programming electronics. It's loaded with all kinds of LEDs, sensors and inputs, including an accelerometer, light, temperature, and sound sensors, touch pads, buttons, switch, NeoPixel LEDs, speaker, and more. Additional capabilities can be added via the alligator clip friendly pads.
This is an excellent beginner choice that does not require any soldering.
Circuit Playground Express or Bluefruit?
There are two great Circuit Playground options for using CircuitPython. So which one is better for you? You'll be fine with either, but here a few key differences that may drive you one way or the other.
- The Circuit Playground Express has more support in MakeCode / Code.org and the SAMD21 is a more universal processor. There’s a lot more example codes for it. However, it's an older chip so not as powerful, has less RAM, and of course, does not have Bluetooth LE wireless.
- The Circuit Playground Bluefruit does not have an IR transceiver (for remote control projects) because it has BLE instead. The processor is more powerful, has tons more memory which comes in handy with CircuitPython projects as they grow. However, it’s a newer chip, and does not have full MakeCode support, Code.org CS Discoveries support, or as many projects. It also has Bluetooth LE connectivity so it can wirelessly connect to computers, phones, tablets, and other devices.
The original ATmega 32u4 based Circuit Playground (Renamed the Circuit Playground Classic) is NOT CircuitPython compatible. Use the Express or Bluefruit versions.
QT Py RP2040
Easily interface to STEMMA QT / Qwiic sensors and breakouts.
The Adafruit QT Py uses an RP2040 microcontroller, has 11 GPIO pins, a built in RGB NeoPixel LED, and a USB Type C connector, in the same size, form factor and pinout as the Seeed Xiao. There is 8MB of flash for CircuitPython and file storage. The built in STEMMA QT connector makes it super simple to use any of the available STEMMA QT sensors and breakouts with no soldering required.
This is a good choice if you want an easy way to interface to STEMMA QT / Qwiic connected sensors without a lot of expense.
Feather M4 Express
Adafruit Feather M4 Express - Featuring ATSAMD51
The Adafruit Feather M4 Express is running the ATSAMD51 microcontroller. With some light soldering, this board enables you to use the many FeatherWings available, which provides a ton of possibilities without a lot of wiring necessary. It has 21 GPIO pins, a little red LED and an RGB NeoPixel LED. You can power it with and charge a Lipoly battery.
A good choice if you want access to Feather ecosystem and its many FeatherWing add-on boards. The board is very powerful and runs CircuitPython very nicely.
Feather RP2040
The Adafruit Feather RP2040 uses the Raspberry Pi RP2040 microcontroller. With some light soldering, this board enables you to use the many FeatherWings available, which provides a ton of possibilities without a lot of wiring necessary. It has 21 GPIO pins, a little red LED and an RGB NeoPixel LED. You can power it with and charge a Lipoly battery. It also has a STEMMA QT connector to access many solderless plug-in sensors and displays.
A good choice if you want access to Feather ecosystem and its many FeatherWing add-on boards. The board is very powerful and runs CircuitPython very nicely at a price point lower than the M4. It also has the STEMMA QT port useful for adding many types of sensors and displays without soldering.
Metro M4
Adafruit Metro M4 feat. Microchip ATSAMD51
The Adafruit Metro M4, featuring the ATSAMD51 microcontroller, is a development board in the Metro form factor. It boasts 25 GPIO pins, along with four indicator LEDs and an RGB NeoPixel LED. It can be powered via USB using the micro-USB connector, or through the DC jack. The great thing about this board is that it's compatible with Arduino Shields, meaning there are a ton of possibilities available without a lot of wiring necessary.
This board can also be used with the examples from the Metro Experimenter's Guide.
A good choice if you want something in the classic Arduino UNO form factor for use with the many available Arduino shields. The board is very powerful and runs CircuitPython very nicely.
ItsyBitsy M4 Starter Kit
A more hands on approach with some light soldering required.
CircuitPython Starter Kit with Adafruit Itsy Bitsy M4
This kit does require some soldering to attach the header pins to the Itsy Bitsy M4. It also requires building up each circuit to use the various components. However, this does allow you to gain more experience by being more hands on with the hardware.
This a good choice if you are comfortable soldering and building circuits and want a more hands-on experience. The board is very powerful and runs CircuitPython very nicely.
WiFi Enabled
WiFi allows you to connect to your local network and access the Internet. This lets you do things like send/receive data to services like Adafruit IO. Or you can grab some information from the Internet, like weather, sports scores, etc. and display it locally.
This page contains most of the WiFi enabled CircuitPython compatible boards and a bit about the features of each one. You know you want WiFi, now to figure out what other features will work best for you!
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
Metro ESP32-S3
Provides native WiFi support via ESP32-S3 processor.
Adafruit Metro ESP32-S3 with 16 MB Flash 8 MB PSRAM
The Adafruit Metro ESP32-S3 brings native WiFi and Bluetooth to the Metro form factor. Unlike non-ESP Metro boards, this board can be powered by a LiPo battery, as well as USB C and a DC jack.
Since it's a single chip compared to the Metro Airlift, it is less expensive - a bit beefier than some because the dual processor handles both running Python and managing WiFi. It's a great value with a good number of pins.
This is a good option if you want something general-purpose you can use with Arduino Shields and would like dual cores.
Metro ESP32-S2
Provides native WiFi support via ESP32-S2 processor.
The Adafruit Metro ESP32-S2 brings native WiFi to the Metro form factor. Unlike other metro boards, this board can be powered by a LiPo battery, as well as USB C and a DC jack.
Since it's a single chip compared to the Metro Airlift, it is less expensive - but it isn't going to be as fast because the one processor has to handle both running Python and managing WiFi. It's a great value with a good number of pins. Unlike the ESP32-S3 and the older ESP32, the ESP32-S2 does not have Bluetooth.
This is a good option if you want something general purpose you can use with Arduino Shields. The ESP32-S3 is more recent than this ESP32-S2, has dual cores and additional recommended features.
Metro M4 AirLift Lite
Provides WiFi support using an ESP32 as a WiFi co-processor.
Adafruit Metro M4 Express AirLift (WiFi) - Lite
The Adafruit Metro M4 AirLift Lite combines the ATSAMD51 with an ESP32 WiFi co-processor in the Metro form factor. Easily add WiFi to projects using any compatible shields. The SAMD51 is powerful, the ESP32 is wireless - the combination of the two is what gives this fast board a solid chip for Python (M4) and offloading the Wireless work to a friend (ESP32). It won't be as cheap as an all-in-one but if you need a well-documented processor, the SAMD M4 is very well supported by many languages and IDEs.
This is a good option if you want something general purpose you can use with Arduino Shields.
Metro M7 with AirLift
Provides WiFi support to an i.MX RT1160 processor using an ESP32 as a WiFi co-processor.
Adafruit Metro M7 with AirLift - Featuring NXP iMX RT1011
The Adafruit Metro M7 AirLift combines the NXP iMX RT1011 microcontroller with an ESP32 WiFi co-processor in the Metro form factor. Easily add WiFi to projects with expandability with compatible shields. The NXP iMX RT1011 is very fast, the ESP32 is wireless - the combination of the two is what gives this ultrafast board a solid chip for Python and offloading the wireless work to a friend (ESP32). It won't be as cheap as an all-in-one but if you need speed, the i.MX RT1011 is supported by many languages and IDEs.
This is a good option if you want something ultra-fast you can use with Arduino Shields.
Matrix Portal S3
Provides native WiFi support using an ESP32-S3.
Adafruit Matrix Portal S3 CircuitPython Powered Internet Display
The ESP32-S3 provides WiFi and Bluetooth LE radios natively along with a dual core processor. 8MB Flash and 2MB SRAM provides lots of storage. It also has a STEMMA QT add-on connector.
It plugs directly into the back of any HUB-75 compatible display (all the ones we stock will work) from 16x32 up to 64x64, and adds three buttons, a STEMMA QT connector and a digital/analog 3-pin JST connector.
This is a good option if you want to easily display things on a RGB matrix, whether that something comes from the Internet or not, at a slight discount from the M4 version.
Matrix Portal M4
Provides WiFi support using an ESP32 as a WiFi co-processor. Adafruit suggests using the Matrix Portal S3 (above) over the Matrix Portal M4 due to better specifications at a slightly better price.
Adafruit Matrix Portal - CircuitPython Powered Internet Display
The Adafruit Matrix Portal is basically a Metro Airlift in a different shape. It combines an ATSAMD51 M4 main processor with an ESP32 WiFi co-processor and can be used to easily add WiFi to RGB LED matrices. It plugs directly into the back of any HUB-75 compatible display (all the ones we stock will work) from 16x32 up to 64x64, and adds three buttons, a STEMMA QT connector and a digital/analog 3-pin JST connector.
This is a good option if you want to easily display things on a RGB matrix, whether that something comes from the Internet or not. The Matrix Portal S3 is recommended by Adafruit over the Matrix Portal M4 due to better specifications at a slightly lower price.
MagTag 2.9"
Provides native WiFi support via ESP32-S2 processor.
Adafruit MagTag - 2.9" Grayscale E-Ink WiFi Display
The Adafruit MagTag 2.9" uses the ESP32-S2 wireless module and has a built-in 2.9" grayscale eInk display. It also has an accelerometer, four buttons, four RGB NeoPixel LEDs and a speaker. It's designed to be low power, so it can run off of a battery connected to the port on the back, for many weeks.
This is a good option if you want a low power option for displaying things from the Internet.
PyPortal
Provides WiFi support using an ESP32 as a WiFi co-processor.
Adafruit PyPortal - CircuitPython Powered Internet Display
The Adafruit PyPortal is a WiFi enabled board with a built-in display. Like the Metro AirLift, it has two processors - a SAMD51 main processor + the ESP32 is a WiFi co-processor. It also comes with a 3.2″ 320 x 240 color TFT with resistive touch screen, a speaker, light sensor, temperature sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors. It has a lot of projects and is very very easy to get going to display data from the Internet.
This is a good option if you want to display something from the Internet on a TFT display especially if you want a touch screen (the Matrix Portal and MagTag do not have touch screen overlays.)
PyPortal Pynt
Provides WiFi support using an ESP32 as a WiFi co-processor.
Adafruit PyPortal Pynt - CircuitPython Powered Internet Display
The Adafruit PyPortal Pynt has everything the PyPortal does but in a smaller package. The display is a 2.4″ diagonal 320 x 240 color TFT with resistive touch screen. It also includes a speaker, light sensor, temperature sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good option if you want to display something from the Internet on a TFT display with a touch screen.
PyPortal Titano
Provides WiFi support using an ESP32 as a WiFi co-processor.
The Adafruit PyPortal Titano is nearly the same as the PyPortal with a bigger display and no temperature sensor. The display is a higher resolution 3.5″ diagonal 320 x 480 color TFT with resistive touch screen. It also includes a speaker, light sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good option if you want to display something from the Internet on a TFT display with a higher resolution and touch screen.
Feather Boards
The Feather ecosystem has both add-on boards (FeatherWings) with WiFi and Feather processors with WiFi capability, providing great flexibility.
Feather ESP32-S3 Series
The Espressif ESP32-S3 has native WiFi and Bluetooth capabilities, and dual processor cores. It is well supported by CircuitPython. Various Feather ESP32-S3 boards combine different quantities of PSRAM and Flash memory. They can also come with STEMMA QT add-on connectors and tiny OLED displays onboard.
Adafruit ESP32-S3 Feather with 4MB Flash 2MB PSRAM
Adafruit ESP32-S3 Feather with STEMMA QT / Qwiic
Adafruit ESP32-S3 Feather 8MB with w.FL Antenna
Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT
Adafruit ESP32-S3 Reverse TFT Feather
ESP32-S2 Series
The Espressif ESP32-S2 has native WiFi capability, but it only has a single processor core and does not have Bluetooth. Various Feather ESP32-S2 boards combine different quantities of PSRAM and Flash memory. They can also come with STEMMA QT add-on connectors and tiny OLED displays onboard.
Adafruit ESP32-S2 Feather - 4 MB Flash + 2 MB PSRAM
Adafruit ESP32-S2 Feather with BME280 Sensor - STEMMA QT
Adafruit ESP32-S2 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT
Adafruit ESP32-S2 Reverse TFT Feather
QT Py Boards
Easily interface to STEMMA QT / Qwiic sensors and breakouts. They are the same size, form factor and pinout as the Seeed Xiao.
ESP32-S3
The Espressif ESP32-S3 has native WiFi and Blueooth capabilities, and dual processor cores. It is well supported by CircuitPython.
Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT
Adafruit QT Py S3 with 2MB PSRAM WiFi Dev Board with STEMMA QT
ESP32-S2
The Espressif ESP32-S2 has native WiFi capability, but it only has a single processor core and does not have Bluetooth. It is well supported by CircuitPython.
Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT
Adafruit QT Py ESP32-S2 WiFi Dev Board with uFL Antenna Port
MEMENTO Camera
A hackable camera powered by an ESP32-S3.
MEMENTO - Python Programmable DIY Camera - Bare Board
The MEMENTO Camera is a development board with everything you need to create programmable camera and vision projects: with a camera module, TFT preview screen, buttons, microSD card slot and driven by a powerful ESP32-S3 with 2 MB of PSRAM for buffering 5 MegaPixel camera images. WiFi and Bluetooth LE capable.
Perfect for storage of images.
Qualia ESP32-S3 for TTL RGB-666 Displays
Drive larger displays with an ESP32-S3 that is WiFi capable.
Adafruit Qualia ESP32-S3 for TTL RGB-666 Displays
The ESP32-S3 is the first low-cost microcontroller that has a built in peripheral that can drive TTL displays, and can come with enough PSRAM to buffer those large images. 16MB Flash and 8MB PSRAM. Resolutions include 480x272, 800x480, 800x600, 720x720 and 930x320 RGB-666 type displays. A Stemma QT I2C port helps with connectivity/expandability. The ESP32-S3 supports WiFi and Bluetooth.
Bluetooth Enabled
Bluetooth allows for short range wireless connectivity between other Bluetooth devices. You can even use your BLE enabled smart phone with the free BLE Connect App to connect and control your board.
This page contains nearly all of the Bluetooth enabled CircuitPython compatible boards and a bit about the features of each one. You know you want Bluetooth, now to figure out what other features will work best for you!
CircuitPython BLE support on ESP32-S3 based boards is not yet complete, as of CircuitPython 9.x. For best compatibility, stick with nRF52840 based boards.
All of these are BLUETOOTH LOW ENERGY only! Not Bluetooth Classic!
Circuit Playground Bluefruit
Provides BLE connectivity via the nRF52840 processor.
Circuit Playground Bluefruit - Bluetooth Low Energy
The Circuit Playground Bluefruit, running an nRF52840, is an all-in-one board designed to get you started with programming electronics. It's loaded with all kinds of LEDs, sensors and inputs, including an accelerometer, light, temperature, and sound sensors, touch pads, buttons, switch, NeoPixel LEDs, speaker, and more. Additional capabilities can be added via the alligator clip friendly pads.
This is an excellent beginner choice that does not require any soldering. In addition to CircuitPython and Arduino, there is some MakeCode support as well.
Feather nRF52840
Provides BLE connectivity via the nRF52840 processor.
Adafruit Feather nRF52840 Express
The Adafruit Feather nRF52840 is a Bluetooth Low Energy enabled board in the Feather form-factor. This means you can add Bluetooth to any of the many FeatherWings available. You can power it with and charge a Lipoly battery.
This is a good choice if you want BLE connectivity in the Feather form factor.
Feather nRF52840 Sense
Provides BLE connectivity via the nRF52840 processor.
Adafruit Feather nRF52840 Sense
The Adafruit Feather nRF52840 Sense is a BLE enabled board packed with sensors including light/proximity/color, 9-DoF motion, sound, humidity, and pressure/temperature sensors. Since it's a Feather, you can add BLE and these sensors to any of the many FeatherWings available. You can power it with and charge a Lipoly battery.
It's kind of like a CLUE but without the screen, buttons, buzzer or micro:bit connector. On the other hand, it’s lot smaller and has Lipoly charging built in.
This is a good choice if you want BLE connectivity in the Feather form factor - plus some built-in sensors.
ItsyBitsy nRF52840
Provides BLE connectivity via the nRF52840 processor.
Adafruit ItsyBitsy nRF52840 Express - Bluetooth LE
The Adafruit ItsyBitsy nRF52840 makes it easy to add Bluetooth to smaller projects or projects with smaller spaces. It includes special Vhigh output pin to give you the higher voltage from power, for driving NeoPixels, servos, and other 5V-logic devices directly.
This is a good choice if you want BLE connectivity in a small form factor.
CLUE
Provides BLE connectivity via the nRF52840 processor.
Adafruit CLUE - nRF52840 Express with Bluetooth LE
The Adafruit CLUE is a Bluetooth Low Energy enabled board in the micro:bit form factor with a built-in 1.3″ 240×240 Color IPS TFT display. It includes two buttons, and light/proximity/color, 9-DoF motion, sound, humidity, and pressure/temperature sensors. There is a STEMMA QT connector to make it super simple to connect many other sensors and breakouts to your project with no soldering necessary.
It's perfect when you want all the sensors and a screen + two buttons built in. The micro:bit formfactor is excellent when you want to plug in various accessories.
This is an excellent beginner choice that does not require any soldering and has just about every sensor.
Feather ESP32-S3 Boards
The ESP32-S3 provides WiFi and Bluetooth LE radios along with a dual core processor. Various ESP32-S3 boards combine different quantities of PSRAM and Flash memory. They can also come with STEMMA QT add-on connectors and tiny OLED displays onboard.
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
Adafruit ESP32-S3 Feather with 4MB Flash 2MB PSRAM
Adafruit ESP32-S3 Feather with STEMMA QT / Qwiic
Adafruit ESP32-S3 Feather 8MB with w.FL Antenna
Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT
Adafruit ESP32-S3 Reverse TFT Feather
ESP32-S3 is a great choice if you would like a dual core processor along with a STEMMA QT expansion connector for sensors and displays. Feather has compatibility with many dozens of FeatherWing add-ons.
QT Py ESP32-S3 Boards
The Espressif ESP32-S3 has native WiFi capabilities and dual processor cores like the ESP32, while supporting both WiFi and Bluetooth. It is well supported by CircuitPython.
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT
Adafruit QT Py S3 with 2MB PSRAM WiFi Dev Board with STEMMA QT
The smallest form factor Bluetooth boards which also have dual core processors.
MEMENTO Camera
A hackable camera powered by an ESP32-S3.
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
MEMENTO - Python Programmable DIY Camera - Bare Board
The MEMENTO Camera is a development board with everything you need to create programmable camera and vision projects: with a camera module, TFT preview screen, buttons, microSD card slot and driven by a powerful ESP32-S3 with 2 MB of PSRAM for buffering 5 MegaPixel camera images. WiFi and Bluetooth LE capable.
Perfect for storage of images.
Matrix Portal S3
Provides native WiFi and Bluetooth support using an ESP32-S3.
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
Adafruit Matrix Portal S3 CircuitPython Powered Internet Display
The ESP32-S3 provides WiFi and Bluetooth LE radios natively along with a dual core processor. 8MB Flash and 2MB SRAM provides lots of storage. It also has a STEMMA QT add-on connector.
This is a good option if you want to easily display things on a RGB matrix, whether that something comes from the Internet or not or want Bluetooth capability.
Qualia ESP32-S3 for TTL RGB-666 Displays
Drive larger displays with an ESP32-S3 that is WiFi and Bluetooth capable.
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
Adafruit Qualia ESP32-S3 for TTL RGB-666 Displays
The ESP32-S3 is the first low-cost microcontroller that has a built in peripheral that can drive TTL displays, and can come with enough PSRAM to buffer those large images. 16MB Flash and 8MB PSRAM. Resolutions include 480x272, 800x480, 800x600, 720x720 and 930x320 RGB-666 type displays. A Stemma QT I2C port helps with connectivity/expandability. The ESP32-S3 supports WiFi and Bluetooth.
Built In Display
A display allows you to show all kinds of information from your project, including sensor data, directly on your microcontroller board. You can add external displays to other boards if you want, but boards with built-in displays provide ready-to-go options.
This page contains all of the CircuitPython compatible boards with a built-in display and a bit about the features of each one. You know you want a display, now to figure out what other features will work best for you!
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
MagTag 2.9"
Comes with a 2.9" grayscale E-Ink display.
Adafruit MagTag - 2.9" Grayscale E-Ink WiFi Display
The Adafruit MagTag 2.9" uses an ESP32-S2 wireless module and has a built-in 2.9" grayscale eInk display. It also has an accelerometer, four buttons, four RGB NeoPixel LEDs and a speaker. It's designed to be low power, so it can run off of a battery connected to the port on the back.
This is a good option if you want low power or just want eInk.
Note - the eInk display is retained even when power is removed.
PyPortal
Comes with 3.2" 320 x 240 color TFT LCD display.
Adafruit PyPortal - CircuitPython Powered Internet Display
The Adafruit PyPortal is a WiFi enabled board with a built in display. It uses an ESP32 as a WiFi co-processor. It also comes with a 3.2″ 320 x 240 color TFT LCD with resistive touch screen, a speaker, light sensor, temperature sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good general-purpose option with WiFi capability.
PyPortal Pynt
Comes with a 2.4" 320 x 240 color TFT LCD display.
Adafruit PyPortal Pynt - CircuitPython Powered Internet Display
The PyPortal Pynt has everything the PyPortal does, but in a smaller package. The display is a 2.4″ diagonal 320 x 240 color TFT LCD with resistive touch screen. It also includes a speaker, light sensor, temperature sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good general-purpose option with WiFi capability.
PyPortal Titano
Comes with a 3.5" 320 x 480 color TFT LCD display.
The Adafruit PyPortal Titano is nearly the same as the PyPortal with a bigger display and no temperature sensor. The display is a higher resolution 3.5″ diagonal 320 x 480 color TFT LCD with resistive touch screen. It also includes a speaker, light sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good general-purpose option with WiFi capability.
PyGamer
Comes with a 1.8" 160 x 128 color TFT LCD display.
Adafruit PyGamer for MakeCode Arcade, CircuitPython or Arduino
The Adafruit PyGamer is designed for open source game design, with a 1.8" 160x128 color TFT LCD display, analog thumbstick, 4 buttons, RGB NeoPixel LEDs, accelerometer, light sensor, stereo headphone jack, external speaker connector, STEMMA connectors, and Lipoly battery connector. It also has FeatherWing-compatible headers on the back to enable easy use of the many FeatherWings available. The holes in the corners allow for connecting a lanyard to wear the PyGamer as a conference badge.
This is a good choice if you want to play with small game development.
PyBadge
Comes with a 1.8" 160 x 128 color TFT LCD display.
Adafruit PyBadge for MakeCode Arcade, CircuitPython, or Arduino
The Adafruit PyBadge is the size of a credit card and uses an ATSAMD51 microcontroller. It has a 1.8" 160x128 color TFT LCD display, 8 user-controllable buttons, accelerometer, RGB NeoPixel LEDs, light sensor, built in speaker and external speaker connector, STEMMA connectors, and Lipoly battery connector. The PyBadge also has FeatherWing-compatible headers on the back to enable easy use of the many FeatherWings available. The holes in the corners allow for connecting a lanyard to wear the PyBadge as a conference badge.
This is a good choice if you want something you can wear like a badge.
PyBadge LC
Comes with a 1.8" 160 x 128 color TFT LCD display.
Adafruit PyBadge LC - MakeCode Arcade, CircuitPython, or Arduino
The Adafruit PyBadge LC is a PyBadge on a budget - it's the size of a credit card, uses an ATSAMD51 microcontroller, has a 1.8" 160x128 color TFT LCD display, 8 user-controllable buttons, an RGB NeoPixel LED, light sensor, built in speaker, and Lipoly battery connector. The holes in the corners allow for connecting a lanyard to wear the PyBadge LC as a conference badge.
This is a good choice if you want something you can wear like a badge - on a budget.
EdgeBadge
Comes with a 1.8" 160 x 128 color TFT LCD display.
Adafruit EdgeBadge - TensorFlow Lite for Microcontrollers
The Adafruit EdgeBadge does everything the PyBadge does, but includes a microphone for machine learning projects. It's the size of a credit card, uses an ATSAMD51 microcontroller, has a 1.8" 160x128 color TFT LCD display, 8 user-controllable buttons, accelerometer, RGB NeoPixel LEDs, light sensor, built in speaker and external speaker connector, STEMMA connectors, and lipoly battery connector. It also has FeatherWing-compatible headers on the back to enable easy use of the many FeatherWings available. The holes in the corners allow for connecting a lanyard to wear the PyBadge as a conference badge.
This is a good choice if you want something you can wear like a badge - and do machine learning.
CLUE
Comes with a 1.3" 240 x 240 color IPS TFT LCD display.
Adafruit CLUE - nRF52840 Express with Bluetooth LE
The Adafruit CLUE is a Bluetooth Low Energy enabled board in the micro:bit form factor with a built-in 1.3″ 240×240 Color IPS TFT LCD display. It includes two buttons, and light/proximity/color, 9-DoF motion, sound, humidity, and pressure/temperature sensors. There is a STEMMA QT connector to make it super simple to connect many other sensors and breakouts to your project with no soldering necessary.
This is a good option beginner option with Bluetooth BLE capability.
Hallowing M4 Express
Comes with a 1.54" 240 x 240 color IPS TFT LCD display.
Adafruit HalloWing M4 Express - Goth Adafruit Black Edition
The Adafruit Hallowing M4 Express runs an ATSAMD51 microcontroller, has 8 MB of SPI flash for storing animations, sounds, images, and so on, four side-lit RGB NeoPixel LEDs, four touch pads, an accelerometer, light sensor, speaker driver, JST ports for NeoPixels, servos, and I2C (Grove compatible), Lipoly battery port with charging capability, on/off switch, female feather headers for use of the many FeatherWings available, and has a 1.54" sized 240x240 full color IPS TFT LCD. The display has 4x the pixels of the Hallowing M0 Express and is IPS for great color and brightness. This board is great for an adorable wearable, badge, development kit, or the engine for your next cosplay or prop.
This is a good choice if you want something you can use in costumes or props.
Hallowing M0 Express
Comes with a 1.44" 128 x 128 color TFT LCD display.
The Adafruit Hallowing M0 Express runs an ATSAMD21 microcontroller, has 8 MB of SPI flash for storing animations, sounds, images, and so on, status RGB NeoPixel LEDs, four touch pads, an accelerometer, light sensor, speaker driver, JST ports for NeoPixels, servos, and I2C (Grove compatible), Lipoly battery port with charging capability, on/off switch, female feather headers for use of the many FeatherWings available, and a 1.44" sized 128x128 full color TFT LCD display. This board is great for an adorable wearable, badge, development kit, or the engine for your next cosplay or prop.
This is a good choice if you want something you can use in costumes or props.
MONSTER M4SK
Comes with two (2) 1.54" 240 x 240 color IPS TFT LCD displays.
Adafruit MONSTER M4SK - DIY Electronic Eyes Mask
The Adafruit MONSTER M4SK runs an ATSAMD51 microcontroller, has 8 MB of SPI flash for storing animations, sounds, images, and so on, a touch pad nose, Lipoly battery port with charging capability, stereo headphone jack, speaker driver, a 4-pin STEMMA JST connector for I2C (Grove compatible), two 3-pin STEMMA JST connectors with digital/analog/PWM for LEDs or servos, a 4-pin JST SH port for connecting an optional PDM microphone, three buttons, a light sensor, on/off switch, and two 240x240 pixel IPS TFT LCD displays. The displays can be separated with pliers/cutters and then wired together with a 9-pin JST SH cable up to 100mm long so the eyes can be re-positioned or freely attached.
This is a good choice if you really like animated eyes projects.
Feather Boards
The Feather ecosystem has both add-on boards (FeatherWings) with WiFi and Feather processors with WiFi capability, providing great flexibility.
Feather ESP32-S3 Series
The ESP32-S3 provides WiFi and Bluetooth LE radios along with a dual core processor. Various ESP32-S3 boards combine different quantities of PSRAM and Flash memory. They also come with STEMMA QT add-on connectors and tiny OLED displays onboard on the front or back.
Adafruit ESP32-S3 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT
Adafruit ESP32-S3 Reverse TFT Feather
The ESP32-S3 boards are recommended by Adafruit over the ESP32-S2 boards below, having dual cores and additional features.
ESP32-S2 Series
The ESP32-S3 provides a WiFi radio along with a single core processor. Various ESP32-S2 boards combine different quantities of PSRAM and Flash memory. They also come with STEMMA QT add-on connectors and tiny OLED displays onboard either the front or back.
Adafruit ESP32-S2 TFT Feather - 4MB Flash, 2MB PSRAM, STEMMA QT
Adafruit ESP32-S2 Reverse TFT Feather
The ESP32-S3 is more recent than these ESP32-S2s, have dual cores and additional recommended features.
MEMENTO Camera
A hackable camera powered by an ESP32-S3.
MEMENTO - Python Programmable DIY Camera - Bare Board
The MEMENTO Camera is a development board with everything you need to create programmable camera and vision projects: with a camera module, TFT preview screen, buttons, microSD card slot and driven by a powerful ESP32-S3 with 2 MB of PSRAM for buffering 5 MegaPixel camera images. WiFi and Bluetooth LE capable. 1.54: 240x240 display.
Perfect for storage of captured images.
Tiny Boards
Sometimes projects call for a wee small microcontroller board. These products are cost effective solutions when you just want to do a few things, like read a few buttons and drive some NeoPixels, or in using them for wearable projects.
This page contains all of the diminutive CircuitPython compatible boards and a bit about the features of each one. You know you want a tiny board, now to figure out what other features will work best for you!
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
QT Py
Easily interface to STEMMA QT / Qwiic sensors and breakouts. They are the same size, form factor and pinout as the Seeed Xiao.
There are a number of QT Py boards with different processors to suit your project.
SAMD21
The Adafruit QT Py uses an ATSAMD21 microcontroller, has 11 GPIO pins, a built in RGB NeoPixel LED, and a USB Type C connector. The QT Py SAMD21 has limited RAM, but it's fine for small projects. It also has no external flash, but there is an optional SOIC-8 SPI Flash chip footprint on the bottom.
Adafruit QT Py - SAMD21 Dev Board with STEMMA QT
RP2040
The Adafruit QT Py RP2040 uses a Raspberry Pi RP2040 microcontroller. It has 11 GPIO pins, a built in RGB NeoPixel LED, and a USB Type C connector.
ESP32-S3
The Espressif ESP32-S3 has native WiFi capabilities and dual processor cores like the ESP32, while supporting both WiFi and Bluetooth. It is well supported by CircuitPython.
Adafruit QT Py S3 with 2MB PSRAM WiFi Dev Board with STEMMA QT
Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT
The ESP32-S3 is more recent than this ESP32-S2, has dual cores and additional features.
ESP32-S2
The Espressif ESP32-S2 has native WiFi capabilities like the ESP32, but it only has a single processor core and does not have Bluetooth. However, it does have native USB support, and thus is the first all-in-one WiFi chip with CircuitPython support.
Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT
Adafruit QT Py ESP32-S2 WiFi Dev Board with uFL Antenna Port
QT Py is a good choice if you want an easy way to interface to STEMMA QT / Qwiic connected sensors in the smallest board size. Adafruit recommends the ESP32-S3 products over the ESP32-S2 boards due to ESP32-S3 having dual cores and additional features.
ItsyBitsy Boards
A nice step up from the Trinket M0 with tons more GPIO pins.
ItsyBitsy RP2040
The Adafruit ItsyBitsy RP2040 combines the small ItsyBitsy form factor with the powerful Raspberry Pi RP2040 microcontroller, all for a low price. It has 8MB SPI Flash memory for lots of storage along with 23 GPIO pins.
A powerful dual core processor with lots of storage, CircuitPython and Arduino capable at a low price point.
ItsyBitsy M0 Express
The Adafruit ItsyBitsy M0 Express uses an ATSAMD21 microprocessor. It has 2 MB of SPI flash, a little red LED, a RGB DotStar LED, and 23 GPIO pins. It includes special Vhigh output pin to give you the higher voltage for driving NeoPixels, servos, and other 5V-logic devices directly.
Adafruit ItsyBitsy M0 Express - for CircuitPython & Arduino IDE
This is an excellent choice for getting started with soldering and breadboarding.
ItsyBitsy M4 Express
The ItsyBitsy M0's big sister.
The Adafruit ItsyBitsy M4 Express uses a more powerful ATSAMD51 microprocessor. It has 2 MB of SPI flash, a little red LED, a RGB DotStar LED, and 23 GPIO pins. It includes special Vhigh output pin to give you the higher voltage for driving NeoPixels, servos, and other 5V-logic devices directly.
Adafruit ItsyBitsy M4 Express featuring ATSAMD51
This is an excellent choice for getting started with soldering and breadboarding.
ItsyBitsy nRF52840 Express
The ItsyBitsy M0 and M4's cool cousin with Bluetooth.
The Adafruit ItsyBitsy nRF52840 makes it easy to add Bluetooth to smaller projects or projects with smaller spaces. It includes special Vhigh output pin to give you the higher voltage for driving NeoPixels, servos, and other 5V-logic devices directly.
Adafruit ItsyBitsy nRF52840 Express - Bluetooth LE
This is an excellent choice for getting started with soldering and breadboarding - with bonus Bluetooth capability.
ItsyBitsy ESP32
The ItsyBitsy ESP32 contains a dual core processor with WiFi.
The ESP32 boards come with either an integrated antenna or an external antenna connector. They both have a dual-core processor and 8MB Flash and 2MB PSRAM along with STEMMA QT I2C expansion connectors. The USB connector is NOT native USB so it cannot act as a USB keyboard.
Adafruit ItsyBitsy ESP32 - PCB Antenna - 8 MB Flash / 2 MB PSRAM
Adafruit ItsyBitsy ESP32 - wFL Antenna - 8 MB Flash / 2 MB PSRAM
Best used with Arduino, CircuitPython use would be for advanced users only.
Adafruit KB2040 - RP2040 Kee Boar Driver
The power of the Raspberry Pi RP2040 microcontroller in an Arduino Pro Micro form factor for super-duper keyboard processing and more.
Adafruit KB2040 - RP2040 Kee Boar Driver
While the Arduino Pro Micro became a popular keyboard controller due to native USB, the processor is older than the current generation of chips. The KB2040 is a drop-in replacement which has a super-fast dual-core processor with a juicy 8MB of Flash memory for using with many types of firmware including KMK based on CircuitPython. Bring your project into the current decade!
Planning a keyboard project or like the form factor, this is the board you want to look at.
Trinket M0
A very minimalist board with only 5 GPIOs.
The Adafruit Trinket M0 runs the ATSAMD21 microprocessor, has 5 GPIO pins, a little red LED and an RGB DotStar LED. This is a low-cost option when you're looking to get started or want to put together a project on a budget. It is pin compatible with the earlier (non-M0) Trinket, and a lot of projects can be upgraded with this board.
Adafruit Trinket M0 - for use with CircuitPython & Arduino IDE
This is a choice if you want the most minimal option.
GEMMA M0
Think of this as a wearable version of the Trinket M0.
Looking to add NeoPixels to your wearables or cosplay outfits? This board is the easiest way to do so.
Adafruit GEMMA M0 - Miniature wearable electronic platform
The Adafruit GEMMA M0 run the ATSAMD21 microcontroller, an on/off switch, and a RGB DotStar LED. It has three input/output big-hole sew-pads that can be used for conductive thread, or alligator clips for fast prototyping. It can be powered via USB or through the JST battery connector (though it doesn't have charging capability).
It is pin compatible with the earlier (non-M0) Gemma, and a lot of projects can be upgraded with this board.
This is a choice if you want the most minimal wearable option.
SD Card Capable
A microSD card can add a significant amount of storage to your project for data logging, or for things like images, animations, MP3s, BMP/JPG, WAV files and more.
This page includes all of the CircuitPython capable boards with an onboard microSD card capability and a bit about the features of each one. You know you need increased storage, now to figure out what other features will work for you!
Note that nearly any CircuitPython compatible board may be wired up to an external MicroSD card breakout board.
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
Grand Central M4 Express
A beast of a board, with tons of GPIO.
Adafruit Grand Central M4 Express featuring the SAMD51
The Adafruit Grand Central M4 Express uses an ATSAMD51 microcontroller. It has 8 MB of SPI flash, 62 GPIO pins, an on/off switch, a little red LED, two RX/TX LEDs for data being sent over USB, and an RGB NeoPixel LED. This board can be powered via USB or via a DC jack. The built in microSD Card slot is connected to a SPI SERCOM (SDIO is not supported).
This is a good option if you want access to everything including the kitchen sink.
Metro ESP32-S3
Provides native WiFi support via ESP32-S3 dual core processor.
Adafruit Metro ESP32-S3 with 16 MB Flash 8 MB PSRAM
The Adafruit Metro ESP32-S3 brings native WiFi and Bluetooth to the Metro form factor. Unlike non-ESP Metro boards, this board can be powered by a LiPo battery, as well as USB C and a DC jack.
Since it's a single chip compared to the Metro Airlift, it is less expensive - a bit beefier than some because the dual processor handles both running Python and managing WiFi. It's a great value with a good number of pins.
This is a good option if you want something general purpose you can use with Arduino Shields and would like dual core and Bluetooth capability.
Feather STM32F405 Express
A Feather main board that also has an SD card slot.
Adafruit Feather STM32F405 Express
The Adafruit Feather STM32F405 Express uses a STM32F405 microcontroller. It has 2MB of SPI flash, a USB type C connector for data and power, a JST connector for a lipoly battery with charging capabilities, one STEMMA QT connector for use with many other sensors and breakouts with no soldering required, an RGB NeoPixel LED, and works with the many FeatherWings available. The built in microSD Card slot on the bottom of the board is connected to SDIO for potentially faster card read capability.
This is a good option if you want the SD card as part of a Feather main board-based project.
Adafruit Feather M0 Adalogger
The Adafruit Feather M0 Adalogger uses an Arm Cortex M0+ microcontroller. It has 256kB of SPI flash, a USB type micro-B connector for data and power, a JST connector for a Lipoly battery with charging capabilities, an LED, and works with the many FeatherWings available. The built in microSD Card slot on the end of the board is connected to SPI.
This is a good option if you want the SD card as part of a Feather main board-based project at a lower cost trade-off for more limited capability.
Adalogger FeatherWing
Add SD card capability to a Feather main board.
Adalogger FeatherWing - RTC + SD Add-on For All Feather Boards
The Adafruit Adalogger FeatherWing makes it super simple to add a microSD card to any CircuitPython compatible Feather board (Note: this is an add-on card that must be connected/plugged onto another card which contains a microcontroller.) Solder on headers and plug it directly into any Feather. The microSD card slot uses SPI (it is not SDIO fast access capable). It also includes an I2C real time clock and coin cell battery slot for using the RTC battery-backup capabilities.
This is a good option if you want to add SD card capability to a Feather main board.
Adalogger PiCowbell
Add SD card capability to a Raspberry Pi Pico main board.
Adafruit PiCowbell Adalogger for Pico - MicroSD, RTC & STEMMA QT
The Adafruit Adalogger PiCowbell makes it super simple to add a microSD card to any CircuitPython compatible Raspberry Pi Pico / Pico W form factor board (Note: this is an add-on card that must be connected/plugged onto another card which contains a microcontroller). Solder on headers and plug it directly into a Pico. The microSD card slot uses SPI (it is not SDIO fast access capable). It also includes an I2C real time clock and coin cell battery slot for using the RTC battery-backup capabilities.
This is a good option if you want to add SD card capability to a Raspberry Pi Pico main board.
PyPortal
An Internet connected display plus SD card capability!
Adafruit PyPortal - CircuitPython Powered Internet Display
The Adafruit PyPortal is a WiFi enabled board with a built in display. It uses the ESP32 is a WiFi co-processor. It also comes with a 3.2″ 320 x 240 color TFT LCD with a resistive touch screen, a speaker, light sensor, temperature sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good choice if you want to show many image files or store lots of data from the Internet.
PyPortal Pynt
An Internet connected display plus SD card capability!
Adafruit PyPortal Pynt - CircuitPython Powered Internet Display
The Adafruit PyPortal Pynt has everything the PyPortal does but in a smaller package. The display is a 2.4″ diagonal 320 x 240 color TFT with resistive touch screen. It also includes a speaker, light sensor, temperature sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good choice if you want to show many image files or store lots of data from the Internet.
PyPortal Titano
An Internet connected display plus SD card capability!
The Adafruit PyPortal Titano is nearly the same as the PyPortal with a bigger display and no temperature sensor. The display is a higher resolution 3.5″ diagonal 320 x 480 color TFT LCD with a resistive touch screen. It also includes a speaker, light sensor, NeoPixel, microSD card slot, 8MB flash, plug-in ports for I2C and 2 analog/digital connectors.
This is a good choice if you want to show many image files or store lots of data from the Internet.
MEMENTO Camera
A hackable camera powered by an ESP32-S3.
MEMENTO - Python Programmable DIY Camera - Bare Board
The MEMENTO Camera is a development board with everything you need to create programmable camera and vision projects: with a camera module, TFT preview screen, buttons, microSD card slot and driven by a powerful ESP32-S3 with 2 MB of PSRAM for buffering 5 MegaPixel camera images. WiFi and Bluetooth LE capable.
Perfect for storage of images.
Chipsets
There are many CircuitPython compatible microcontroller boards, with several different processor chips. Each microcontroller has different qualities that make it good for different types of situations. This page discusses the different microcontrollers to help you understand the differences, and why you might choose one over another.
Raspberry Pi RP2040 Microcontroller
The Raspberry Pi RP2040 chip has a fast dual-core processor and contains "PIO processors" which provide very fast execution of a limited programmable instruction set. There is no native WiFi or Bluetooth (boards can have modules added for that) but it does have native USB.
The RP2040 is a microcontroller and not used on the familiar Raspberry Pi single board computers (SBC). See further down the page for Raspberry Pi SBCs.
- SPEED: 125 MHz
- FLASH: External 2 to 8 mB
- RAM: 264 kB
- BLE: NO
- WIFI: NO
- CORES: 2 Arm Cortex M0+
The RP2040 provides a fast dual core processor at a low price point. It has been incorporated into many development boards and is well supported by CircuitPython due to a large amount of RAM. It is an excellent choice at present for a wide range of projects.
A low cost, high processing capable processor widely supported in modern software.
ATSAMD21 M0
The Microchip ATSAMD21 Cortex M0 is the only Cortex M0+ based chip that CircuitPython supports. It does not have native Bluetooth or WiFi.
- SPEED: 48 MHz
- FLASH: 32 to 256 kB
- RAM: 4 to 32 kB
- BLE: NO
- WIFI: NO
- CORES: 1 Arm Cortex M0+
The SAMD21 can run CircuitPython, but it has limitations. It is clocked at 48MHz and has no built-in floating-point functionality, meaning it generally runs slower. There are memory limitations - it caps out at 256KB of flash and 32KB of RAM. Flash is important for multiple reasons, including determining the number of built-in CircuitPython modules supportable in builds for SAMD21 boards. If the board doesn't have a separate SPI flash chip, as in the case of the non-Express boards (e.g., Trinket, Gemma, QT Py, etc.), the flash limitations become even more critical. Flash space impacts how complex your code can be and how many libraries you can import, which determines things like how many sensors you can use at the same time.
The benefit is that it's small and lower cost than many of the other microcontrollers mentioned on this page. The slower clock speed and limited RAM make it suitable for only basic CircuitPython workloads like NeoPixels.
ATSAMD51 M4
The Microchip ATSAMD51 Cortex M4 microcontroller is powerful. It does not have native Bluetooth or WiFi.
- SPEED: 120 MHz
- FLASH: 256 to 1024 kB
- RAM: 128 to 256 kB
- BLE: NO
- WIFI: NO
- CORES: 1 Arm Cortex M4
The Cortex M4 means it can do faster floating-point math, so all division will be faster. It generally executes faster than the SAMD21, as the SAMD51 is clocked at 120mhz by default. It's a good option in that it has a lot more RAM - up to 256KB RAM - which means you can do more things all at once in your code. Most of the SAMD51 chips have more built-in flash as well, meaning less limitations on the built-in CircuitPython modules.
It's a great all-around chip, as long as you're not looking forWiFi or Bluetooth connectivity.
nRF52840
The Nordic Semiconductor nRF52840 is not as fast as the ATSAMD51, but it does have native Bluetooth capabilities.
- SPEED: 64 MHz
- FLASH: 1024 kB
- RAM: 256 kB
- BLE: YES
- WIFI: NO
- CORES: 1 Arm Cortex M4
An nRF52840 like a SAMD51, is also a Cortex M4 based chip, so it's faster than the SAMD21. However, it's clocked slower than SAMD51, and therefore the nRF52840 is not as speedy as SAMD51. It has 1MB of flash, and 256KB of RAM. It is important to note that both the flash and the RAM are shared with the Bluetooth code - those numbers are the built in flash and RAM, so, the amount available to the user is less because it is sharing with Bluetooth stack. The chip does not do WiFi.
The important feature of this chip is the native Bluetooth capabilities - if you want Bluetooth in CircuitPython, this chip is the way to go.
STM32F405
The ST Microelectronics STM32F405 is an all-around faster microcontroller than many of the other microcontrollers covered here.
- SPEED: 168 MHz
- FLASH: 1024 kB
- RAM: 192 kB
- BLE: NO
- WIFI: NO
- CORES: 1 Arm Cortex M4, Crypto Coprocessor
The STM32F405 is also a Cortex M4 based chip. It does not support native WiFi or Bluetooth. The Adafruit STM32F405 boards do not currently ship with a UF2 bootloader, so installing and updating CircuitPython requires more steps than simply dragging and dropping a UF2 file onto a BOOT drive. Note that only 128kB of RAM is available in CircuitPython. It's easier and cheaper to connect a debugger to this board than an ATSAMD board, it can be programmed without an external programmer using DFU, and it is very difficult to brick (render inoperable). However, it isn't as well supported in Arduino.
This microcontroller is great for more advanced folks looking to take extra steps with their project or learning process.
The ESP32 Family of Chips
There are a number of Espressif ESP32 chips currently on the market. They have differing specifications and CircuitPython support.
ESP32 Microcontroller
The Espressif ESP32 (no suffix) has both Bluetooth and WiFi capabilities but does not run CircuitPython natively. Instead, CircuitPython boards use the ESP32 as a co-processor for WiFi and Bluetooth capabilities. Note that it cannot do WiFi and Bluetooth at the same time.
- SPEED: 240 MHz
- FLASH: External 2 to 8 MB
- PSRAM: 2 MB
- BLE: YES
- WIFI: YES
- CORES: 2 Tensilica Xtensa processor
The ESP32 is not directly supported by CircuitPython because it does not have native USB connectivity.
NOTE: The ESP32 and the other ESP32 "dash" (ESP32-S2, -S3, -C3, etc.) chips are different microcontrollers with differing capabilities.
ESP32-S2 Microcontroller
The Espressif ESP32-S2 has native WiFi capabilities like the ESP32, but it only has a single processor core and does not have Bluetooth. However, it does have native USB support, and thus is the first all-in-one WiFi chip with CircuitPython support.
- SPEED: 240 MHz
- FLASH: External 2 to 8 MB
- PSRAM: 2 to 8 MB
- BLE: NO
- WIFI: YES
- CORES: 1 Tensilica Xtensa processor
The ESP32-S2 typically has 4MB of external flash, but only 1MB is available to the user. The way it works is that the flash space is shared between the native CircuitPython core code and the user filesystem. In this way, it is unlike the SAMD21 Express and SAMD51 Express boards, where CircuitPython lives on the chip and the code is separate.
The ESP32-S2 WROVER module has 2MB of external RAM, all of which is allocated to CircuitPython, which means it has more CircuitPython-dedicated RAM than any of the other microprocessors. There are ESP32-S2 modules that do not have the external RAM chip, and in the case of those, memory when using CircuitPython will be limited. It is a relatively low-cost option as well.
The ESP32-S2 is a great choice for budget-minded projects where heavy processing and Bluetooth are not required. The CircuitPython port is extremely stable.
ESP32-S3 Microcontroller
The Espressif ESP32-S3 has native WiFi capabilities and dual processor cores like the ESP32, while supporting both WiFi and Bluetooth. It is well supported by CircuitPython.
- SPEED: 240 MHz
- FLASH: External 2 to 8 MB
- PSRAM: 2 to 8 MB
- BLE: YES (see note)
- WIFI: YES
- CORES: 2 Tensilica Xtensa processor
CircuitPython BLE support on ESP32-S3 is not yet complete, as of CircuitPython 9.x.
The ESP32-S3 can come with various amounts of external flash and PSRAM. If you have a need for processing large amounts of data in-memory, this can be helpful.
The ESP32-S3 is a more powerful processor with WiFi and Bluetooth, making it quite capable with CircuitPython.
ESP32-C3 Microcontroller
The ESP32-C3 is based on a single core RISC-V processor. The chip supports WiFi and Bluetooth (but not both simultaneously) but it doesn't have native USB, so is a poor choice for CircuitPython. MicroPython may be run on the chipset as well as Arduino.
- SPEED: 160 MHz
- FLASH: External 2 to 8 MB
- PSRAM: 2 to 8 MB
- BLE: YES
- WIFI: YES
- CORES: 1 RISC-V
The ESP32-C3 is not a CircuitPython processor, and one should look at the S series of chips.
ESP32-C6 Microcontroller
The ESP32-C6 integrates Wi-Fi, Bluetooth LE, Zigbee and Thread functions. It contains a high performance 32-bit RISC-V processor and a low power 32-bit RISC-V processor. CircuitPython compatible but there are no current libraries for the Zigbee and Thread communications. This is new for 2024 so stay tuned for further information.
- SPEED: 160 MHz
- FLASH: External 2 to 8 MB
- PSRAM: 2 to 8 MB
- BLE: YES
- WIFI: YES
- CORES: 1 High Power RISC-V + 1 Low Power RISC-V
The ESP32-C6 chip has exciting features but the CircuitPython support is not fully developed at the moment.
i.MX RT Microcontrollers
The NXP i.MX RT family of chips are fast! The minimum clock speed you'll see is around 500MHz. They're a Cortex M7 based microcontroller family, which means they're more efficient at code execution than an M4 as well.
i.MX RT1011:
- SPEED: 500 MHz
- FLASH: External 2 to 8 MB
- SRAM: 128 kB
- BLE: NO
- WIFI: NO
- CORES: 1 Arm Cortex M7
In terms of flash, there is always an external flash chip that is shared between the native CircuitPython code and the user filesystem. In most cases, you'll have more RAM than a SAMD51, but not in all cases, for this chip line. The low end of the line will have less RAM than the SAMD51, but the code will run faster. It also has native high speed USB connectivity.
The i.MX RT processors provide advanced processing capability for applications.
Raspberry Pi Single Board Computers (SBC)
The Raspberry Pi typically runs CircuitPython libraries using the Blinka CircuitPython library compatibility layer with regular Python (called CPython). This means it's compatible with your current CircuitPython code, with no changes needed.
Raspberry Pi SBCs has many megabytes of memory, some up to 8 gigabytes and can use fast flash storage. Definite muscle for the biggest of tasks in a small space.
There is an experimental build of CircuitPython that runs "bare metal", re. on Raspberry Pi without Linux, but it may have missing features or possibly bugs.
SBCs are not low power or battery-friendly, as the boards are running a full Linux operating system. But, because they run CPython, you can also use all of the normal Python libraries alongside, such as numpy, etc. that are not in CircuitPython.
ATmega and ATtiny Microcontrollers
ATMEGA boards are not compatible with CircuitPython. This is because CircuitPython is designed for 32- or 64-bit machines, and ATmega and ATtiny based chips are 8-bit. For CircuitPython, please consider one of the options above.
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum