Crossing the Streams with CircuitPython
Adafruit’s CircuitPython makes it way onto a SparkFun board
It’s been an interesting year for microcontroller boards. We’ve seen a dramatic drop in the price of computing, along with the long anticipated collapse in the diversity of board form factors, the rise of the FPGA, and the new availability of RISC-V chips making ripples in the market.
Intriguingly, though, it seems that this year was also the year where high-level languages on low-level hardware took off. Which is why the appearance of Adafruit’s CircuitPython on a new board from SparkFun is far more important than it might seem on the surface. Because, like many of the early signs we’ve seen this year, this board may well be a leading indicator of things to come.
The SparkFun Pro nRF52840 Mini is built around Raytac MDBT50Q-P1M module which houses a 32-bit Nordic nRF52840 in an FCC-approved footprint. The Nordic chip is an Arm Cortex-M4 CPU with 1MB of internal Flash and 256KB of RAM, running at 64 MHz. It comes with integrated 2.4GHz radio with support for Bluetooth LE, and can act as both a peripheral or a central BLE device. However, it also can support Bluetooth 5 Mesh, the ANT protocol, and Nordic’s own proprietary RF protocol.
Additionally, the board exposes the nRF52840’s native USB support which can be used to program, power, and communicate with the chip. The footprint of the board doesn’t, quite, match the Arduino Pro Mini with some of the I/O pins being covered by a SparkFun Qwiic Connector. But those pins that are exposed are pin compatible with the Pro Mini board.
The board comes pre-loaded with USB boot loader which is “heavily based” on Adafruit’s nRF52 Bootloader, and lets you develop for the board using the Arduino development environment, Circuit Python, or using native C and Nordic’s own nRF5 SDK. There is a really detailed walkthrough allowing you to get started using the board either with Arduino, or Circuit Python, on the SparkFun site.
It’s been 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 microcontrollers will be defined, not by the hardware, but by their user experience. Because high level language support brings more accessibility, and a better user experience, and that can only be a good thing.