Unwired Range

Радиочастотные сети LoRa

Unwired Range — это семейство устройств с поддержкой технологии LoRa, радиочастотной модуляции, позволяющей устанавливать двустороннюю передачу данных на расстоянии до 30 км, не выходя за ограничения так называемых безлицензионных (не требующих получения разрешений на эксплуатацию радиопередающих устройств) радиодиапазонов. На данный момент в России основными диапазонами для сетей LoRa являются:

Хотя теоретически LoRa может использовать весь спектр 137 — 1020 МГц, на практике прочие диапазоны не представляют интереса:

Что касается диапазона 864,0 — 865,0 МГц, то в российском законодательстве на данный момент не расшифровывается понятие «прослушивание перед передачей» (LBT, listen before talk). Тем не менее, в соответствующем постановлении ГКРЧ оно упоминается, так что при необходимости использовать этот режим разумно будет ориентироваться на положения, установленные европейскими стандартами (EN 300 220-1), так как в целом в рамках гармонизации использования РЧ-спектра неясности в российских НПА, как правило, разрешаются в пользу большей совместимости с НПА европейскими:

Важным является тот факт, что указанные ограничения распространяются как на конечные устройства (радиомодемы), так и на базовые станции (граничные роутеры). Последние также должны соответствовать требованиям по использованию РЧ-спектра, что может стать особенно важным в радиосетях с двусторонним радиообменом при большом числе конечных устройств, приходящихся на одну базовую станцию.

В прошивках Unwired Range при выборе региона «Russia» используются частотные каналы 868,85 МГц и 869,05 МГц.

Топология сети

Сама по себе технология LoRa определяет лишь физический уровень канала связи. Традиционно внедряются два типа сетей на базе технологии LoRa:

Сотовые сети, часто называемые просто «LoRaWAN», лучше всего подходят для покрытия крупных объектов, масштаба городских районов, с предоставлением услуг связи сторонним абонентам, обеспечением роуминга устройств между базовыми станциями и т.п.

Для объектов ограниченной площади (масштаба одного квартала, торгового или делового здания, заводского цеха, сельскохозяйственного поля) интересны более простые в установке, настройке и поддержке сети топологии «звезда», не использующие протокол LoRaWAN.

Модули, устройства и базовые станции Unwired Range на данный момент поддерживают топологию «звезда» с MAC-уровнем, разработанным в компании Unwired Devices. Базовая станция UNWD-BASE является конечным элементом такой сети и не требует для функционирования каких-либо внешних сервисов. Радиочастотный протокол поддерживает двустороннюю связь, шифрование AES-256, имитозащиту и индивидуальную адресацию всех устройств, находящихся в сети.

Радиомодули Unwired Range

Базовым модулем связи является модем Unwired Range, поставляемый либо в виде отдельного электронного модуля, либо в составе готового устройства.

Модемы Unwired Range выпускаются в двух форм-факторах, отличающихся установочными размерами и типом разъёма.

LoRa-модемы Unwired Range

Первый вариант предназначен для горизонтальной установки на печатную плату основного устройства и обладает разъёмом U.fl для подключения антенны, второй — преимущественно для вертикальной установки, в том числе в корпуса для крепления на DIN-рейку, и обладает антенным разъёмом SMA-F или несъёмной штыревой антенной.

И те, и другие модули построены на комбинации из микроконтроллера STM32L151CC и приёмопередатчика SX1276, программно совместимы друг с другом и имеют одинаковый набор внешних сигналов.

