Arduino MKR WAN 1300: LoRa Connectivity for IoT Projects
A compact and powerful board designed for low-power, long-range wireless communication, ideal for IoT applications.
The Arduino MKR WAN 1300 is a microcontroller board developed by Arduino, specifically designed for Internet of Things (IoT) applications that require long-range, low-power wireless communication. It integrates a powerful microcontroller with a LoRa radio module, making it an excellent choice for projects that need to send small amounts of data over significant distances without relying on traditional Wi-Fi or cellular networks. This board is part of the Arduino MKR family, which focuses on providing versatile and connected solutions for makers and engineers.
At the heart of the MKR WAN 1300 is the Atmel SAMD21 Cortex-M0+ microcontroller. This 32-bit ARM processor offers a good balance of performance and low power consumption, making it suitable for battery-powered devices. The board also features an integrated Murata CMWX1ZZABZ module, which provides both LoRa and Class A LoRaWAN connectivity. This dual capability allows for flexible deployment in various LoRa-based networks, from private point-to-point links to public LoRaWAN networks.
Released around 2018, the MKR WAN 1300 was a significant step for Arduino in addressing the growing demand for IoT solutions. It bridges the gap between simple microcontroller boards and more complex, power-hungry connectivity modules. Its compact form factor, combined with its low-power capabilities and long-range radio, makes it particularly well-suited for environmental monitoring, asset tracking, smart agriculture, and other remote sensing applications where frequent data transmission over long distances is essential and power efficiency is paramount.
This board is ideal for makers, students, and embedded engineers who want to experiment with LoRa and LoRaWAN technologies without the complexity of managing separate radio modules and microcontrollers. Its Arduino compatibility means it can be programmed using the familiar Arduino IDE and a vast ecosystem of libraries, lowering the barrier to entry for developing sophisticated IoT projects. The focus on low power also makes it a prime candidate for projects intended to run on batteries for extended periods.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Atmel SAMD21 Cortex-M0+ |
| Architecture | 32-bit ARM Cortex-M0+ |
| Clock speed | 48 MHz |
| Flash / Storage | 256 KB |
| RAM / SRAM | 32 KB |
| Operating voltage | 3.3V |
| Digital I/O pins | 22 |
| Analog / ADC | 6 (10-bit) |
| PWM | 12 |
| Connectivity | LoRa (433/868/915 MHz), LoRaWAN Class A |
| USB | Micro USB (for programming and power) |
| Power input | 5V via Micro USB or VIN pin, Li-Po battery connector |
| Dimensions | 67.64mm x 25mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | Power output (regulated 3.3V) |
| GND | Ground |
| VIN | Power input (7-12V recommended) |
| D0 / RX | Serial communication (UART RX) |
| D1 / TX | Serial communication (UART TX) |
| 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), Digital I/O |
| A1 | Analog Input (ADC), Digital I/O |
| A2 | Analog Input (ADC), Digital I/O |
| A3 | Analog Input (ADC), Digital I/O |
| A4 / SDA | Analog Input (ADC), Digital I/O, I2C Data |
| A5 / SCL | Analog Input (ADC), Digital I/O, I2C Clock |
| RESET | Reset pin |
| U.FL Connector | For external LoRa antenna |
Wiring & circuit basics
Powering the Arduino MKR WAN 1300 can be done via its Micro USB port (typically 5V) or the VIN pin. The VIN pin accepts a wider voltage range, generally recommended between 7V and 12V, as the board contains an onboard voltage regulator to step this down to the 3.3V required by the SAMD21 microcontroller and its peripherals. It's crucial to note that all I/O pins operate at 3.3V logic levels. Connecting 5V devices directly to these pins can cause damage. If you need to interface with 5V components, use a logic level converter.
For a simple LED project, connect the anode (longer leg) of an LED to a PWM-capable digital pin, such as D3. Connect the cathode (shorter leg) of the LED to one end of a current-limiting resistor (e.g., 220-330 ohms). Connect the other end of the resistor to a GND pin on the Arduino. This setup ensures the LED receives the correct voltage and current, preventing damage to both the LED and the microcontroller. The resistor value can be adjusted to control the brightness.
When connecting I2C devices, such as sensors or displays, use the dedicated SDA and SCL pins, which are typically multiplexed with analog pins A4 and A5 respectively. Connect the VCC pin of the I2C device to the 3V3 pin on the Arduino, and the GND pin of the device to a GND pin on the Arduino. Then, connect the SDA pin of the device to A4 (SDA) and the SCL pin of the device to A5 (SCL). Ensure your I2C device is also a 3.3V compatible device, or use a logic level shifter.
Programming & getting started
The Arduino MKR WAN 1300 is primarily programmed using the Arduino IDE. After installing the IDE, you'll need to add the Arduino SAMD Boards package via the Board Manager and then select the 'Arduino MKR WAN 1300' from the board list. For LoRaWAN connectivity, you will typically use the Arduino-LMIC library, which handles the complex LoRaWAN protocol stack. Uploading your first sketch involves writing code to control the microcontroller, potentially read sensors, and send data via LoRaWAN, then clicking the Upload button in the IDE. Ensure the correct COM port is selected.
For more advanced users or specific applications, the board can also be programmed using PlatformIO, which offers a more robust development environment and integrated library management. While not officially supported for MicroPython or CircuitPython due to the SAMD21's architecture and memory constraints, the Arduino ecosystem provides extensive libraries and examples for leveraging the board's capabilities, including its LoRa radio and various communication protocols.