Руководство Arduino по технологии LoRa® и LPWAN
Изучите основы технологии LoRa® и узнайте, как использовать её с оборудованием и программным обеспечением Arduino.
Интернет вещей (IoT) часто называют совокупностью объектов, подключённых к Интернету с помощью беспроводных сетей; эти подключённые объекты предназначены для сбора и обмена информацией об окружающей среде. IoT обеспечивает связь между физическим и цифровым мирами; эта связь порождает огромный объём данных, которые можно использовать для оптимизации ресурсов и повышения эффективности существующих систем.
Примечание
К 2025 году к Интернету будет подключено более 25 миллиардов IoT-устройств.
Многие из существующих IoT-устройств будут подключаться к Интернету с помощью беспроводных сетей ближнего радиуса действия: Wi-Fi®, Bluetooth®, ZigBee, Z-Wave® и других. Для подключения IoT-устройств к Интернету также используются сотовые соединения через сети 2G, 3G и 4G. Тем не менее эти беспроводные сети ближнего и среднего радиуса действия не всегда подходят для IoT-устройств, поскольку разрабатывались для приложений, в которых энергопотребление и время работы от аккумулятора не являются существенными проблемами. IoT-устройства, как правило, потребляют мало энергии и передают и принимают небольшие объёмы данных.
Сети Low-Power Wide Area (LPWAN)
Сети Low-Power Wide Area (LPWAN) — это группа технологий беспроводных сетей, хорошо подходящих для специфических потребностей IoT-устройств: устройств с малой пропускной способностью и низким энергопотреблением, как правило работающих от аккумуляторов. Эти типы сетей обеспечивают низкие скорости передачи данных на больших расстояниях при низком потреблении энергии. LPWAN-сети могут принимать пакеты данных от 10 байт до 1 КБ при скорости восходящей линии связи до 200 кбит/с; дальность связи варьируется от 2 до 1000 км в зависимости от технологии сети. Большинство LPWAN-технологий используют топологию «звезда»: каждое устройство подключается напрямую к центральной точке доступа.
Среди важных сценариев применения LPWAN-сетей можно выделить следующие:
Умные города: умные парковки, интеллектуальное уличное освещение.
Управление цепочками поставок: отслеживание активов, мониторинг состояния.
Умные электросети: учёт электроэнергии, воды и газа.
Умное сельское хозяйство: мониторинг состояния земель, отслеживание животных, геозонирование.
Совет
Если вы хотите узнать больше о LPWAN-сетях, ознакомьтесь со статьёй LPWAN (Low-Power Wide-Area Networks) 101.
Несколько LPWAN-технологий используют лицензируемые или нелицензируемые частоты и проприетарные или открытые спецификации. LoRa® и реализация его протокола уровня управления доступом к среде (MAC) — одна из LPWAN-технологий, набирающих популярность для поддержки IoT-устройств и сервисов.
Сравнение полосы пропускания и дальности для сетей ближнего радиуса действия, сотовых и LPWA-сетей.
Технология LoRa®
Что такое технология LoRa®?
Технология LoRa® — это метод беспроводной модуляции, разработанный на основе технологии Chirp Spread Spectrum (CSS). CSS использует широкополосные линейно-частотно-модулированные чирп-импульсы для кодирования информации. Технология может работать в следующих нелицензируемых суб-гигагерцовых ISM-диапазонах (Industrial, Scientific, and Medical): 433 МГц, 868 МГц и 915 МГц. ISM-диапазоны зарезервированы на международном уровне для промышленного, научного и медицинского использования.
Примечание
Метод модуляции Long Range был изобретён в 2010 году французским стартапом Cycleo и впоследствии приобретён в 2012 году компанией Semtech.
Технология LoRa® широко применяется в LPWAN-развёртываниях для приложений, требующих дальней связи при минимальном энергопотреблении.
Архитектура сети LoRa®
Типичная сеть на основе технологии LoRa® состоит из следующих ключевых компонентов: оконечные устройства (обычно датчики), базовая станция или шлюз (gateway), сетевой сервер и система операционной поддержки (OSS) для подготовки и управления сетью.
Пример типичной архитектуры сети LoRa®.
Из приведённой выше схемы видно принципиальное различие между сетевым сервером и шлюзом. Сетевой сервер управляет маршрутизацией сообщений, тогда как шлюзы выступают ретрансляторами, передающими данные между оконечными устройствами и сервером. Сети на основе LoRa® могут быть публичными или частными в зависимости от потребностей развёртывания.
Совет
The Things Network (TTN) — это краудсорсинговый, открытый и децентрализованный сетевой сервер на основе LoRa®. Эта сеть отлично подходит для начального тестирования устройств, приложений, интеграций и знакомства с LoRa. Для подключения к TTN необходимо находиться в зоне покрытия шлюза. Проверьте карту мира, чтобы узнать, установлен ли шлюз в вашем регионе; если нет — рассмотрите возможность его установки!
Сети на основе LoRa® обычно развёртываются в топологии «звезда звёзд»: шлюзы управляют передачей данных между оконечными устройствами и сетевым сервером. Шлюзы подключены к центральному сетевому серверу через Интернет, тогда как оконечные устройства используют LoRa для отправки и получения данных через шлюзы. Оконечные устройства не привязаны исключительно к одному шлюзу — они транслируют информацию всем шлюзам в зоне досягаемости. Связь в сетях на основе LoRa нативно двунаправленная, хотя восходящая связь от оконечных устройств к центральному серверу ожидается преобладающей в сети.
Примечание
Топологии сетей «звезда» обеспечивают наилучшее соотношение между дальностью связи, количеством шлюзов или базовых станций в сети, энергопотреблением оконечных устройств и временем работы от аккумулятора.
Топологии сетей «звезда» имеют ряд преимуществ перед другими топологиями:
Шлюзы можно добавлять в сеть в любом месте и в любое время без предварительного планирования.
Доставка сообщений более надёжна, поскольку несколько шлюзов принимают одни и те же пакеты данных при каждой восходящей передаче.
Скорости передачи данных
Связь между оконечными устройствами и шлюзами в сетях на основе LoRa® распределена по различным частотным каналам и скоростям передачи данных (связь с разными скоростями не создаёт помех друг другу).
Примечание
Технология LoRa® поддерживает скорости передачи данных от 300 бит/с до 5 кбит/с при ширине полосы 125 кГц.
Для максимизации времени работы от аккумулятора каждого оконечного устройства и общей доступной ёмкости сети технология LoRa® использует механизм Adaptive Data Rate (ADR) для оптимизации скоростей передачи данных, времени нахождения в эфире и энергопотребления. ADR управляет следующими параметрами передачи оконечных устройств:
Коэффициент расширения (Spreading Factor): скорость передачи данных. Меньший коэффициент расширения означает более высокую скорость передачи данных.
Полоса пропускания (Bandwidth): объём данных, который может быть передан из одной точки в другую в пределах сети.
Мощность передачи (Transmission Power): энергия, которую передатчик оконечного устройства производит на своём выходе.
В таблице ниже приводится сравнение коэффициента расширения, скорости передачи данных и времени нахождения в эфире при ширине полосы 125 кГц (дальность является ориентировочным значением и зависит от условий распространения сигнала):
Коэффициент расширения |
Скорость передачи данных |
Дальность |
Время в эфире |
|---|---|---|---|
SF7 |
5470 бит/с |
2 км |
56 мс |
SF8 |
3125 бит/с |
4 км |
100 мс |
SF9 |
1760 бит/с |
6 км |
200 мс |
SF10 |
980 бит/с |
8 км |
370 мс |
SF11 |
440 бит/с |
11 км |
40 мс |
SF12 |
290 бит/с |
14 км |
1400 мс |
Оконечные устройства могут передавать данные по любому доступному каналу в любое время, используя любую доступную скорость передачи данных, при соблюдении следующего правила:
Оконечное устройство меняет канал в псевдослучайном порядке при каждой передаче. Возникающее при этом частотное разнообразие делает систему более устойчивой к помехам.
Также необходимо соблюдать местные регламенты, например:
В диапазоне EU868 оконечное устройство должно соблюдать максимальный рабочий цикл передачи относительно используемого поддиапазона и местных регламентов (1% для оконечных устройств).
В диапазоне US915 оконечное устройство должно соблюдать максимальную длительность передачи (или время занятости) относительно используемого поддиапазона и местных регламентов (400 мс).
Сетевые уровни на основе LoRa®.
Региональные параметры
Спецификация региональных параметров технологии LoRa® является дополнением к спецификации сетевого уровня на основе LoRa. В то время как спецификация сетевого уровня определяет воздушный интерфейс между совместимым оконечным устройством (датчиком, исполнительным механизмом, трекером и т. д.) и совместимым ядром сети, спецификация региональных параметров определяет адаптацию спецификации сетевого уровня для соответствия различным нормативным требованиям, действующим по всему миру в отношении использования различных частотных диапазонов нелицензируемого спектра.
Кроме того, спецификация региональных параметров технологии LoRa® документирует конфигурации физического уровня, необходимые для совместимой работы радиомодулей канального уровня LoRa с использованием различных методов радиочастотной модуляции.
Примечание
Идея, лежащая в основе спецификации региональных параметров технологии LoRa®, заключается в создании минимального количества региональных частотных планов, охватывающих максимально возможное число нормативных регионов. Это снижает сложность реализации и стоимость сертификации (сертификация оконечных устройств классифицируется по версиям сетевого уровня, региональных параметров и частотного плана).
Спецификации региональных параметров технологии LoRa® охватывают не всё. Они описывают регион, задавая лишь общий знаменатель. Например, региональные параметры LoRa для Азии указывают лишь общее подмножество каналов, но между нормативными требованиями азиатских стран существуют вариации. Кроме того, каждый сетевой сервер, например TTN, вправе самостоятельно выбирать дополнительные параметры, такие как дополнительные каналы передачи.
Для получения дополнительной информации можно ознакомиться с документом RP002-1.0.2 по региональным параметрам технологии LoRa® здесь, а также с подробным руководством по региональным параметрам LoRa и оборудованию Arduino здесь.
Классы устройств
Спецификация технологии LoRa® определяет три различных профиля связи между устройствами и приложениями: Класс A, Класс B и Класс C. Каждый класс обслуживает различные потребности приложений и имеет оптимизированные требования для конкретных целей. Основное различие между тремя классами заключается в задержке и энергопотреблении; оконечные устройства всегда могут отправлять восходящие сообщения при необходимости, но класс устройства определяет, когда оно будет принимать нисходящие сообщения.
Примечание
Все сетевые устройства, использующие технологию LoRa®, должны реализовывать Класс A; Класс B и Класс C являются расширениями профиля Класса A.
Класс A: «Aloha»
Устройства Класса A реализуют профиль двунаправленной связи, при котором два коротких окна приёма нисходящих сообщений следуют за передачей восходящего сообщения оконечным устройством — эти окна обычно называются RX1 и RX2. Если сервер не отвечает ни в окне RX1, ни в окне RX2, следующая возможность появится только после следующей восходящей передачи. Устройства Класса A, как правило, питаются от аккумулятора и большую часть времени находятся в режиме сна; поэтому они имеют самое низкое энергопотребление, длинные интервалы между восходящими передачами и высокую задержку нисходящей линии связи.
Конфигурационный профиль Класса A по умолчанию.
Класс B: «Маяковый» класс
Устройства Класса B расширяют устройства Класса A, добавляя запланированные окна приёма нисходящих сообщений и тем самым эмулируя постоянно принимающее устройство путём открытия окон приёма через фиксированные временные интервалы. Этот класс следует реализовывать в случаях, когда требуется низкая задержка нисходящей связи при минимально возможном энергопотреблении.
Конфигурационный профиль Класса B по умолчанию.
Класс C: Непрерывный приём
Коммуникационный профиль Класса C используется в приложениях с достаточным энергоснабжением, где нет необходимости минимизировать время работы окон приёма; это характерно для большинства исполнительных механизмов (например, умных розеток, уличных фонарей, электрических счётчиков и т. д.). Устройства Класса C всегда прослушивают нисходящие сообщения, если только не передают восходящее сообщение. Такое поведение обеспечивает минимальную задержку между сервером и оконечным устройством.
Конфигурационный профиль Класса C по умолчанию.
Аутентификация и безопасность
Аутентификация и безопасность также важны в сетях на основе LoRa®. Любая сеть на основе LoRa имеет базовую систему аутентификации и безопасности, основанную на схеме шифрования AES-128. По сравнению с другими LPWAN, которые опираются на один ключ для аутентификации и шифрования, система LoRa разделяет их. Аутентификация и контроль целостности используют ключ сессии сети (NwkSKey), а шифрование пользовательских данных — ключ сессии приложения (AppSKey).
Примечание
NwkSKey и AppSKey — это корневые ключи AES-128, специфичные для оконечного устройства; их назначают производители оконечных устройств или владельцы приложений.
Технология LoRa® поддерживает два метода аутентификации и активации: Over-The-Air Activation (OTAA) и Activation by Personalization (ABP).
Over-The-Air Activation (OTAA): При этом методе оконечные устройства не инициализируются для какой-либо конкретной сети; они отправляют запрос JOIN в конкретную сеть на основе LoRa® и затем получают адрес устройства и токен авторизации, из которого выводятся ключи сессии; NwkSKey и AppSKey выводятся в ходе этой процедуры из корневого ключа AppKey, предварительно загруженного в оконечные устройства производителем.
Процесс активации Over-The-Air (OTAA).
Activation by Personalization (ABP): При этом методе оконечные устройства персонализированы для работы с определённой сетью на основе LoRa®. Оконечные устройства предварительно снабжаются NwkSKey, AppSKey и 32-битным сетевым адресом устройства.
Процесс Activation by Personalization (ABP).
Совет
Рекомендуемым методом аутентификации и активации является OTAA, поскольку он обеспечивает высокий уровень безопасности; метод ABP следует использовать только в особых ситуациях.
Arduino® и технология LoRa®
Arduino® обеспечивает LoRa®-подключение для ваших проектов с помощью нескольких плат, дополнительных модулей и библиотек.
Платы Arduino® с поддержкой LoRa®
Платы MKR WAN 1300 и 1310 предоставляют практичное и экономичное решение для приложений, требующих LoRa®-подключения и низкого энергопотребления. Платы MKR WAN 1300 и 1310 основаны на микроконтроллере SAMD21 от Microchip®; в них также установлен модуль CMWX1ZZABZ от Murata® для LoRa-связи, устройство криптоаутентификации ATECC508 для обеспечения безопасности и 2 МБ SPI Flash-памяти для хранения данных на борту.
Плата Arduino® MKR WAN 1310.
PRO-оборудование также поддерживает LoRa®-подключение. Плата Arduino® Portenta H7 может получить LoRa-подключение с помощью Portenta Vision Shield с технологией LoRa®; этот дополнительный модуль также оснащён модулем CMWX1ZZABZ от Murata® для LoRa-связи — тем же модулем, что и в платах MKR 1300 и 1310.
Portenta Vision Shield с технологией LoRa®.
Arduino® Edge Control — решение для дистанционного мониторинга и управления, оптимизированное для использования в условиях открытого пространства, — может расширить свои возможности беспроводного подключения путём добавления платы MKR WAN 1300 или 1310. Edge Control можно разместить в любом месте; он хорошо подходит для задач умного сельского хозяйства и других приложений, требующих интеллектуального управления в удалённых местах.
Arduino® Edge Control.
Библиотеки Arduino® для LoRa®-подключения
С модулем LoRa® CMWX1ZZABZ от Murata® можно использовать несколько библиотек Arduino; рекомендуются две: библиотека MKRWAN, разработанная Arduino, и библиотека Arduino LoRa, разработанная Sandeep Mistry. Библиотеки MKRWAN и LoRa предоставляют API для связи с сетями, поддерживающими технологию LoRa.
Обе библиотеки можно использовать в Arduino IDE — как в онлайн, так и в офлайн версии. Если вы используете онлайн-IDE, никаких дополнительных действий не требуется — обе библиотеки уже установлены и готовы к использованию. Если вы используете офлайн-IDE, библиотеки необходимо установить вручную. Это легко сделать, перейдя в Инструменты > Управление библиотеками… и выполнив поиск библиотеки MKRWAN от Arduino и LoRa от Sandeep Mistry; не забудьте установить последнюю версию библиотек.
Примечание
В настоящее время существуют две версии библиотеки MKRWAN; библиотека MKRWAN_v2 всё ещё находится в стадии бета-тестирования.
Пример: отправка и получение данных через сетевой сервер
Использование оборудования и программного обеспечения Arduino для связи с сетями на основе LoRa® несложно — рассмотрим пример. В этом примере используются плата MKR WAN 1310 и библиотека MKRWAN для отправки данных в сети на основе LoRa, в данном случае — в TTN. Схема для этого примера показана на изображении ниже:
Схема подключения для примера.
Прежде чем отправлять и получать сообщения через TTN, необходимо сначала зарегистрировать плату в сети. Для этого нужно знать Device EUI вашей платы. Вы можете получить Device EUI своей платы, запустив пример FirstConfiguration из библиотеки MKRWAN. Имея Device EUI, вы можете зарегистрировать свою плату в TTN, создав учётную запись в TTN, добавив приложение и зарегистрировав плату. Этот учебник от TTN объясняет весь процесс.
После регистрации устройства в TTN можно начать отправлять и получать данные с помощью следующего кода:
/*
Send and receive data from a LoRa®-based network
This sketch demonstrates how to send and receive data with the MKR WAN 1300/1310 board.
This example code is in the public domain.
*/
#include <MKRWAN.h>
#include "arduino_secrets.h"
LoRaModem modem;
void setup() {
// Serial port initialization
Serial.begin(115200);
while (!Serial);
// LoRa module initialization
// Initialize the modem with your regional band (eg. US915, AS923,...)
if (!modem.begin(EU868)) {
Serial.println("- Failed to start module");
while (1) {}
};
// With the module initialized, we can get its version and device EUI
// Your network server provider requires device EUI information to connect to their network
Serial.print("- Your module version is: ");
Serial.println(modem.version());
Serial.print("- Your device EUI is: ");
Serial.println(modem.deviceEUI());
// Join procedure to the network server
// OTAA method need appEUI and appKey, this information is provided by the network server
int connected = modem.joinOTAA(appEui, appKey);
if (!connected) {
Serial.println("- Something went wrong; are you indoor? Move near a window and retry...");
while (1) {}
}
// Set poll interval to 60 secs.
modem.minPollInterval(60);
// NOTE: independent of this setting, the modem will not allow sending more than one message every 2 minutes
// This is enforced by firmware and can not be changed.
}
void loop() {
Serial.println();
Serial.println("- Enter a message to send to network");
Serial.println("(make sure that end-of-line 'NL' is enabled)");
// Get message from Serial Monitor
while (!Serial.available());
String msg = Serial.readStringUntil('\n');
// Show the sent message to the network in HEX format
Serial.println();
Serial.print("- Sending: " + msg + " - ");
for (unsigned int i = 0; i < msg.length(); i++) {
Serial.print(msg[i] >> 4, HEX);
Serial.print(msg[i] & 0xF, HEX);
Serial.print(" ");
}
Serial.println();
// Check if the message was sent correctly or if there was an error
int err;
modem.beginPacket();
modem.print(msg);
err = modem.endPacket(true);
if (err > 0) {
Serial.println("- Message sent correctly!");
} else {
Serial.println("- Error sending message :(");
Serial.println("(- You may send a limited amount of messages per minute, depending on the signal strength");
Serial.println("- It may vary from one message every couple of seconds to one message every minute)");
}
// Wait and check if there's a message sent from the network
delay(1000);
if (!modem.available()) {
Serial.println("- No downlink message received at this time");
return;
}
// If there's a message available, store it
char rcv[64];
int i = 0;
while (modem.available()) {
rcv[i++] = (char)modem.read();
}
// Decode and show the received message from the network
Serial.print("- Received: ");
for (unsigned int j = 0; j < i; j++) {
Serial.print(rcv[j] >> 4, HEX);
Serial.print(rcv[j] & 0xF, HEX);
Serial.print(" ");
}
Serial.println();
}
Ознакомьтесь с подробными руководствами по отправке данных с платы MKR WAN в TTN и между двумя платами MKR WAN — они доступны здесь.
Дополнительные материалы и ресурсы
Технология LoRa® — обширная, но увлекательная тема для изучения. Если вы хотите узнать больше об этих технологиях, ознакомьтесь со следующими ссылками:
Портал разработчика LoRa от Semtech. Здесь вы найдёте технические документы и руководства пользователя, а также спецификации и паспорта данных от Semtech.
Документация The Things Network. Здесь вы можете узнать всё о технологии LoRa® и The Things Network!
Онлайн-курс The Things Academy на Udemy. Бесплатный онлайн-курс, где вы изучите всё о технологии LoRa® и подготовитесь к созданию собственных приложений для Low Power Wide Area Network.
Признание товарных знаков
LoRa® является зарегистрированным товарным знаком компании Semtech Corporation.