Наименование Назначение Примечание
BOOT Вход в режим UART-загрузчика
RESET Сброс, активный «0»
JTCK Интерфейс JTAG, интерфейс SWD (PA14)
JTMS Интерфейс JTAG, интерфейс SWD (PA13)
DIO1 Вход/выход общего назначения (PB1)
DIO2 UART RX отладочной консоли (PA10)
DIO3 UART TX отладочной консоли (PA9)
DIO4 Вход/выход общего назначения (PA4) АЦП канал 4
DIO5 Вход/выход общего назначения (PA5) АЦП канал 5, ШИМ 0-3
DIO6 Вход/выход общего назначения (PB8) Дополнительный порт I²C, SCL, ШИМ 2-0
DIO7 Вход/выход общего назначения (PB9) Дополнительный порт I²C, SDA, ШИМ 2-1
DIO16 Вход/выход общего назначения (PA15) Интерфейс JTAG (JTDI)
DIO17 Вход/выход общего назначения (PB3) Интерфейс JTAG (JTDO)
DIO24 Вход/выход общего назначения (PA1) АЦП канал 1, ШИМ 0-0
DIO25 Вход/выход общего назначения (PA2) Порт UART TX, АЦП канал 2, ШИМ 0-1
DIO26 Вход/выход общего назначения (PA3) Порт UART RX, АЦП канал 3, ШИМ 0-2
DIO27 Вход/выход общего назначения (PA6) АЦП канал 6, ШИМ 1-0
DIO28 Вход/выход общего назначения (PA7) АЦП канал 7, ШИМ 1-1
DIO29 Вход/выход общего назначения (PB10) Основной порт I²C, SCL
DIO30 Вход/выход общего назначения (PB11) Основной порт I²C, SDA
GND «Земля»
VCC Питание 2,0—3,6 В

В скобках в таблице указано соответствие внешних сигналов и сигналов используемого микроконтроллера для текущей версии модулей (R170115 и новее); во второй колонке — типичное применение данного сигнала в установленных по умолчанию прошивках.

Характеристики радиомодулей Unwired Range

Параметр Значение
Чипсет Приёмопередатчик LoRa™ Semtech SX1276
Микроконтроллер ARM Cortex-M, 32-битный (STM32L151CCU6)
Процессорное ядро 32-битное ARM Cortex-M3, 32 МГц
Разъёмы PLLD-1,27-24 (все доступные интерфейсы и питание)
Антенна Разъём SMA для внешней антенны
Несъёмная штыревая антенна
Интерфейсы Радиоинтерфейс LoRa™ (868-869 МГц)
16×GPIO
7×ADC
1×SPI
2×I²C
3×UART
Радио 863-869 МГц, мощность до +14 дБм
Дальность связи До 30 км в прямой видимости
1…5 км в городской застройке
Скорость передачи данных Минимальная: 50 бит/с
Максимальная: 37,5 кбит/с
Скорость рамках стандартной прошивки Минимальная: 300 бит/с (SF12, BW 125 кГц)
Максимальная: 3 кбит/с (SF6, BW 125 кГц)
Напряжение питания Номинальное: 3,3 В
Допустимое: 2,0…3,6 В
Операционная система ОС реального времени RIOT OS
Размеры 25×36×2,0 мм (без учёта разъёмов и антенны)

Настройка параметров радиомодуля

Для первичной настройки радиомодуля используется отладочная консоль на интерфейсе UART (сигналы DIO2, DIO3).

  1. Установите модем LoRa в адаптер UMDK-RFU со встроенным мостом USB-UART

  2. Подключите адаптер к компьютеру кабелем microUSB, включите питание адаптера переключателем «Power» дождитесь окончания установки драйвера

  3. Запустите программу терминала (например, Termite) и откройте нужный COM-порт, выбрав параметры 115200-8N1, без контроля потока. Терминал должен поддерживать полный перенос строки с возвратом каретки (CR-LF) для устройств, передающих строки только с символом переноса (LF).

Адаптер UMDK-RFU с модемом LoRa Адаптер UMDK-RFU с модемом LoRa

При корректном подключении в терминале появится заставка прошивки радиомодуля.

Если радиомодуль ранее не настраивался или его настройки были полностью очищены, прошивка потребует ввести идентификационный номер радиомодуля EUI64. Номер напечатан на этикетке на нижней стороне радиомодуля и представляет собой 64 бита в 16-ричном коде.

