Arduino MKR WiFi 1010 Pinout: GPIO, ADC, DAC, PWM, UART, SPI and I2C

Arduino MKR WiFi 1010 pinout guide: SAMD21 GPIO, 7 analog inputs, 10-bit DAC, 13 PWM-capable pins, UART, SPI, I2C, native USB, NINA-W102 Wi-Fi/Bluetooth, Li-Po charging and 3.3 V logic explained.

The Arduino MKR WiFi 1010 is a compact IoT board built around the SAMD21 Cortex-M0+ processor and a separate u-blox NINA-W102 wireless module.

Its main architecture is:

The board also includes:

  • 3.3 V logic;
  • native USB;
  • single-cell Li-Po charging;
  • ATECC508 secure element;
  • 7 external analogue inputs;
  • one true 10-bit DAC output;
  • 13 PWM-capable header pins;
  • UART, SPI and I2C;
  • an additional Eslov I2C connector.

Quick MKR WiFi 1010 Specifications

Feature MKR WiFi 1010
Main MCU SAMD21 Cortex-M0+
Clock 48 MHz
Logic voltage 3.3 V
Flash 256 KB
SRAM 32 KB
EEPROM No dedicated EEPROM
Digital-labelled header pins D0-D14
Analog inputs A0-A6
ADC resolution 8/10/12-bit selectable
DAC A0, 10-bit
PWM-capable header pins 13
UART 1 external hardware UART
SPI 1 external SPI bus
I2C 1 external I2C bus
Wi-Fi 2.4 GHz 802.11 b/g/n via NINA-W102
Bluetooth Bluetooth / BLE via NINA-W102
USB Full-Speed USB device and embedded host capability
Secure element ATECC508
Battery Single-cell 3.7 V Li-Po
GPIO current 7 mA maximum per pin
Size 61.5 × 25 mm

Important: MKR WiFi 1010 Uses 3.3 V Logic

The most important electrical rule is:

The SAMD21 is not a 5 V AVR device.

Do not assume a sensor, shield or module designed for UNO/Mega 5 V logic can be connected directly.

Before connecting a 5 V peripheral, check:

  • its input HIGH threshold;
  • its output voltage;
  • I2C pull-up voltage;
  • SPI/UART signal voltage;
  • whether level shifting is required.

GPIO Current Limit

The official MKR WiFi 1010 pinout gives a maximum of:

with group-level source/sink limits as well.

This is much lower than the current figures users may remember from older AVR boards.

Do not directly drive:

  • relays;
  • motors;
  • solenoids;
  • high-power LEDs;
  • large buzzers.

Use a transistor, MOSFET or dedicated driver.

Digital Pin Mapping

The board edge exposes digital labels:

with the following main SAMD21 mappings:

Arduino pin SAMD21 pin Main alternate functions
D0 PA22 PWM
D1 PA23 PWM
D2 PA10 PWM
D3 PA11 PWM
D4 PB10 PWM
D5 PB11 PWM
D6 PA20 PWM / LED_BUILTIN
D7 PA21 PWM
D8 PA16 PWM / SPI COPI
D9 PA17 SPI SCK
D10 PA19 PWM / SPI CIPO
D11 PA08 I2C SDA
D12 PA09 PWM / I2C SCL
D13 PB23 UART RX
D14 PB22 UART TX

Why Arduino’s Store Says “8 Digital I/O Pins”

The current Arduino store specification lists:

but the physical pinout clearly labels:

because several communication and analogue-capable pins can also be used as normal digital GPIO.

For practical wiring, the full pinout map is more useful than treating the headline “8” as the total number of usable digital-labelled pins.

LED_BUILTIN

The onboard user LED is:

so the normal Blink sketch works with:

PWM Pins

The official pinout marks 13 PWM-capable header positions:

Notice that:

are not marked as default PWM outputs in the board pinout.

PWM Example

On most pins this generates PWM.

A0 is different because it can provide a true DAC output.

Analog Inputs A0-A6

The MKR WiFi 1010 exposes seven analogue inputs:

Analog pin Digital alias SAMD21 pin ADC channel
A0 D15 PA02 AIN0 / DAC0
A1 D16 PB02 AIN10
A2 D17 PB03 AIN11
A3 D18 PA04 AIN4
A4 D19 PA05 AIN5
A5 D20 PA06 AIN6
A6 D21 PA07 AIN7

Analog Pins Can Also Be Digital GPIO

The analogue pins have digital aliases:

So a pin such as A5 can also be used with:

ADC Resolution

The official specification lists ADC operation at:

The SAMD core supports changing read resolution with:

For example:

At 12-bit resolution, the normal range is:

A0 Is a True DAC Output

A0 is special:

The official board specification describes the analogue output as:

This is a genuine analogue output, not just PWM.

DAC Example

This targets approximately mid-scale output.

Do Not Treat A0 Like an UNO PWM Pin

On the MKR WiFi 1010:

whereas on many classic Arduino boards:

AREF

The board exposes:

for analogue-reference use.

Follow the SAMD21 and Arduino reference-voltage rules when applying an external AREF.

Hardware UART

The external hardware UART is:

Use:

for those pins.

USB Serial vs Serial1

Because the SAMD21 has native USB:

This allows the board to communicate with a PC over USB while simultaneously talking to a GPS, modem or another MCU over the hardware UART.

UART Example

I2C Pins

The main I2C bus is:

Use:

I2C Example

Additional Eslov I2C Connector

The MKR WiFi 1010 also includes a small 5-pin:

connector carrying:

  • SDA;
  • SCL;
  • GND;
  • +5 V;
  • WK / wake-alarm signal.

The SDA/SCL signals are the same I2C bus rather than a completely independent second I2C controller.

Be Careful with the Eslov 5 V Pin

The connector includes:

power, but the SAMD21 communication signals remain:

Do not assume the presence of 5 V power means the I2C pins are 5 V logic.

SPI Pins

The main external SPI mapping is:

Use:

SPI Example

Chip select can generally be assigned to a suitable free GPIO unless a library or peripheral requires a specific pin.

Native USB

The SAMD21 provides native:

and the board supports USB device operation as well as embedded-host capability.

This enables projects such as:

  • USB serial devices;
  • keyboard/mouse HID;
  • custom USB peripherals.

Micro-USB Connector

The MKR WiFi 1010 uses a:

connector for normal:

  • programming;
  • power;
  • USB data.

Wi-Fi Hardware

Wireless networking is handled by the:

module.

Its wireless hardware supports:

with up to 72 Mbit/s PHY rate for 802.11n according to Arduino’s current datasheet.

The NINA-W102 Contains Its Own Processor

The wireless module contains a:

processor.

However, in normal MKR WiFi 1010 use:

You do not normally write the main Arduino application to the NINA module.

WiFiNINA Library

The standard Wi-Fi software path is:

For example:

Bluetooth and BLE

Arduino’s current NINA-W102 datasheet lists:

  • Bluetooth BR/EDR;
  • Bluetooth Low Energy;
  • Bluetooth 5.0 dual-mode radio capability.

Arduino projects normally use the supported Arduino Bluetooth libraries and firmware interfaces rather than programming the radio stack directly.

ATECC508 Secure Element

The board includes a:

secure element.

This is useful for:

  • secure key storage;
  • device identity;
  • TLS authentication;
  • Arduino Cloud provisioning.

Li-Po Battery Connector

The MKR family was designed for portable IoT applications.

The MKR WiFi 1010 therefore includes a connector for a:

and onboard charging circuitry.

Arduino’s current store specification recommends a battery of at least:

Battery Charging

When USB power is connected, the onboard charger can recharge the attached Li-Po battery.

This makes the board suitable for:

  • portable sensors;
  • remote data loggers;
  • battery-backed IoT nodes;
  • mobile BLE devices.

VIN Is Not the Same as UNO VIN

This is an important MKR difference.

Arduino documents VIN as a regulated input in approximately the:

range.

Do not connect:

to MKR VIN just because a classic UNO or Mega can accept those voltages.

5 V Pin

The board exposes:

which is derived from USB/VIN under normal powered operation.

Again:

3.3 V Pin

The:

pin provides the board’s regulated 3.3 V supply.

This is the natural power rail for most external logic connected directly to SAMD21 GPIO.

RTC Clock

The SAMD21 includes an RTC subsystem and the board specification lists:

alongside the:

No Dedicated EEPROM

The MKR WiFi 1010 does not include classic AVR-style onboard EEPROM in the main SAMD21 specification.

If your application needs persistent settings, use an appropriate Flash-emulation or external-storage approach.

External Interrupts

Arduino’s current store specification lists external interrupts on:

for a total of:

External Interrupt Example

SWD Debug Pins

The bottom of the board exposes SWD programming/debug signals including:

These allow advanced debugging and low-level programming of the SAMD21 with suitable tools.

Pin Conflicts with the Wireless Module

Several internal SAMD21 pins are reserved for communication with the NINA-W102.

The SAMD21 and NINA communicate through internal:

  • SPI;
  • UART/control signals;
  • reset/acknowledge lines.

Those internal connections are separate from the normal user-facing SPI/UART pins, but they consume SAMD21 SERCOM/peripheral resources.

Common Mistake 1: Applying 5 V to GPIO

The board is a:

Do not assume 5 V tolerance.

Common Mistake 2: Feeding 9-12 V into VIN

MKR VIN is not a classic UNO VIN input.

Use the documented:

or USB/battery power.

Common Mistake 3: Assuming A0 Is Only an ADC

A0 is also:

and can generate a genuine analogue output.

Common Mistake 4: Assuming D9 Is PWM

The official pinout does not mark:

as a default PWM pin, even though it is the SPI clock.

Common Mistake 5: Confusing Serial and Serial1

Use:

Common Mistake 6: Powering a Heavy Load from GPIO

The official pinout gives:

so external load drivers are important.

Quick Digital Reference

Quick Analog Reference

Quick Communications Reference

Final Thoughts

The Arduino MKR WiFi 1010 remains a useful compact IoT board because it combines:

in a narrow MKR form factor.

The most important pinout rules are:

The two biggest electrical traps are applying 5 V to the GPIO and treating MKR VIN like an UNO’s wide-range VIN input.

For IoT applications, the combination of the SAMD21, NINA-W102 radio, secure element and onboard Li-Po charging is what makes the MKR WiFi 1010 distinct from a simple Wi-Fi development board.

Share your love