MakerLab
ArduinoArduino MKR Zero

Arduino MKR ZERO: A Powerful 32-bit Board for Advanced Projects

The Arduino MKR ZERO is a compact, powerful microcontroller board featuring a SAMD21 Cortex-M0+ processor, designed for IoT and advanced embedded applications requiring significant processing power and low energy consumption.

Arduino MKR Zero

The Arduino MKR ZERO is a member of the Arduino MKR family, a series of boards designed for the Internet of Things (IoT). It stands out with its 32-bit ARM Cortex-M0+ microcontroller, the Microchip (formerly Atmel) SAMD21, offering a substantial leap in processing power and efficiency compared to many 8-bit Arduino boards. This makes it suitable for more demanding applications, such as audio processing, complex sensor fusion, or running sophisticated algorithms that would overwhelm simpler microcontrollers.

At the heart of the MKR ZERO is the Microchip SAMD21G18A. This SoC is built on a low-power ARM Cortex-M0+ processor, running at a clock speed of up to 48MHz. It features 256KB of Flash memory for program storage and 32KB of SRAM for data. The SAMD21 is known for its rich peripheral set, including multiple timers, analog-to-digital converters (ADCs), digital-to-analog converters (DACs), and communication interfaces like I2C, SPI, and UART. The 'ZERO' in its name signifies its position as a more advanced, zero-compromise board within the MKR lineup, often favored for projects where performance and flexibility are key.

This board is an excellent choice for makers, students, and embedded engineers looking to move beyond basic blinking LEDs and simple sensor readings. Its capabilities are well-suited for projects involving real-time audio playback and recording (hence the 'ZERO' designation, hinting at 'audio zero'), machine learning inference on edge devices, complex control systems, or building sophisticated IoT nodes that require local data processing before transmission. Its small form factor and low power consumption also make it ideal for battery-powered applications.

Released around 2017, the MKR ZERO was designed to bridge the gap between hobbyist-level boards and more professional embedded development platforms. It provides a robust hardware foundation with a familiar Arduino programming environment, making it accessible to those already comfortable with the Arduino ecosystem while offering the performance needed for more advanced tasks. Its support for various communication protocols and its powerful microcontroller make it a versatile tool for a wide range of innovative projects.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCMicrochip SAMD21G18A
Architecture32-bit ARM Cortex-M0+
Clock speed48 MHz
Flash / Storage256 KB
RAM / SRAM32 KB
Operating voltage3.3V
Digital I/O pins22
Analog / ADC6 (10-bit)
PWM12 (on most digital pins)
ConnectivityI2C, SPI, UART
USBMicro-USB connector (for programming and power)
Power input5V via Micro-USB or VIN pin, 3.3V via 3.3V pin
Dimensions67.64mm x 25mm

Pinout & pin functions

PinFunction
3.3VPower output (regulated 3.3V)
GNDGround
VINPower input (typically 5V from USB or external supply)
RESETReset pin
D0 (RX)Digital I/O, UART receive
D1 (TX)Digital I/O, UART transmit
D2Digital I/O
D3Digital I/O, PWM capable
D4Digital I/O
D5Digital I/O, PWM capable
D6Digital I/O, PWM capable
D7Digital I/O
D8Digital I/O
D9Digital I/O, PWM capable
D10 (CS)Digital I/O, SPI chip select
D11 (MOSI)Digital I/O, SPI Master Out Slave In
D12 (MISO)Digital I/O, SPI Master In Slave Out
D13 (SCK)Digital I/O, SPI clock
D14 (SCL)Digital I/O, I2C clock
D15 (SDA)Digital I/O, I2C data
A0Analog input, ADC capable
A1Analog input, ADC capable
A2Analog input, ADC capable
A3Analog input, ADC capable
A4Analog input, ADC capable
A5Analog input, ADC capable
A6Analog input, ADC capable
A7Analog input, ADC capable
AREFAnalog Reference voltage
GNDGround

Wiring & circuit basics