Устанавливается номер командой set, сохраняется — командой save:

set eui64 807b859020000001
save

Если у вас есть собственный диапазон адресов EUI64 — вы можете использовать значения из него. В противном случае настоятельно рекомендуется сохранять адрес EUI64, на который модуль был настроен изначально. В пределах одной сети каждый радиомодуль должен иметь уникальный адрес; использование EUI64 из адресного пространства, официально выделенного организацией IEEE, гарантирует это, так как исключает выпуск двух устройств с одинаковыми адресами EUI64, независимо от их модели и производителя.

После перезагрузки модуль предложить ввести уникальный номер APPID64, ключ шифрования сети и ключ Nonce.

APPID64 — уникальный идентификатор приложения, работающего на радиомодуле. APPID64 может использоваться на шлюзе или сервере сети LoRaWAN для определения, что именно за данные поступают с этого радиомодуля; при этом у множества радиомодулей, выполняющих одну и ту же задачу, может быть один и тот же APPID64.

В случае, если APPID64 не используется, он может быть любым, например:

set appid64 0000000000000001

JOINKEY — ключ шифрования, используемый в данной сети. JOINKEY должен быть абсолютно одинаковым для всех устройств сети, а также для базовой станции.

Ключ имеет разрядность 128 бит и задаётся в виде шестнадцатиричного числа (всего 32 символа):

set joinkey 918771929bbab19898c8a787f70a8810

NONCE — ключ шифрования для устройств со статической авторизацией в сети LoRa. При использовании динамической адресации (по умолчанию) он может быть любым.

set nonce abcdabcd
save

После перезагрузки модуль предложить перейти к настройкам радиочастной части.

Для модуля базовой станции это:

Для радиомодуля оконечного устройства добавляются параметры:

В текущей версии прошивок класс B не поддерживается, при его выборе устройство будет работать аналогично классу C.

Устройства класса А между событиями передачи данных уходят в глубокий сон для экономии энергии, поэтому сменить их параметры из консоли невозможно. Для смены параметров необходимо запустить модуль в безопасном режиме, удерживая кнопку Connect на плате UMDK-RF при нажатии кнопки Reset — тогда модуль запустится в классе C.

Полный список настроек можно посмотреть, дав команду set без параметров, полный список команд — дав команду help.

Для включения того или иного драйвера периферийного устройства необходимо сначала командой lsmod вывести список доступных драйверов:

lsmod

На данный момент в прошивке доступны стандартные драйверы:

ID Драйвер Описание Интерфейс Класс
1 gpio Управление цифровыми входами и выходами GPIO C
2 4btn Обработка нажатия на кнопки GPIO A, C
3 gps Поддержка модулей GPS/ГЛОНАСС UART C
4 lsm6ds3 6-осевой гироакселерометр I2C C
5 lm75 Внешний датчик температуры (-55…+125 ±3 °С) I2C A, C
6 lmt01 Четыре внешних датчика температуры (-50…+150 ±0,7 °С) GPIO A, C
7 uart Порты UART, RS232, RS485 UART C
8 sht21 Датчик температуры и влажности воздуха I2C A, C
9 pir Датчик движения GPIO A, C
10 6adc Поддержка аналоговых входов GPIO A, C
11 lps331 Датчик барометрического давления I2C A, C
12 counter Подсчёт импульсов с внешнего устройства GPIO A, C
13 echo Тестирование радиоканала C
14 pwm Генерация сигналов ШИМ (до 100 кГц) GPIO C
15 opt3001 Датчик внешней освещённости (0…65535 лк) I2C A, C
16 dali Интерфейс DALI GPIO C
17 bme280 Датчик температуры, влажности и давления воздуха I2C A, C

Для включения драйвера используется команда mod с названием или номером драйвера в качестве первого параметра и командой на включение (1 или enable) или выключение (0 или disable) в качестве второго. Возможные варианты написания команды выглядят так (текстовые и числовые варианты параметров можно сочетать):

