A Coming of Age for CircuitPython?

Alasdair Allan
3 min readJul 12, 2018

There are points of inflection in the way we build hardware. The Arduino was clearly one of these, relegating the turning of an LED on, and then off again, to a simple parlour trick, a “Hello World” of hardware. But we’re now heading directly towards another, with interpreted languages like Javascript and Python becoming the new normal for development.

When new hardware arrives being Arduino-compatible is still important, but increasingly new boards also advertise support for a higher level language, with support for MicroPython, and Adafruit’s custom fork CircuitPython, being firmly in the lead.

The Adafruit Gemma M0 was the first board to run CircuitPython out of the box, others have followed including the Metro M0 Express, Metro M4, Feather M0 Express and, just yesterday, the new Feather M4.

The new Adafruit Feather M4, the latest Adafruit board to support CircuitPython. (📷: Adafruit)

Which makes the announcement of the version 3.0.0 of CircuitPython slightly more important than it might seem on the surface.

The new release features newly added support for Arm Cortex-M4 support, in the form of the Microchip SAM D51, alongside preliminary support for the new Nordic Semiconductor nRF52 series of Bluetooth LE chips which is now starting to appear on production boards. A full list of changes is available on the release page on GitHub, amongst which is the promise of better memory utilisation.

Alongside this is the almost simultaneous announcement of the release of the latest version of the Mu editor.

The Mu Editor. (📷: Alasdair Allan)

Mu is a simple code editor that works with a number of boards, including the BBC Micro:bit and Adafruit’s CircuitPython boards. Written in Python, it is cross-platform and runs on MS Windows, Apple’s macOS, Linux and the Raspberry Pi. Like the Arduino development environment, Mu has a serial console built in, allowing you immediate feedback from your board.

The latest Mu release, 1.0.0-beta.17, has a number of changes. Although perhaps the most important to makers is a major re-write of how MicroPython code is flashed onto the BBC Micro:bit, along with an update to use the latest version of MicroPython for the Micro:bit. The release is feature complete for 1.0, and is the final beta version before a release candidate later this week, and the final 1.0 release sometime next week.

It’s fascinating to see the maturing ecosystem around the use of Python on microcontrollers. Because I’m starting to think that, with our hardware now ‘good enough’ to do most of what we need, the next generation of micro-controllers will be defined, not by the hardware, but by their user experience. High level language support brings more accessibility, and a better user experience, and that can only be a good thing.