Adafruit is pushing hard. They have a plan. And it’s pretty easy to spot it if you pay attention. Down with Arduino, up with Circuit Python! The Metro M0 Express makes it easy for those interested in going along for the ride to transition to the new platform.
The “Express” editions of numerous popular Adafruit boards feature the ATSAMD21G18 — an ARM Cortex M0+ chip as opposed to the AVR chips featured in most Arduinos. These ARM chips are more powerful than their AVR predecessors, allowing the Python interpreter to run directly on the device, with no need to compile before uploading. Thanks to the new UF2 bootloader, this lack of need to compile makes this new family of uC dev boards incredibly easy to work with; simply drag and drop your code onto the device and it will start running automatically.
The biggest reason you would probably consider picking up a Metro M0 Express over one of the other Express boards is the form factor. The Metro line are all built with the same basic pinout (more to come on this) and spacing as the core Arduino boards. This means all your shields will slide down onto your Metro like they were meant to be there. But don’t get your hopes up too high of upgrading your project with a drop in replacement board. Most of your standard Arduino boards use 5V logic levels, and the Metro M0 Express is a 3V device. This might not be a problem for all projects, but it’s something to keep in mind before rushing out to pick up this device.
So why did I say “basic pinout”? The pins on the Metro M0 Express can function the same way as the ones on Arduino (digital I/O, analog in, PWM), but many of them can go far further. Almost all of the digital pins (3 through 13 except 7) are able to do PWM, and many of the pins are also capable of doing analog reads. Analog 0 is capable of doing true Analog out also, something you won’t find at all on an Atmega based Arduino.
Some of the extra pins from the ATSAMD21G18 that are not typically found on an Arduino are broken out to add a few more features. There is a neopixel that is user-accessible but also a rudimentary debug/status system. A 2MB flash chip is accessible in certain boot modes (read only in Circuit Python). There’s also a dedicated debug port that is broken out. (That’s something you might find useful when you get tired of Circuit Python blinking at you endlessly “WHAT DOES GREEN YELLOW BLUE BLUE BLUE BLUE MEAN!!!!”)
Circuit Python is in its early days and there is a lot of work to be done to catch up with Arduino, for example code and tutorials, but this growing ecosystem of boards that will support it will help things along the way. If you have a good number of Arduino shields already, the Metro M0 Express is probably a great board for you to use to jump into this new playground.