mod counter 1
mod counter enable
mod lm75 0
mod 5 0
mod 5 disable

После подключения модуля, сохранения настроек командой save и перезагрузки в системе команд модуля появятся дополнительные команды, одноимённые включённым драйверам. При вызове такой команды без параметров она сообщит полный возможный список параметров.

Конфигурация радиомодуля может быть сброшена командой clear с параметрами all, key или modules.

В случае, если включённый драйвер привёл к неработоспособности прошивки, необходим установить модуль в адаптер UMDK-RF, включить питание, а потом, удерживая кнопку Connect адаптера, коротко нажать кнопку Reset. Модем загрузится в безопасном режиме — без инициализации драйверов. После этого необходимо отключить проблемный драйвер, сохранить настройки и перезагрузить модем в обычном режиме.

Настройки радиочасти и список включённых драйверов можно изменять без сброса настроек модуля. Все настройки применяются после их сохранения и последующей перезагрузки командами save и reboot.

Обновление прошивки модуля Unwired Range

Обновление прошивки можно произвести двумя способами — либо с помощью JTAG/SWD-программатора UMDK-JTAG (или иного с поддержкой процессоров STM32L1), либо с помощью встроенного загрузичка модуля (только для модулей ревизии R170105, она же r3, и адаптеров UMDK-RF версии 1.05 и новее).

Обновление с помощью встроенного загрузчика

  1. Скачайте программу stm32flash и установите её
  2. Подключите адаптер UMDK-RF со встроенным мостом USB-UART к компьютеру
  3. Установите на адаптер радиомодем Unwired Range
  4. Включите питание UMDK-RF
  5. Зажмите кнопки Reset и Boot, отпустите сначала Reset, а потом — Boot
  6. Запустите программу stm32flash со следующими параметрами: stm32flash -R -E -w <firmware.hex> COMxx, подставив правильный номер COM-порта и название файла с прошивкой
  7. Нажмите «Next» и убедитесь, что светофор показывает зелёный, а надпись рядом с ним гласит «Target is readable»
  8. Нажмите «Next». В поле «Target» должен сам появиться контроллер «STM32L1_Cat3-256K»
  9. Нажмите «Next». Выберите раздел «Download to device», откройте HEX-файл с прошивкой и нажмите «Next»
  10. Процесс прошивки занимает 15-30 секунд, в зависимости от размера прошивки

Внимание! Подходит только версия stm32flash с сайта Unwired Devices, так как оригинальная утилита некорректно работает с контроллерами STM32L151CC. Если вам необходима эта версия для других ОС, её исходные коды доступны на GitHub.

Обновление с помощью программатора UMDK-JTAG

UMDK-JTAG — программатор с поддержкой интерфейсов JTAG/SWD и встроенным сервером gdb. Для работы с ним необходимо установить GNU ARM Toolchain, включающий в себя клиент gdb.

Драйвер UMDK-JTAG для Windows — usb_serial.

После установки драйвера и подключения программатора в системе появятся два виртуальных COM-порта — один из них будет соответствовать встроенному в программатор адаптеру USB-UART, второй — серверу GDB. К сожалению, Windows показывает для обоих устройств одинаковые называния «Teensy USB Serial» в диспетчере устройств для обоих портов, поэтому, чтобы их различить, необходимо открыть свойства одного из устройств, выбрать вкладку «Сведения» и посмотреть пункт «Описание устройства, предоставленное шиной». Там будет значится либо «Black Magic UART Port», либо «Black Magic GDB Server».

Запуск клиента gdb из командной строки (под Windows удобнее всего использовать окружение MinGW):

arm-none-eabi-gdb lora-star-uni.hex

Подключение клиента gdb к программатору осуществляется следующими командами gdb:

target extended-remote \\.\COM16
mon conn enable
mon swdp_scan
attach 1

