Just get the QT Py. It’s $6. It’s super tiny. It runs Arduino or CircuitPython.
I dig tiny microcontroller boards. Teensy boards, Arduino Nano boards, SparkFun Pro Micro boards. All of them. I am amazed at the power available in these small packages. Make LED wearables! Create tiny USB devices! Build small smart sensors! Make tiny synthesizers! The new QT Py is my current favorite of this class of devices. It’s also one of the smallest, most capable, and most expandable.
Physically the QT Py is less than 1” square at 20mm×17.5mm, with seven castellated pins on two sides, at 0.1” spacing, for breadboard use. Of these 14 pins, 11 can be analog inputs or digital I/O. Six of the pins can be capacitive touch inputs. One pin has a true analog output as a 10-bit DAC. And of course, there are hardware SPI, I2S, I2C, and serial interfaces available on various combinations of the pins. The QT Py also includes a Stemma QT / Qwiic connector for hooking up the myriad of I2C peripherals offered by SparkFun and Adafruit. On the bottom are pads for an easily-solderable SPI flash chip, enabling you to add 2MB (or more!) of extra storage to the board. This is an officially supported “hack” by Adafruit (they even sell the correct flash chip); it offers a more feature-rich version of CircuitPython if you have the chip installed.
Against the comparable Trinket M0 or SeeedStudio Xiao boards, the QT Py is familiar, but more refined. The QT Py has a USB-C connector, instead of the Trinket M0’s USB Micro-B. Compared to the Xiao, which it physically resembles and is pin-compatible with, the QT Py includes a reset button and Neopixel status LED. These two additions make using the built-in UF2 bootloader a breeze: double-tap the reset button, watch for the flashing red light, and the QT Py shows up a USB thumb-drive called “QTPYBOOT”. Program the board by simply dragging a “.UF2” file onto the drive icon.
You can of course still use the standard Arduino IDE process for uploading sketches. The Arduino support is robust and complete, building on the Arduino core developed for the Arduino Zero, and on Adafruit’s years of improving the core, libraries, and USB drivers. With 256KB of flash and running at 48MHz, the QT Py’s chip runs roughly 4x faster and has 8x the program storage than an Arduino Uno or Micro. Because of the TinyUSB libraries available both in Arduino and CircuitPython, there’s native USB functionality to emulate a keyboard, mouse, MIDI, USB thumb-drive, or serial device. In CircuitPython, all these interfaces are available simultaneously.
The QT Py is a great board to start experimenting with CircuitPython, a version of the Python computer language that runs directly on the board. Using CircuitPython is different, and arguably easier, than Arduino. To program the board, save a “code.py” file to the “CIRCUITPY” USB drive the QT Py creates and you’re done. No special IDE needed, just a text editor, but you can use any Python-aware code editor to help out. The CircuitPython team recommends the Mu editor. The QT Py is definitely just a “starter” board for CircuitPython though. Due to its smaller memory, it doesn’t contain all the CircuitPython libraries and you’ll run up against flash and RAM limits much sooner. For instance, memory-intensive projects like driving a 1024 element RGB LED matrix is possible in Arduino on the QT Py, but not possible in an interpreted language like CircuitPython.
The QT Py is well-built and expandable with its Stemma QT / Qwiic connector and pads for extra SPI flash. If you need a tiny powerful Arduino- or CircuitPython-compatible board, give it a try.