When you program an Arduino Uno in C or C++, the compiler takes the code you’ve written and turns it into chunks of machine code the microcontroller’s processor can execute. The firmware you upload to the microcontroller has direct control of the processor.
Python is different. It’s an interpreted language, meaning the processor runs a program that speaks Python. The code you write doesn’t have direct control of the processor, it’s more like an elaborate set of button-presses that tell the code actually controlling the processor what to do.
Interpreted languages have some strong advantages over compiled languages: you can enter code on the fly and see the interpreter process the instructions as you type, and they handle a lot of nitpicky details like memory management so you don’t have to.
There are always trade-offs though. An interpreted language might have to execute several hundred processor instructions for every line of code you type, and the behind-the-scenes stuff like memory management also takes work. You can assume that interpreted code will always be at least 10x slower than compiled code, and will require about 10x more programming resources like RAM and program storage.
The SAMD21G has enough RAM to run a simple Python interpreter, and we gave our Express boards a Flash chip where they can store code. The result is a set of boards you can program in Python on the fly.
The Circuit Playground Express is the flagship of our Python-programmable line.
It’s designed to be a lots-of-interesting-stuff-with-no-wiring-necessary learning tool like the Circuit Playground Classic, but it also has the microcontroller and external Flash that a Python interpreter needs.
We’ve written the low-level code that lets the Python interpreter talk to the hardware, and we’ve installed the UF2 bootloader (the program that lets a chip upload its own code). That makes getting Python code and libraries from your computer to the Flash chip as easy as dragging and dropping files on a USB thumb drive.
All the Python in the Uno footprint.
The Metro M0 Express doesn’t have all the connected devices of a Circuit Playground Classic, but is more friendly to breadboarding on the workbench or existing projects that are already designed for an Uno.
The Metro M4 is built around the SAMD51, a newer microcontroller from Atmel/Microchip.
Its core is an ARM Cortex-M4 microcontroller, a 32-bit device with a hardware floating-point math engine and a digital signal processor (single math instructions that work on a whole block of memory).
SAMD51 peripherals include Ethernet and CAN interfaces, cryptography features like a true random number generator (TRNG), AES, and public-key processing circuits, and a block of configurable logic similar to a small FPGA.
The fact that the hardware can do those things doesn't mean code support exists yet. Adafruit is working on getting the most out of the SAMD51, mainly through CircuitPython.
The Adafruit Grand Central features the Microchip ATSAMD51 with its 120MHz Cortex M4 and floating point support.
The Grand Central is the first SAMD board that has enough pins to make it in the form of the Arduino Mega - with a massive number of pins, tons of analog inputs, dual DAC output, 8 MBytes of QSPI flash, SD card socket, and a NeoPixel.
If you need a board with lots of GPIO pins, this is your ticket.
With this one, you can take your Python for a walk.
The Feather M0 Express is good for battery-powered projects and is compatible with all the boards in the Feather ecosystem.
The Raspberry Pi RP2040 was released in January 2021 and is Raspberry Pi's first microcontroller (compared to their single-board computers (SBC) they have made since 2012).
Raspberry Pi markets their own microcontroller board with the RP2040 as the Raspberry Pi Pico and Raspberry Pi Pico W (with WiFi onboard).
Adafruit has also made a number of boards with the RP2040 and they all run CircuitPython well:
- Adafruit Metro RP2040
- Adafruit QT Py RP2040
- Adafruit Feather RP2040
- Adafruit Feather RP2040 with USB Type A Host
- Adafruit Feather RP2040 Adalogger - 8MB Flash with microSD Card - STEMMA QT / Qwiic
- Adafruit RP2040 Feather ThinkInk for 24-pin E-Paper Displays - STEMMA QT
- Adafruit MacroPad RP2040 Starter Kit - 3x4 Keys + Encoder + OLED - ADABOX019 Essentials
- Adafruit Feather RP2040 with RFM95 LoRa Radio - 915MHz - RadioFruit and STEMMA QT
- Adafruit Feather RP2040 RFM69 Packet Radio - 868 or 915MHz - RadioFruit and STEMMA QT
- Adafruit RP2040 CAN Bus Feather with MCP2515 CAN Controller - STEMMA QT
- Adafruit Feather RP2040 SCORPIO - 8 Channel NeoPixel Driver
- Adafruit KB2040 - RP2040 Kee Boar Driver
- Adafruit ItsyBitsy RP2040
- Adafruit Trinkey QT2040 - RP2040 USB Key with Stemma QT
The Raspberry Pi RP2350 was released in August 2024 and is Raspberry Pi's second generation microcontroller.
Raspberry Pi markets their own microcontroller board with the RP2040 as the Raspberry Pi Pico 2 and Raspberry Pi Pico 2 W (with WiFi onboard).
The chip has double the memory of the RP2040, is faster and uses M33 Arm cores and has Hazard 3 RISC-V cores. A HSTX bus provides high speed DMA processing for things like DVI video output. The RP2350B has additional GPIO pins.
Adafruit has also made a number of boards with the RP2350 and they all run CircuitPython extremely well:
Frankly, we designed these to replace the ATtiny85 Trinket and Gemma.
People would buy a Trinket or Gemma thinking it was a cheap and easy way to get started in microcontroller programming, not knowing that those boards were more of a challenge than a larger board like the Metro 328P. The result was an ongoing mismatch between expectations and experience.
The new M0 versions use a SAMD21E microcontroller, which is a bit smaller and more limited than the SAMD21G, but is far more capable than the ATtiny85. They handle their own USB communication and their GPIO pins are easier to work with.
They’re still special-purpose boards best suited to embedded projects where space is limited, but they do work as cheap and simple entry-level boards.
Due to the limited RAM of the M0 boards, it is recommended folks use the RP2040 and RP2350 boards if their code is beyond a basic, small sketch.
Page last edited July 23, 2025
Text editor powered by tinymce.