The Arduino MKR NB 1500 is a compact cellular IoT board built around the SAMD21 Cortex-M0+ microcontroller and a u-blox SARA-R410M-02B LTE modem.
Its architecture is:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SAMD21G18A → 48 MHz Cortex-M0+ → runs your Arduino sketch → GPIO, ADC, DAC, timers, USB and serial buses SARA-R410M-02B → LTE Cat M1 → NB-IoT / LTE Cat NB1 → cellular connectivity ATECC508 → secure key storage |
The board is designed for remote sensors, telemetry, metering and other applications where Wi-Fi is not available but low-power cellular coverage is.
Quick MKR NB 1500 Specifications
| Feature | MKR NB 1500 |
|---|---|
| Main MCU | SAMD21 Cortex-M0+ |
| Clock | 48 MHz |
| RTC clock | 32.768 kHz |
| Logic voltage | 3.3 V |
| Flash | 256 KB |
| SRAM | 32 KB |
| EEPROM | No dedicated EEPROM |
| Analog inputs | 7, A0-A6 |
| ADC | 8/10/12-bit selectable |
| DAC | 1 × 10-bit on A0 |
| PWM | 13 documented PWM-capable pins |
| UART | 1 external hardware UART |
| SPI | 1 external SPI bus |
| I2C | 1 external I2C bus |
| Cellular modem | u-blox SARA-R410M-02B |
| Cellular technologies | LTE Cat M1 / NB-IoT |
| Secure element | ATECC508 |
| Battery | Single-cell 3.7 V Li-Po/Li-Ion |
| GPIO current | 7 mA maximum per pin |
| USB | Full-Speed native USB |
3.3 V Logic Only
The MKR NB 1500 uses:
|
1 2 3 4 |
3.3 V GPIO |
Do not assume UNO-style 5 V logic compatibility.
Before connecting a 5 V peripheral, check:
- its output voltage;
- its input HIGH threshold;
- I2C pull-up voltage;
- SPI voltage;
- UART voltage.
Use level shifting where required.
GPIO Current Limit
The official pinout specifies:
|
1 2 3 4 5 |
7 mA maximum per I/O pin |
with group-level current limits as well.
Do not drive:
- relays;
- motors;
- solenoids;
- high-current LEDs;
- large buzzers;
directly from GPIO.
Main Digital Pin Mapping
The main MKR header exposes:
|
1 2 3 4 |
D0-D14 |
with the usual SAMD21 MKR mapping:
| Arduino pin | SAMD21 pin | Main functions |
|---|---|---|
| D0 | PA22 | GPIO / PWM |
| D1 | PA23 | GPIO / PWM |
| D2 | PA10 | GPIO / PWM |
| D3 | PA11 | GPIO / PWM |
| D4 | PB10 | GPIO / PWM |
| D5 | PB11 | GPIO / PWM |
| D6 | PA20 | GPIO / PWM / LED_BUILTIN |
| D7 | PA21 | GPIO / PWM |
| D8 | PA16 | GPIO / PWM / SPI COPI |
| D9 | PA17 | GPIO / SPI SCK |
| D10 | PA19 | GPIO / PWM / SPI CIPO |
| D11 | PA08 | GPIO / I2C SDA |
| D12 | PA09 | GPIO / PWM / I2C SCL |
| D13 | PB23 | GPIO / UART RX |
| D14 | PB22 | GPIO / UART TX |
Analog Inputs A0-A6
The board exposes seven analogue inputs:
|
1 2 3 4 5 6 7 8 9 10 |
A0 A1 A2 A3 A4 A5 A6 |
with digital aliases:
|
1 2 3 4 5 6 7 8 9 10 |
A0 = D15 A1 = D16 A2 = D17 A3 = D18 A4 = D19 A5 = D20 A6 = D21 |
| Analog pin | Digital alias | SAMD21 pin | Main function |
|---|---|---|---|
| A0 | D15 | PA02 | AIN0 / DAC0 |
| A1 | D16 | PB02 | AIN10 |
| A2 | D17 | PB03 | AIN11 |
| A3 | D18 | PA04 | AIN4 / PWM |
| A4 | D19 | PA05 | AIN5 / PWM |
| A5 | D20 | PA06 | AIN6 |
| A6 | D21 | PA07 | AIN7 |
ADC Resolution
The SAMD21 ADC supports Arduino read modes of:
|
1 2 3 4 5 6 |
8-bit 10-bit 12-bit |
For 12-bit readings:
|
1 2 3 4 |
analogReadResolution(12); |
Then:
|
1 2 3 4 |
analogRead(A1) |
returns approximately:
|
1 2 3 4 |
0-4095 |
A0 Is a True DAC Output
A0 is also:
|
1 2 3 4 |
DAC0 |
and can provide a genuine:
|
1 2 3 4 |
10-bit analogue output |
rather than PWM.
DAC Example
|
1 2 3 4 5 6 7 8 9 10 |
void setup() { analogWriteResolution(10); } void loop() { analogWrite(A0, 512); } |
PWM Pins
The MKR NB 1500 uses the same general MKR/SAMD21 timer layout, with PWM available on pins including:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
D0 D1 D2 D3 D4 D5 D6 D7 D8 D10 D12 A3 / D18 A4 / D19 |
for 13 documented PWM-capable positions.
Hardware UART
The user-facing hardware UART is:
|
1 2 3 4 5 6 7 8 9 10 |
D13 → RX → PB23 D14 → TX → PB22 |
Use:
|
1 2 3 4 |
Serial1 |
Serial vs Serial1
Because the SAMD21 has native USB:
|
1 2 3 4 5 6 7 8 |
Serial → USB CDC Serial1 → D13/D14 UART |
This is useful when the board needs to communicate with a separate UART device while still debugging over USB.
I2C Pins
The main I2C bus is:
|
1 2 3 4 5 6 7 8 9 10 |
D11 → SDA → PA08 D12 → SCL → PA09 |
Use:
|
1 2 3 4 |
#include <Wire.h> |
SPI Pins
The user-facing SPI bus is:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
D8 → COPI / MOSI → PA16 D9 → SCK → PA17 D10 → CIPO / MISO → PA19 |
Use:
|
1 2 3 4 |
#include <SPI.h> |
The Cellular Modem Uses Separate Internal Connections
The SARA-R410M-02B is not wired to the user-facing D13/D14 UART.
The board uses internal SAMD21 signals for modem control and communication, including:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
PA12 → modem TX path PA13 → modem RX path PA14 → modem RTS PA15 → modem CTS PB08 → modem reset PA28 → modem power-on |
So the external:
|
1 2 3 4 |
Serial1 on D13/D14 |
remains available for your own hardware.
SARA-R410M-02B Cellular Modem
The fitted modem is the:
|
1 2 3 4 |
u-blox SARA-R410M-02B |
designed for:
|
1 2 3 4 5 6 |
LTE Cat M1 and LTE Cat NB1 / NB-IoT |
low-power wide-area cellular networks.
Supported LTE Bands
u-blox documents the multi-regional SARA-R410M-02B for LTE Cat M1/NB1 bands:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
1 2 3 4 5 8 12 13 18 19 20 25 26 28 |
Actual operation still depends on:
- operator support;
- module firmware;
- regional certification;
- SIM provisioning;
- network coverage.
LTE-M vs NB-IoT
Both are cellular LPWAN technologies, but they target somewhat different use cases.
LTE-M
Typically offers:
- higher data rate;
- lower latency;
- better mobility support;
- more conventional TCP/IP applications.
NB-IoT
Typically emphasises:
- very low data rates;
- deep indoor coverage;
- low-power stationary sensors;
- small periodic telemetry.
Important: Do Not Rely on 2G EGPRS Fallback
Arduino’s current MKR NB 1500 overview contains a reference to:
|
1 2 3 4 |
EGPRS |
but the fitted:
|
1 2 3 4 |
SARA-R410M-02B |
is documented by u-blox as:
|
1 2 3 4 |
LTE Cat M1 / NB1 |
only.
The closely related:
|
1 2 3 4 |
SARA-R412M |
family is the variant that adds 2G EGPRS.
For a real deployment, plan MKR NB 1500 connectivity around:
|
1 2 3 4 5 6 |
LTE-M and/or NB-IoT |
rather than assuming 2G fallback.
SIM Card Required
The modem requires a compatible cellular SIM with service enabled for:
- LTE-M;
- NB-IoT;
- the operator APN and data plan you intend to use.
A normal consumer SIM may not necessarily have NB-IoT enabled.
Operator Support Matters More Than the Board
Before deploying the hardware, verify:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
operator → supports LTE-M and/or NB-IoT SIM → provisioned for that service band → supported by both modem and network coverage → available at installation site |
Antenna Is Essential
Fit a suitable cellular antenna to the board’s RF connector before normal modem use.
The antenna must support the LTE bands used by your operator.
Do not substitute a random:
|
1 2 3 4 |
2.4 GHz Wi-Fi antenna |
and expect correct cellular performance.
MKRNB Library
Arduino provides the:
|
1 2 3 4 |
MKRNB |
library for controlling the modem.
A minimal modem test starts with:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <MKRNB.h> NBModem modem; void setup() { Serial.begin(115200); while (!Serial) { } if (modem.begin()) { Serial.println("Modem OK"); } else { Serial.println("Modem failed"); } } void loop() { } |
Connecting to the Cellular Network
A normal network application creates:
|
1 2 3 4 5 |
NB nbAccess; GPRS gprs; |
and starts the modem with the SIM PIN if required.
The APN and account settings depend on your carrier.
HTTPS and TCP/IP
The MKRNB library provides high-level client classes for network applications such as:
- HTTP;
- HTTPS;
- TCP;
- UDP;
- NTP;
- cloud telemetry.
Arduino’s official examples include:
|
1 2 3 4 5 6 7 8 9 |
NBClient NBSSLClient UDP network scanning IMEI reading signal-strength reading |
Cellular Power Peaks Matter
Cellular radios draw current in short bursts when transmitting.
u-blox specifies peaks of around:
|
1 2 3 4 |
0.5 A |
for the SARA-R410M during LTE transmission under worst-case conditions.
This is very different from the current draw of a sleeping SAMD21.
Why Weak Power Supplies Cause Modem Problems
An inadequate supply can cause:
- network registration failures;
- random resets;
- failed transmissions;
- modem brown-outs;
- intermittent operation under poor signal conditions.
The worse the radio link, the more important a stable supply becomes because the network may command higher transmitter power.
Li-Po Battery Support
The board includes onboard charging support for a:
|
1 2 3 4 |
3.7 V single-cell Li-Po / Li-Ion battery |
This is especially useful because a battery can help supply short modem current peaks more effectively than a weak USB source.
Battery Size
Use a rechargeable cell that is compatible with the board’s charging system.
For cellular projects, practical battery sizing should consider:
- network registration time;
- transmit interval;
- signal strength;
- LTE-M vs NB-IoT mode;
- sleep current;
- sensor load.
ATECC508 Secure Element
The MKR NB 1500 includes an:
|
1 2 3 4 |
ATECC508 |
crypto device for:
- secure key storage;
- device identity;
- certificate operations;
- secure cloud authentication.
This is useful when the board sends data over public cellular networks.
Native USB
The SAMD21 provides native:
|
1 2 3 4 |
Full-Speed USB |
so the board can support:
- USB CDC serial;
- USB HID;
- other native USB classes supported by the Arduino core.
LED_BUILTIN
The main user LED is:
|
1 2 3 4 5 |
D6 → PA20 |
so normal Arduino Blink examples can use:
|
1 2 3 4 |
LED_BUILTIN |
External Interrupts
Interrupt-capable pins include the usual MKR/SAMD21 group such as:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
D0 D1 D4 D5 D6 D7 D8 A1 / D16 A2 / D17 |
Use:
|
1 2 3 4 |
digitalPinToInterrupt() |
for portable Arduino code.
Common Mistake 1: Applying 5 V to GPIO
The board is a:
|
1 2 3 4 |
3.3 V logic device |
Use level shifting for incompatible peripherals.
Common Mistake 2: Assuming Any SIM Will Work
The SIM must be provisioned for:
|
1 2 3 4 5 6 |
LTE-M or NB-IoT |
on the network you intend to use.
Common Mistake 3: Assuming 2G Fallback
The fitted R410M-02B is an LTE Cat M1/NB1 modem.
Do not design around EGPRS fallback unless your exact hardware is a different modem variant.
Common Mistake 4: Ignoring Modem Current Peaks
A board that appears stable while idle can reset when the modem transmits.
Design the supply for:
|
1 2 3 4 |
short high-current bursts |
not only the average current.
Common Mistake 5: Forgetting the Antenna
Do not repeatedly operate the cellular transmitter without the correct antenna attached.
Common Mistake 6: Confusing Serial1 with the Modem UART
Your external:
|
1 2 3 4 5 |
Serial1 → D13/D14 |
is separate from the modem’s internal communication link.
Quick Digital Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
D0 PA22 PWM D1 PA23 PWM D2 PA10 PWM D3 PA11 PWM D4 PB10 PWM D5 PB11 PWM D6 PA20 PWM / LED D7 PA21 PWM D8 PA16 PWM / COPI D9 PA17 SCK D10 PA19 PWM / CIPO D11 PA08 SDA D12 PA09 PWM / SCL D13 PB23 RX D14 PB22 TX |
Quick Analog Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
A0 / D15 PA02 ADC DAC0 A1 / D16 PB02 ADC A2 / D17 PB03 ADC A3 / D18 PA04 ADC PWM A4 / D19 PA05 ADC PWM A5 / D20 PA06 ADC A6 / D21 PA07 ADC |
Quick Communications Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
USB serial: Serial Hardware UART: D13 RX D14 TX Serial1 I2C: D11 SDA D12 SCL SPI: D8 COPI D9 SCK D10 CIPO Cellular: SARA-R410M-02B LTE Cat M1 NB-IoT / Cat NB1 MKRNB library |
Final Thoughts
The MKR NB 1500 is essentially a SAMD21 Arduino combined with a purpose-built low-power cellular modem.
Its key hardware is:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
48 MHz SAMD21 256 KB Flash 32 KB SRAM native USB 7 ADC inputs true DAC SARA-R410M-02B LTE-M NB-IoT ATECC508 Li-Po charging |
The most important design rules are:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
GPIO → 3.3 V only UART → D13/D14 I2C → D11/D12 SPI → D8/D9/D10 DAC → A0 GPIO current → 7 mA maximum cellular → verify operator + SIM + coverage power → allow for modem transmit peaks |
For remote IoT work, the hardest part is usually not the Arduino code. It is ensuring that the selected operator actually provides LTE-M or NB-IoT coverage at the deployment location and that the power system remains stable during modem transmission.
For the LoRa alternative in the same MKR form factor, see our MKR WAN 1310 pinout guide. For Wi-Fi/Bluetooth connectivity, see the MKR WiFi 1010 pinout guide. For the storage/audio-focused version, see our MKR Zero pinout guide.