В первой команде в качестве номера COM-порта необходимо указать соответствующий порту Black Magic GDB Server.

Загрузка HEX-файла в микроконтроллер модема и выход из gdb:

load
quit

Чтобы не вводить команды каждый раз вручную, удобно в рабочей папке создать файл gdbinit со следующим содержанием:

target extended-remote \\.\COM16
mon conn enable
mon swdp_scan
attach 1
load
quit

И запускать gdb командой:

arm-none-eabi-gdb -x gdbinit lora-star-uni.hex

Файл прошивки не обязательно должен находиться в той же папке, к нему можно указать более длинный путь.

При использовании адаптера UMDK-RF со встроенным USB-UART необходимо учитывать, что он будет конфликтовать с USB-UART программатора UMDK-JTAG. Если необходимо программирование модема и доступ к его консоли (например, в ходе отладки новой прошивки), надо соответствующие консольному UART ножки UMDK-JTAG (2 и 3) отогнуть на несколько градусов в сторону, чтобы они не попали в разъём UMDK-RF:

Адаптер UMDK-RF с адаптером UMDK-JTAG

При этом консоль модема будет доступна через адаптер, встроенный в UDMK-RF, а адаптер UART из UMDK-JTAG может использоваться для других целей — например, при отладке драйверов, использующих UART на ножках 25-26, вход RX UMDK-JTAG можно подключать к RX или TX этого UART для целей мониторинга.

Работа с базовой станцией UNWD-BASE R1

NB: ниже описывается работа с базовой станцией UNWD-BASE, однако на практике базовая станция может быть построена на практически любом компьютере под ОС Linux с интерфейсом UART, например, Raspberry Pi, при условии сборки для него пакета lora-mqtt и наличия на нём MQTT-брокера mosquitto.

Базовая станция UNWD-BASE представляет собой комбинацию из радиомодуля Unwired Range и микрокомпьютера с ОС OpenWRT Linux. Задача микрокомьютера — поддерживать работу радиочастотной сети, включая механизмы аутентификации, авторизации и шифрования, а также транслировать компактный бинарный протокол радиообмена в сообщения в формате JSON для установленного на микрокомпьютере MQTT-брокера.

Подключиться к UNWD-BASE можно по сети Ethernet (один из портов по умолчанию настроен как WAN с DHCP-клиентом, второй — LAN с DHCP-сервером) или Wi-Fi — сеть называется UNWD-BASE-NNNNNN, где NNNNNN — последние 6 символов MAC-адреса интерфейса, пароль — unwiredbase

Базовая станция имеет веб-интерфейс для настройки сетевых интерфейсов, в том числе для подключения к существующим сетям Wi-Fi, доступный по адресу 192.168.4.254 с логином root и паролем admin.

Для работы с MQTT и конечными устройствами радиосети необходим доступ к консоли по ssh — адрес 192.168.4.254, порт 22, пароль и логин такие же (NB: при первой загрузке после обновления прошивки базовая станция не будет пускать по SSH; для исправления этого достаточно один раз перезагрузить её).

Роль интерфейса между радиосетью и MQTT выполняет программа /usr/bin/mqtt, MQTT-брокер — mosquitto.

По умолчанию программа mqtt запущена в режиме демона, чтобы остановить её, необходимо выполнить команду

/etc/init.d/mqtt.lora stop

Ручной запуск mqtt можно использовать, чтобы получить больше отладочной информации. При работе mqtt в режиме демона отладочная информация выводится в системный лог, который можно посмотреть командой logread (или logread -f для непрерывного просмотра).

В MQTT-брокере сообщения попадают в топик devices/lora, для подписки на него необходимо в отдельном окне запустить:

mosquitto_sub -t "devices/lora/#" -q 1

Сообщения от конкретного устройства будут попадать в субтопики с названием, идентичным адресу EUI64 данного устройства.

Тело сообщения имеет формат JSON и состоит из двух частей — данных и статуса устройства:

