Hardware doesn’t have to be slotted on top, though. The M7 Metro also comes equipped with a Qwiic port for attaching I2C hardware – there’s a huge range available from Adafruit and other suppliers.
Alongside the main powerful microcontroller, there’s a second microcontroller – an ESP32 that’s used for wireless networking. In theory, this can do both Wi-Fi and Bluetooth Low Energy, but at the moment, there’s only support for Wi-Fi. Adafruit calls this setup, using a secondary ESP32, Airlift.
The Airlift networking setup offloads most of the work onto the secondary microcontroller. This means that your main processor isn’t burdened with the various issues of keeping connected and shuffling data in and out. That’s perhaps less of an issue on this beast of a processor than on some others, but it does mean that your code’s performance should be far more predictable.
We tested the Metro M7 Airlift that includes wireless connectivity and costs $29.95, but there’s also a version without wireless (and with an SD card port) that comes in at $19.95.
Perhaps the most unusual thing about this board is that – unlike almost all of Adafruit’s other boards – you can’t use it with the Arduino IDE. You can program it with CircuitPython or the MCUXpresso IDE created by NXP (the microcontroller’s designers). For most people, that’s likely to mean that this is a CircuitPython board.
We tested this out with some audio code. Not so long ago, we were pretty happy if we could make a microcontroller go beep while also doing something else. With this, we were able to play ten WAV files and dynamically adjust the volume simultaneously, and make it Wi-Fi accessible. What’s more, we were able to do all of this in Python. Some of this is, of course, down to improvements in hobbyist microcontroller software over the years, but it’s also due to the fact that this is almost as powerful as the PC we used to use to program microcontrollers.
We also speed-tested the Metro M7 against the Adafruit Grand Central M4 Express and the Metro ESP32-S2. These are two of the fastest CircuitPython boards from Adafruit, running an Arm Cortex-M4 at 120MHz, and a 240MHz Tensilica core, respectively.
We found the M7’s performance to be about five to six times faster than the M4 across a range of different areas, including integer and floating-point maths. This is down to both the higher clock speed and the fact that the M7 core can do more computation in each clock cycle. When compared to the ESP32-S2, performance was a bit more varied, but the M7 always came out on top. GPIO access and floating-point arithmetic was about twice as fast, and integer arithmetic was about 4.5 times the speed.
You might think that more computing power is always a good thing, but it does have a drawback. It needs more electrical power to keep it running. Given modern batteries, this is less of a problem than it used to be, but if you need something to run off-grid, you probably want to think a bit about whether you really need this amount of processor power.
The Arm Cortex-M7 is a powerful microcontroller core, but the Metro M7 Airlift isn’t the only high-speed Arm Cortex-M7 board, so it’s not just a matter of choosing a fast microcontroller – it’s a question of whether you want this M7 microcontroller. It’s reasonably chunky, but whether this is a plus or minus is down to your particular project. Given that this isn’t compatible with the Arduino IDE, and that the Uno hasn’t been the dominant form factor for microcontroller add-ons for over half a decade, it’s unlikely that this form factor is going to be important to you. That said, we’re quite fond of this size. It’s not too fiddly to work with, but still small enough to fit most spaces, and we prefer socket headers to the more popular pin headers. The Metro M7 Airlift is the only Wi-Fi-enabled M7 board that we’re aware of, so if you need both oodles of power and network connectivity, then this is a good choice. CircuitPython support is great, as you would expect of a board from Adafruit.
This is the sort of board we like to use when prototyping projects. We might not need the raw performance or the dedicated networking hardware in the final build, but it’s good to have it there while testing everything out and getting it all working. Yes, this is ridiculously powerful for a microcontroller, and yes, few of your projects really need this much grunt, but having power to spare can make the build go a bit smoother and lets you worry about optimisation later.
A powerful board with Wi-Fi and great CircuitPython support.