Arduino MKR WAN 1310: LoRa Connectivity for IoT Projects
A compact and versatile board designed for low-power, long-range wireless communication, ideal for IoT applications.
The Arduino MKR WAN 1310 is a powerful yet compact microcontroller board designed for the Internet of Things (IoT). It integrates a microcontroller with a LoRa radio module, enabling long-range, low-power wireless communication. This makes it an excellent choice for projects that need to send small amounts of data over significant distances, such as environmental monitoring, asset tracking, and smart agriculture, without relying on traditional Wi-Fi or cellular networks.
At its core, the MKR WAN 1310 features the SAMD21 Cortex-M0+ microcontroller, a 32-bit ARM processor known for its low power consumption and efficient performance. This is paired with the Murata CMWX1ZZABZ module, which combines a Semtech SX1276 LoRa transceiver with a SiP (System-in-Package) that includes a Wi-Fi and Bluetooth 4.2 radio. This combination allows for flexible connectivity options, though the primary focus of this board is LoRaWAN.
Positioned within the Arduino MKR family, the WAN 1310 stands out for its dedicated LoRa capabilities, differentiating it from boards like the MKR WiFi 1010 or MKR GSM 1400. It was released around 2019 as an evolution of the earlier MKR WAN 1300, offering improved battery management and a more robust design. This board is suited for makers, students, and embedded engineers who want to experiment with or deploy LPWAN (Low-Power Wide-Area Network) solutions.
The board is designed with power efficiency in mind, featuring a LiPo battery connector and sophisticated power management circuits, including a battery charging system. This allows for battery-powered deployments where mains power is unavailable. Its small form factor and robust connectivity make it a practical choice for real-world IoT deployments where reliability and range are paramount.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Microchip SAMD21 (ARM Cortex-M0+) + Murata CMWX1ZZABZ (SiP with Semtech SX1276 LoRa transceiver, Wi-Fi, Bluetooth) |
| Architecture | 32-bit ARM Cortex-M0+ |
| Clock speed | 48 MHz |
| Flash / Storage | 256 KB Flash |
| RAM / SRAM | 32 KB SRAM |
| Operating voltage | 3.3V |
| Digital I/O pins | 22 |
| Analog / ADC | 6 (12-bit) |
| PWM | All digital pins capable of PWM |
| Connectivity | LoRaWAN (868 MHz / 915 MHz / 433 MHz depending on region), Wi-Fi 802.11 b/g/n, Bluetooth 4.2 |
| USB | Micro USB connector for programming and power |
| Power input | 5V via Micro USB, 3.7V LiPo battery via JST connector |
| Dimensions | 67.64mm x 25mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | 3.3V power output |
| GND | Ground |
| VBAT | Battery voltage input/output |
| RST | Reset pin |
| D0 (RX1) | Serial communication RX (UART1) |
| D1 (TX1) | Serial communication TX (UART1) |
| D2 | Digital I/O |
| D3 | Digital I/O, PWM |
| D4 | Digital I/O |
| D5 | Digital I/O, PWM |
| D6 | Digital I/O, PWM |
| 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 Master Out Slave In |
| D12 (MISO) | Digital I/O, SPI Master In Slave Out |
| D13 (SCK) | Digital I/O, SPI Serial Clock |
| A0 | Analog input, ADC (also Digital I/O) |
| A1 | Analog input, ADC (also Digital I/O) |
| A2 | Analog input, ADC (also Digital I/O) |
| A3 | Analog input, ADC (also Digital I/O) |
| A4 (SDA) | Analog input, ADC, I2C Data (also Digital I/O) |
| A5 (SCL) | Analog input, ADC, I2C Clock (also Digital I/O) |
| USB | Micro USB connector (power and data) |
| LiPo Connector | 3.7V LiPo battery connector |
Wiring & circuit basics
The Arduino MKR WAN 1310 operates at a logic level of 3.3V. Connecting 5V devices directly to its GPIO pins can cause permanent damage. When interfacing with 5V components, a logic level converter is necessary. Powering the board can be done via the Micro USB port, which supplies 5V, or directly through the LiPo battery connector (typically 3.7V). The board includes a battery charging circuit, allowing you to charge a connected LiPo battery when powered via USB.
For safe operation, ensure that any external power supply connected to the 5V pin (if available, though not a primary input on this board) or Vin does not exceed the recommended voltage range. The board has onboard voltage regulators to manage power for the microcontroller and peripherals. When powering the board via USB, it can typically draw up to 500mA from the port, but for demanding applications or battery charging, a dedicated power supply or a sufficiently rated battery is recommended.
A simple example circuit is connecting an LED. Connect the anode (longer leg) of an LED to a digital pin (e.g., D3) through a current-limiting resistor (typically 220-330 ohms for a standard LED). Connect the cathode (shorter leg) of the LED to a GND pin. This setup allows you to blink the LED using digital output commands. For an I2C sensor like a BME280, connect its VCC to the 3V3 pin, GND to a GND pin, SDA to the A4 (SDA) pin, and SCL to the A5 (SCL) pin. Remember to enable the I2C pull-up resistors if the sensor doesn't have them onboard.
Programming & getting started
The primary toolchain for the Arduino MKR WAN 1310 is the Arduino IDE. After installing the IDE, you'll need to add the board support package for the 'Arduino SAMD Boards' and then select 'Arduino MKR WAN 1310' from the Boards menu. For LoRaWAN functionality, you will typically use the Arduino-LMIC library or similar libraries provided by Arduino. To upload your first program (e.g., a simple sketch to blink an LED), connect the board to your computer via the Micro USB port, select the correct COM port, and click the Upload button.
For more advanced use cases or alternative environments, PlatformIO with VS Code offers excellent support, integrating various libraries and build systems. While the SAMD21 supports MicroPython and CircuitPython, official board support for the MKR WAN 1310's specific LoRa and radio peripherals might require custom builds or specific community efforts. The built-in Wi-Fi and Bluetooth can also be programmed using the Arduino IDE and relevant libraries.