Arduino MKR NB 1500: Connecting to the World with Narrowband IoT
A compact Arduino board designed for low-power, wide-area IoT applications using Narrowband IoT (NB-IoT) cellular technology.
The Arduino MKR NB 1500 is a specialized microcontroller board built for the burgeoning Internet of Things (IoT) market, focusing on applications that require long-range, low-power communication. It's part of the Arduino MKR family, a series of boards designed for IoT projects, emphasizing connectivity and compact form factors. This board stands out by integrating a cellular modem for NB-IoT, a standard designed to offer wide-area coverage, low power consumption, and the ability to connect a massive number of devices, making it ideal for remote sensing, asset tracking, and smart utility meters.
At its core, the Arduino MKR NB 1500 is powered by the u-blox SARA-R410M-02B module, which handles the NB-IoT and LTE Cat M1 communication. The microcontroller responsible for running user code, managing peripherals, and interfacing with the modem is the Microchip ATmega4809. This 8-bit AVR microcontroller offers a good balance of processing power, low power consumption, and a familiar programming environment for Arduino users. The ATmega4809 provides sufficient GPIO, ADC, and communication peripherals to interact with sensors and actuators while offloading the complex cellular communication to the u-blox module.
The MKR NB 1500 occupies a niche within the Arduino ecosystem, bridging the gap between simple Wi-Fi or Bluetooth boards like the MKR WiFi 1010 and more complex, power-hungry cellular solutions. Its strength lies in its ability to operate for extended periods on battery power, a critical requirement for many remote IoT deployments where mains power is unavailable or impractical. This makes it an excellent choice for makers and engineers looking to deploy solutions that need to transmit small amounts of data infrequently over long distances, such as environmental monitoring stations, agricultural sensors, or tracking devices.
Historically, cellular IoT has often been associated with high power consumption and complex setup. The MKR NB 1500, by leveraging the NB-IoT standard and the efficient ATmega4809, aims to democratize cellular connectivity for the maker community. It simplifies the process of integrating cellular communication into projects, allowing developers to focus on the application logic rather than the intricacies of radio modules and network protocols. The board is designed for users who need reliable, long-range connectivity without the need for Wi-Fi or cellular hotspots, making it suitable for projects deployed in rural areas or environments with limited network infrastructure.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Microchip ATmega4809 (for MCU tasks) and u-blox SARA-R410M-02B (for NB-IoT/LTE Cat M1) |
| Architecture | 8-bit AVR (ATmega4809) |
| Clock speed | 16 MHz (ATmega4809) |
| Flash / Storage | 60 KB Flash (ATmega4809) |
| RAM / SRAM | 6 KB SRAM (ATmega4809) |
| Operating voltage | 3.3V |
| Digital I/O pins | 14 (including those shared with other functions) |
| Analog / ADC | 6 x 10-bit ADC channels |
| PWM | 5 x PWM pins |
| Connectivity | NB-IoT, LTE Cat M1 (via u-blox SARA-R410M-02B) |
| USB | Micro USB connector (for programming and power) |
| Power input | 3.3V via VIN pin, 5V via USB, or LiPo battery connector |
| Dimensions | 67.64mm x 25mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| GND | Ground |
| 3V3 | 3.3V Power Output |
| VIN | Input voltage (typically 3.7V - 5V for battery or external supply) |
| VBAT | Battery voltage input |
| D0 (RX) | Digital I/O, UART RX |
| D1 (TX) | Digital I/O, UART TX |
| D2 | Digital I/O |
| D3 | Digital I/O, PWM |
| D4 | Digital I/O |
| D5 | Digital I/O, PWM |
| D6 | Digital I/O |
| D7 | Digital I/O |
| D8 | Digital I/O |
| D9 | Digital I/O, PWM |
| D10 (SS) | Digital I/O, SPI Slave Select |
| D11 (MOSI) | Digital I/O, SPI MOSI |
| D12 (MISO) | Digital I/O, SPI MISO |
| D13 (SCK) | Digital I/O, SPI SCK |
| A0 | Analog Input, Digital I/O, ADC channel 0 |
| A1 | Analog Input, Digital I/O, ADC channel 1 |
| A2 | Analog Input, Digital I/O, ADC channel 2 |
| A3 | Analog Input, Digital I/O, ADC channel 3 |
| A4 (SDA) | Analog Input, Digital I/O, I2C SDA |
| A5 (SCL) | Analog Input, Digital I/O, I2C SCL |
| RESET | Reset pin |
| BATT | Battery connector (JST PH 2-pin) |
| U.FL | Antenna connector for NB-IoT/LTE |
Wiring & circuit basics
Powering the Arduino MKR NB 1500 requires careful consideration to ensure stable operation and prevent damage. The board can be powered via its Micro USB port, which typically accepts a 5V supply. Alternatively, a LiPo battery can be connected to the dedicated JST PH connector (BATT). The VIN pin can also accept an external voltage, typically between 3.7V and 5V, which is then regulated down to 3.3V for the microcontroller and peripherals. Avoid applying voltages higher than 5V directly to the VIN pin or through the USB port, as this can damage the onboard regulators and the microcontroller. The 3V3 pin provides a regulated 3.3V output, suitable for powering external sensors that operate at this voltage level.
The Arduino MKR NB 1500 operates at a logic level of 3.3V. This is crucial when interfacing with external components such as sensors, displays, or actuators. Connecting a 5V-tolerant device to a 3.3V pin is generally safe, as the 3.3V signal will be interpreted as a logical HIGH by most 5V systems. However, connecting a 3.3V output from the Arduino to a 5V input pin on a component will likely not be recognized as a HIGH signal, as the required voltage threshold is higher. For bidirectional communication, or when connecting 3.3V outputs to 5V inputs, a logic level converter is necessary to avoid data corruption or component damage. Always check the voltage requirements and logic levels of your external components before wiring.
A simple example circuit involves connecting an LED to indicate network status. Connect an LED's anode (longer leg) to digital pin D3 (which supports PWM if needed, but is used here as a simple digital output) and its cathode (shorter leg) through a current-limiting resistor (e.g., 220-330 ohms) to a GND pin. In your code, you would configure D3 as an OUTPUT and use digitalWrite(3, HIGH) to turn the LED on and digitalWrite(3, LOW) to turn it off. This basic setup demonstrates digital output control and is fundamental for creating visual feedback in your projects.
Programming & getting started
The primary toolchain for programming the Arduino MKR NB 1500 is the Arduino IDE. After installing the IDE, you will need to add the Arduino SAMD Boards package (which includes support for the ATmega4809) and the specific board support for the MKR NB 1500, which includes the necessary libraries for the u-blox modem. To upload your first sketch, connect the board to your computer via the Micro USB cable. Select the correct board (Arduino MKR NB 1500) and COM port from the IDE's Tools menu. Write a simple sketch, such as the 'Blink' example, and click the Upload button. The IDE will compile the code and flash it to the microcontroller.
For more advanced users or those interested in cellular communication, the u-blox SARA-R410M-02B module can also be controlled via AT commands sent over the serial interface (UART pins D0/D1). This allows for direct management of network registration, data transmission, and other modem functionalities without relying solely on the Arduino libraries. While the Arduino IDE is the most accessible method, platforms like PlatformIO also offer support for the MKR NB 1500, providing a more integrated development experience with features like advanced code completion and debugging.