{
    "data":
    {
        "joined": 1,
        "class": "C"
    },
    "status":
    {
        "devEUI": "807B859020000177",
        "rssi": 0,
        "temperature": 0,
        "battery": 0,
        "date": "2017-02-21T13:02:21.147555Z"
    }
}

Значение полей статуса:

В случае, если значение battery равно 0, значения rssi и temperature также не должны учитываться (и они также будут равны 0).

Для отправки сообщения на устройство необходимо опубликовать его в топике данного устройства (данное сообщение установит период опроса датчиков температуры на 2 минуты на устройстве с адресом 807B859020000001):

mosquitto_pub -t "devices/lora/807B859020000001/lmt01" -m "set_period 2"

В некоторых случаях бывает удобно разнести приём и отправку сообщений в разные топики. В таком случае надо в файле /etc/lora-mqtt/mqtt.conf установить параметр:

mqtt_sepio = true

При следующем запуске mqtt входящие и исходящие сообщения разделятся:

devices/lora/807B85902000016D/mosi/sht21 get
devices/lora/807B85902000016D/miso/sht21 { "data": { "temp": 24.63, "humid": 14 }, "status": { “devEUI”: 807B85902000016D, "rssi" : -15, "temperature" : -10, "battery" : 3250, "date" : "2017-02-21T13:02:21.147555Z" }}

Сообщения от БС к конечному устройству попадут в топик mosi, от конечного устройства к БС — в топик miso.

Работа с базовой станцией UNWD-BASE R2

Базовая станция второй версии собрана на встраиваемом микрокомпьютере архитектуры ARM и не имеет поддержки Wi-Fi. Для подключения к базовой станции доступны два порта Ethernet — LAN с DHCP-сервером с собственным адресом 192.168.97.1 и WAN с DHCP-клиентом.

Питание базовой станции осуществляется по интерфейсу PoE с напряжением 48 В.

Обновление прошивки базовой станции UNWD-BASE R1

Для обновления прошивки базовой станции требуется:

  1. Подключиться к включённой базовой станции по Wi-Fi или Ethernet клиентом SFTP (например, WinSCP)
  2. Загрузить новый файл прошивки openwrt-ar71xx-generic-unwone-squashfs-sysupgrade.bin в папку /tmp
  3. Из консоли базовой станции выполнить команду
sysupgrade -v /tmp/openwrt-ar71xx-generic-unwone-squashfs-sysupgrade.bin
  1. Если одновременно требуется сбросить все настройки базовой станции (кроме настроек её радиомодема), то к команде необходимо добавить ключ -n

В случае проблем с доступом к консоли базовой станции (например, при указании неверной сети Wi-Fi и отсутствии подключения по Ethernet) возможны несколько варианта восстановления:

  1. Сброс настроек на заводские. Включить базовую станцию, дождаться окончания её загрузки (светодиод Ready перестаёт мигать и горит непрерывно), нажать и более 10 секунд удерживать кнопку Reset
  2. Сброс настроек на заводские, вариант второй. На выключенной базовой станции нажать кнопку Reset и, удерживая её, подать питание. Дождаться, когда светодиод Ready мигнёт четвёртый раз, и отпустить кнопку Reset.
  3. Обновление прошивки с флэшки с одновременным сбросом настроек.
    • На отформатированной в FAT32 USB-флэшку создать папку _fw и положить в неё файл openwrt-ar71xx-generic-unwone-squashfs-sysupgrade.bin
    • Вставить флэшку в разъём USB базовой станции при выключенном питании
    • Нажав и удерживая кнопку Reset, подать питание
    • Дождаться, пока светодиод Ready ярко мигнёт один раз, после чего отпустить кнопку Reset
    • Дождаться обновления прошивки и перезагрузки базовой станции (около 1 минуты)

После обновления прошивки перед заходом на базовую станцию по SSH её необходимо один раз перезагрузить, выключив и снова включив питание.