The Arduino MKR ZERO operates at a logic level of 3.3V. This means that digital inputs and outputs are designed to work with signals between 0V (LOW) and 3.3V (HIGH). Connecting 5V logic devices directly to the MKR ZERO's digital pins can damage the microcontroller. If you need to interface with 5V devices, use a logic level shifter. Power can be supplied via the Micro-USB port or the VIN pin. The VIN pin can accept a voltage range typically from 5V to 12V, which is then regulated down to 3.3V by an onboard voltage regulator. Ensure your power supply can provide sufficient current, especially if powering multiple components or motors; a 5V supply capable of at least 500mA is a good starting point.

When connecting components, always connect to the appropriate pins. For example, to blink an LED, connect the anode (longer leg) of the LED to a digital pin (e.g., D5) and the cathode (shorter leg) to a current-limiting resistor (e.g., 220-330 Ohm), which is then connected to a GND pin. The resistor is crucial to prevent excessive current from flowing through the LED and the microcontroller's pin, which could cause damage.

For I2C communication, which is common for sensors like accelerometers, gyroscopes, and displays, use the dedicated SDA (D15) and SCL (D14) pins. These pins also function as digital I/O pins. Remember that I2C communication typically requires pull-up resistors on both the SDA and SCL lines to function correctly; these are often built into sensors or can be added externally. Always consult the datasheet of your sensor for specific wiring and voltage requirements.

Programming & getting started

The primary toolchain for the Arduino MKR ZERO is the Arduino IDE, which supports C/C++ programming. You can install the necessary board support package for the SAMD21 microcontroller via the IDE's Board Manager. This enables you to write, compile, and upload sketches to the board. For a quick start, connect the MKR ZERO via its Micro-USB port to your computer. Select 'Arduino MKR ZERO' from the 'Tools > Board' menu and choose the correct COM port. Then, upload the 'Blink' example sketch to verify your setup.

For those interested in Python, CircuitPython (from Adafruit) and MicroPython are excellent alternatives. These environments offer a more high-level programming experience and are often easier for beginners. Flashing CircuitPython or MicroPython onto the MKR ZERO typically involves downloading the appropriate firmware file and following specific instructions for putting the board into bootloader mode, often by double-tapping the reset button, then dragging and dropping the firmware file onto the board when it appears as a USB drive.

Project ideas

Real-time Audio PlayerUtilize the SAMD21's DAC and DMA capabilities to play back WAV files from an SD card. This project leverages the board's audio potential and file system access, teaching about audio processing and data buffering.
Advanced Sensor NodeConnect multiple I2C or SPI sensors (e.g., environmental sensors, IMUs) and use the MKR ZERO's processing power to perform sensor fusion or local data analysis before transmitting data wirelessly (with an added MKR WiFi 1010 or LoRa module), teaching about sensor integration and data processing.
Edge Machine Learning InferenceRun simple machine learning models (e.g., keyword spotting, gesture recognition) directly on the microcontroller using libraries like TensorFlow Lite for Microcontrollers. This project explores embedded AI and efficient algorithm implementation.
3D Printer Control BoardWith its multiple PWM outputs and processing power, the MKR ZERO can be a capable controller for small 3D printers, managing stepper motors, heaters, and endstops, teaching about real-time control systems and hardware interfacing.
MIDI SynthesizerUse the UART or I2C interfaces to receive MIDI messages and the DAC to generate analog audio waveforms, creating a compact digital synthesizer, demonstrating digital signal generation and real-time audio synthesis.
Low-Power Environmental MonitorCombine the MKR ZERO's low-power features with sensors to create a battery-operated device that periodically wakes up, takes readings, and transmits data (e.g., via LoRa), teaching about power management and wireless communication.

Buying tips & gotchas

When purchasing an Arduino MKR ZERO, ensure you are buying from a reputable source to avoid counterfeit boards, which may have unreliable performance or lack proper component quality. Be mindful of the 3.3V logic level; using 5V components without level shifting is a common pitfall that can damage the board. Accessories that complement the MKR ZERO include various sensors (IMUs, environmental, GPS), displays, and communication modules like the MKR WiFi 1010 or MKR WAN 1300 for wireless connectivity. A small breadboard and jumper wires are essential for prototyping. Consider investing in a good quality USB cable for reliable power and data transfer.