

The Adafruit Metro M4 Express (Manufacturer Part ID: 3382) is a powerful microcontroller board designed for advanced electronics projects. It is based on the Atmel SAMD51 microcontroller, featuring a 120 MHz ARM Cortex-M4 processor with floating-point support, 512 KB of RAM, and 4 MB of onboard flash storage. This board is compatible with both CircuitPython and Arduino IDE, making it versatile for a wide range of applications.








The Adafruit Metro M4 Express is packed with features that make it suitable for demanding applications. Below are its key technical details:
| Specification | Value |
|---|---|
| Microcontroller | Atmel SAMD51 (ARM Cortex-M4, 120 MHz) |
| RAM | 512 KB |
| Flash Storage | 4 MB onboard QSPI |
| Operating Voltage | 3.3 V |
| Input Voltage (VIN) | 6-12 V |
| Digital I/O Pins | 25 (with 12 PWM outputs) |
| Analog Input Pins | 6 (12-bit ADC) |
| Analog Output Pins | 1 (10-bit DAC) |
| Communication Interfaces | UART, I2C, SPI, CAN, USB |
| USB Support | USB-C (with native USB support) |
| CircuitPython Compatibility | Yes |
| Arduino IDE Compatibility | Yes |
| Dimensions | 71.1 mm x 53.3 mm |
The Adafruit Metro M4 Express features a standard Arduino-compatible pinout. Below is a detailed description of its pins:
| Pin Name | Type | Description |
|---|---|---|
| VIN | Power Input | External power input (6-12 V) |
| 3.3V | Power Output | Regulated 3.3 V output |
| GND | Ground | Ground connection |
| A0-A5 | Analog Input | 12-bit ADC pins for analog signals |
| D0-D13 | Digital I/O | General-purpose digital I/O pins |
| PWM Pins | Digital I/O | D2, D3, D5, D6, D9, D10, D11 (PWM capable) |
| SDA | I2C Data | I2C data line |
| SCL | I2C Clock | I2C clock line |
| TX | UART TX | UART transmit line |
| RX | UART RX | UART receive line |
| DAC0 | Analog Output | 10-bit DAC for analog signal generation |
| USB-C | USB Interface | USB-C port for programming and power |
| RESET | Reset | Resets the microcontroller |
Powering the Board:
Programming the Board:
Connecting Peripherals:
Uploading Code:
code.py on the board's USB drive.Below is an example of how to blink an LED connected to pin D13:
// Blink an LED on pin D13
void setup() {
pinMode(13, OUTPUT); // Set pin D13 as an output
}
void loop() {
digitalWrite(13, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(13, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
Below is an example of how to blink the onboard LED using CircuitPython:
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.D13) led.direction = digitalio.Direction.OUTPUT
while True: led.value = True # Turn the LED on time.sleep(1) # Wait for 1 second led.value = False # Turn the LED off time.sleep(1) # Wait for 1 second
Board Not Recognized by Computer:
Code Not Running:
code.py and placed in the root directory.Peripheral Not Responding:
Overheating:
Q: Can I use 5 V peripherals with the Metro M4 Express?
A: No, the Metro M4 Express operates at 3.3 V logic levels. Use a level shifter for 5 V peripherals.
Q: How do I reset the board to factory settings?
A: Double-press the reset button to enter bootloader mode, then reflash the firmware.
Q: Is the Metro M4 Express compatible with Arduino shields?
A: Yes, it has an Arduino-compatible pinout, but ensure the shield operates at 3.3 V.
Q: Can I use the Metro M4 Express for machine learning applications?
A: Yes, the SAMD51's powerful processor and floating-point support make it suitable for lightweight ML tasks.
Q: Where can I find additional libraries and examples?
A: Visit the Adafruit Metro M4 Express product page for libraries, tutorials, and resources.