Обновление прошивки базовой станции UNWD-BASE R2

В базовой станции версии 2 используется встраиваемый компьютер на базе SoC iMX287 с увеличенным объёмом флэш-памяти и файловой системой UBI, что затрудняет процедуру обновления прошивки и делает её более рискованной. В связи с этим не рекомендуется без надобности обновлять прошивку базовой станции — в абсолютном большинстве случаев достаточно обновления одной лишь утилиты lora-mqtt.

Тем не менее, полное обновление прошивки возможно по следующей процедуре:

  1. Зайдя в консоль компьютера базовой станции, проверьте, доступна ли вам утилита nandwrite. Если она отсутствует — загрузите на БС и установите командой opkg install пакет busybox

  2. Скачайте в каталог /tmp образ прошивки ubi.img

  3. Выполните следующую последовательность команд:

cp /bin/busybox /tmp
/tmp/busybox flash_eraseall /dev/mtd6
/tmp/busybox nandwrite -p /dev/mtd6 /tmp/ubi.img
  1. Сразу после завершения работы утилиты nandwrite перезагрузите БС.

  2. После перезагрузки скачайте и установите с помощью opkg update свежую версию утилиты lora-mqtt (сборка для платформы mxs).

Внимание! Команды должны выполняться строго в указанном виде, файл прошивки и копия утилиты busybox должны находиться только в папке /tmp!

Пользовательские настройки, скрипты и программы при обновлении прошивки не сохраняются.

Если также требуется обновление ядра ОС (файл uImage) и описания оборудования DTB (файл imx28-duckbill.dtb), его произвести несколько проще:

flash_eraseall /dev/mtd3
nandwrite -p /dev/mtd3 /tmp/uImage
flash_eraseall /dev/mtd4
nandwrite -p /dev/mtd4 /tmp/imx28-duckbill.dtb

Обновление прошивки радиомодулей UNWD-BASE R2

Для обновления прошивки радиомодулей необходимо загрузить и установить на базвую станцию пакет stm32flash:

  1. Скачать файл stm32flash
  2. Загрузить его на базовую станцию в директорию /tmp
  3. Выполнить команду opkg install /tmp/stm32flash*

Перед обновлением прошивки необходимо остановить утилиту lora-mqtt: '/etc/init.d/mqtt.lora stop'

Перевод радиомодуля в режим обновления производится последовательностью команд для первого модуля:

echo 1 > /sys/class/gpio/gpio98/value
echo 0 > /sys/class/gpio/gpio99/value
echo 1 > /sys/class/gpio/gpio99/value
echo 0 > /sys/class/gpio/gpio98/value

Для второго модуля:

echo 1 > /sys/class/gpio/gpio106/value
echo 0 > /sys/class/gpio/gpio107/value
echo 1 > /sys/class/gpio/gpio107/value
echo 0 > /sys/class/gpio/gpio106/value

В случае, если команды запускаются скриптом, рекомендуется вставить между командами паузы не менее 0,1 сек.

Далее необходимо загрузить файл прошивки (например, lora-star-uni-gate.hex) в директорию /tmp и выполнить команду (для второго радиомодуля порт меняется на /dev/ttyAPP1)

stm32flash -b 115200 -E -R -w /tmp/lora-star-uni-gate.hex /dev/ttyAPP0

Прошивка занимает около 15 секунд, после чего радиомодуль автоматически перезагрузится.

Внимание! Штатная версия утилиты stm32flash (0.4), входящая в состав OpenWRT 15.05.1, равно как и последняя на данный момент версия 0.5 с оригинального сайта разработчика некорректно работают с используемыми в радиомодулях Unwired Range микроконтроллерами.

Для прошивки необходимо использовать только модифицированную версию stm32flash. Если вам необходимо ознакомиться с её исходными кодами, они доступны на GitHub.

Обновление ПО lora-mqtt базовой станции

Часто достаточно обновить только программу lora-mqtt, не затрагивая всю прошивку базовой станции.

Для этого необходимо с помощью scp (например, программы WinSCP) подключиться к базовой станции по сети и загрузить файл lora-mqtt-*.ipk в папку /tmp, после чего зайти на базовую станцию по SSH и выполнить команды:

/etc/init.d/mqtt.lora stop
opkg install /tmp/lora-mqtt*.ipk

Если после второй команды в консоли не появится сообщение «Attempting to run in the background» — то для запуска новой версии lora-mqtt в качестве постоянно работающего сервиса надо перезагрузить базовую станцию или выполнить команду

/etc/init.d/mqtt.lora start

Для базовой станции версии R1 используются пакеты архитектуры ar71xx, для версии R2 — mxs.

Настройка радиомодулей базовой станции

Начиная с прошивки радиомодуля базовой станции 1.25 и версии lora-mqtt 2.2.0, базовые станции UNWD-BASE R2.02 и новее поддерживают возможность удалённой настройки радиомодуля через API MQTT и специальный топик `devices/lora/gate.

Установка ключа шифрования сети (32 символа 16-ричной кодировки без лидирующего 0x):

mosquitto_pub -t "devices/lora/gate/joinkey" -m "set AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

Установка региона (всегда указывайте двузначное число; 00 — Европа, 01 — Россия):

mosquitto_pub -t "devices/lora/gate/region" -m "set 01"

Установка скорости связи (всегда указывайте двузначное число):

mosquitto_pub -t "devices/lora/gate/datarate" -m "set 03"

Установка номера канала (всегда указывайте двузначное число):

mosquitto_pub -t "devices/lora/gate/channel" -m "channel 00"

Перезагрузка радиомодуля (необходима после завершения настройки):

mosquitto_pub -t "devices/lora/gate/reboot" -m ""

Перевод радиомодуля в режим обновления прошивки:

mosquitto_pub -t "devices/lora/gate/update" -m ""

Использование в качестве базовой станции Raspberry Pi

Для подключения модема к Raspberry Pi 3 можно использовать специальный адаптер, устанавливающийся в разъём RPi. Первый вывод контакта адаптера должен совпадать с первым выводом разъёма RPi, модем в адаптер устанавливается чипами вверх.

Подключение Raspberry Pi

На Raspberry Pi устанавливается образ Raspbian Jessie Lite выпуска марта 2017 или новее.

Далее доустанавливаются необходимые пакеты:

sudo apt-get install mosquitto libmosquitto1 libmosquitto-dev -y
sudo apt-get install libc-ares-dev libssl-dev libxcrypt-dev -y
sudo apt-get install git -y

Скачивание и сборка программы lora-mqtt:

git clone https://github.com/unwireddevices/lora-mqtt.git
cd lora-mqtt
make
sudo cp bin/mqtt /usr/bin
sudo chmod 755 /usr/bin/mqtt
sudo mkdir /etc/lora-mqtt
sudo cp dist/openwrt/files/mqtt.conf /etc/lora-mqtt/

В файле /etc/lora-mqtt/mqtt.conf необходимо изменить название порта с /dev/ttyATH0 на /dev/ttyS0.

NB: если у вас Raspberry Pi 2 или ещё более старая модель, порт должен называться /dev/ttyAMA0.

Кроме того, либо после настройки Raspberry Pi, либо при создании образа Debian Jessie на карте microSD необходимо изменить два конфигурационных файла.

  1. В файл config.txt (/boot/config.txt в настроенной RPi) добавить в конце строку enable_uart=1
  2. В файле cmdline.txt (/boot/cmdline.txt в настроенной RPi) в строке dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait полностью удалить параметр console=serial0,115200

Если файлы изменялись на работающей RPi, после изменения плату необходимо перезагрузить. Эти изменения включат внешний порт UART, а также отключат вывод в него консоли операционной системы.

Запускается программа командой sudo mqtt.