LoRaWAN Stack для Apache NuttX OS
Прочитайте статьи:
Этот репозиторий зависит от:
Чтобы протестировать стек LoRaWAN, запустите приложение NuttX:
Установка библиотеки
Чтобы добавить этот репозиторий в проект NuttX, выполните следующие шаги:
cd nuttx/libs
git submodule add https://github.com/lupyuen/LoRaMac-node-nuttx liblorawan
Затем обновите Makefiles и Kconfig:
После этого обновите конфигурацию сборки NuttX:
## TODO: Change this to the path of our "incubator-nuttx" folder
cd nuttx/nuttx
## Preserve the Build Config
cp .config ../config
## Erase the Build Config and Kconfig files
make distclean
## For BL602: Configure the build for BL602
./tools/configure.sh bl602evb:nsh
## For ESP32: Configure the build for ESP32.
## TODO: Change "esp32-devkitc" to our ESP32 board.
./tools/configure.sh esp32-devkitc:nsh
## Restore the Build Config
cp ../config .config
## Edit the Build Config
make menuconfig
В menuconfig включите библиотеку LoRaWAN в разделе «Library Routines».
Этот репозиторий является ответвлением проекта Semtech Lora-net/LoRaMac-node с минимальными изменениями.
/ | /\ / | |/ / / _ | _ / | | _ \ | |/ _ \ (| ' <| | () | / (| | |/ |// __||__| ___/||\|_| embedded.connectivity.solutions===============
Цель этого проекта — показать пример реализации стека конечного устройства LoRaWAN. В настоящее время в проекте есть одна активная ветка.
Ветвь | Спецификация L2 | Спецификация RP | Тег/веха | Класс | Комментарии |
---|---|---|---|---|---|
1.0.4 | 2-1.0.1 | v4.5.2 | A/B/C | LoRaWAN L2 1.0.4 — выпущено | |
1.0.3 | v1.0.3revA | v4.4.7 | A/B/C | LoRaWAN L2 1.0.3 — выпущено (последний выпуск на основе 1.0.3) | |
master | 1.0.4 / 1.1.0 + FCntDwn ERRATA | 2-1.0.1 | M 4.6.0 | A/B/C | LoRaWAN L2 1.0.4 / 1.1.0 |
Для каждой поддерживаемой платформы предоставляются примеры приложений.
Примечание: каждый пример приложения LoRaWAN (LoRaMac/*) включает реализацию протокола сертификации LoRa-Alliance; LoRaWAN.
Примечание: документацию по API стека LoRaWAN можно найти по адресу: http://stackforce.github.io/LoRaMac-doc/.
Этот проект в настоящее время поддерживает следующие платформы. Проект может быть перенесён на другие платформы с использованием другого MCU, отличного от тех, которые поддерживаются в настоящее время. Документ Руководство по переносу содержит инструкции по переносу проекта на другие платформы.
NAMote72
NucleoLxxx — Discovery kit
SKiM880B, SKiM980A, SKiM881AXL
SAMR34
Следуйте инструкциям, приведённым в документе Среда разработки.
Клонируйте репозиторий из GitHub.
$ git clone https://github.com/lora-net/loramac-node.git loramac-node
Проект LoRaMac-node содержит подмодули Git, которые необходимо инициализировать.
$ cd loramac-node
$ git submodule update --init
В этом проекте в настоящее время поддерживаются 3 различных реализации безопасных элементов: soft-se, lr1110-se и atecc608a-tnglora-se. Чтобы персонализировать двоичный файл MCU с EUIs LoRaWAN или/и ключами AES128, необходимо следовать инструкциям, предоставленным в главах soft-se, lr1110-se и atecc608a-tnglora-se.
soft-se — это чистая программная эмуляция безопасного элемента. Это означает, что всё находится в памяти хост-MCU. DevEUI, JoinEUI и ключи AES128 могут храниться в энергонезависимой памяти через специальные API. Чтобы обновить идентификатор конечного устройства (DevEUI, JoinEUI и AES128 keys), необходимо обновить файл se-identity.h, расположенный в каталоге ./src/peripherals/soft-se/. Примечание: в предыдущих версиях этого проекта это делалось внутри файлов Commissioning.h, расположенных в каждом предоставленном каталоге примеров.
Абстракция реализации lr1110-se обрабатывает все необходимые обмены с криптографическим ядром радио LR1110. Все микросхемы радио LR1110 предварительно настроены на заводе для использования с Сервисом присоединения к облачному устройству LoRa. Если используются другие серверы присоединения, DevEUI, Pin, JoinEUI и ключи AES128 можно обновить, следуя инструкциям, приведённым в главе «13. Прошивка LR1110» руководства пользователя LR1110 (https://semtech.my.salesforce.com/sfc/p/#E0000000JelG/a/2R000000Q2PM/KGm1YHDoHhtaicNYHCIAnh0CbG3yodEuWWJ2WrFRafM). Когда параметр компиляции SECURE_ELEMENT_PRE_PROVISIONED установлен в положение ON, lr1110-se будет использовать данные заводской настройки (DevEUI, JoinEUI и AES128 keys). Когда параметр компиляции SECURE_ELEMENT_PRE_PROVISIONED установлен в положение OFF, lr1110-se должен быть настроен. Switch for Class B support of LoRaMac:
CLASSB_ENABLED: «ON»,
// Выберите активный регион, для которого будет инициализирован стек.
// Вы можете выбрать между:
// LORAMAC_REGION_EU868, LORAMAC_REGION_US915 и т. д.
ACTIVE_REGION: «LORAMAC_REGION_EU868»,
// Выберите тип модуляции, применимый к приложениям ping-pong или rx-sensi. Вы можете выбрать между:
// LORA или FSK
MODULATION: «LORA»,
// Целевая плата, поддерживаются следующие платы:
// NAMote72, NucleoL073 (по умолчанию), NucleoL152, NucleoL476, SAMR34, SKiM880B, SKiM980A, SKiM881AXL, B-L072Z-LRWAN1.
BOARD: «NucleoL476»,
// Выбор щита MBED Radio (применяется только к платформам Nucleo). Поддерживаются следующие щиты:
// SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS (по умолчанию), SX1262MBXCAS, SX1262MBXDAS, LR1110MB1XXS.
MBED_RADIO_SHIELD: «LR1110MB1XXS»,
// Выбор типа безопасного элемента, поддерживаются:
// SOFT_SE (по умолчанию), LR1110_SE, ATECC608A_TNGLORA_SE
SECURE_ELEMENT: «LR1110_SE»,
// Безопасный элемент предварительно подготовлен
SECURE_ELEMENT_PRE_PROVISIONED: «ON»,
// Активация поддержки региона, выберите те, которые вы хотите поддерживать. По умолчанию включена поддержка только REGION_EU868.
REGION_EU868: «ON»,
REGION_US915: «OFF»,
REGION_CN779: «OFF»,
REGION_EU433: «OFF»,
REGION_AU915: «OFF»,
REGION_AS923: «OFF»,
REGION_CN470: «OFF»,
REGION_KR920: «OFF»,
REGION_IN865: «OFF»,
REGION_RU864: «OFF»,
USE_RADIO_DEBUG: «ON»
}
./build/src/apps/LoRaMac/
Пример ping-pong с использованием модуляции LoRa для платформы NucleoL476 с MBED-щитом LR1110MB1DIS.
// Поместите свои настройки в этот файл, чтобы перезаписать настройки по умолчанию и пользовательские настройки.
{
"cmake.configureSettings": {
// В случае, если ваш GNU ARM-Toolchain не установлен по пути по умолчанию:
// Windows : Нет пути по умолчанию. Укажите путь, где установлен набор инструментов. Например:
// "C:/PROGRA~2/GNUTOO~1/92019-~1".
// Linux : /usr
// OSX : /usr/local
// Необходимо раскомментировать и заполнить следующую строку.
"TOOLCHAIN_PREFIX":"/path/to/toolchain",
// В случае, если ваш OpenOCD не установлен по пути по умолчанию:
// Windows : C:/openocd/bin/openocd.exe
// Linux : /usr/bin/openocd
// OSX : /usr/local/bin/openocd
// Пожалуйста, раскомментируйте следующую строку и заполните её соответствующим образом.
//"OPENOCD_BIN":"C:/openocd/bin/openocd.exe",
// Указывает путь к файлу инструментальной цепочки CMAKE.
"CMAKE_TOOLCHAIN_FILE":"cmake/toolchain-arm-none-eabi.cmake",
// Определяет приложение. Вы можете выбрать между:
// LoRaMac (по умолчанию), ping-pong, rx-sensi, tx-cw.
"APPLICATION":"ping-pong",
// Выберите подпроект LoRaMac. Вы можете выбрать между:
// periodic-uplink-lpp, fuota-test-01.
"SUB_PROJECT":"periodic-uplink-lpp",
// Переключатель для поддержки класса B LoRaMac:
"CLASSB_ENABLED":"ON",
// Выберите активный регион, для которого будет инициализирован стек.
// Вы можете выбрать между:
// LORAMAC_REGION_EU868, LORAMAC_REGION_US915, ..
</p>
</details> **ACTIVE_REGION:** LORAMAC_REGION_EU868
// Выбор типа модуляции, применимого к приложениям ping-pong или rx-sensi. Можно выбрать между:
// LORA или FSK
**MODULATION:** LORA
// Целевая плата, поддерживаются следующие платы:
// NAMote72, NucleoL073 (по умолчанию), NucleoL152, NucleoL476, SAMR34, SKiM880B, SKiM980A, SKiM881AXL, B-L072Z-LRWAN1.
**BOARD:** NucleoL476
// Выбор щита Mbed Radio (применяется только к платформам Nucleo). Поддерживаются следующие щиты:
// SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS (по умолчанию), SX1262MBXCAS, SX1262MBXDAS, LR1110MB1XXS.
**MBED_RADIO_SHIELD:** SX1261MBXBAS
// Выбор типа безопасного элемента. Поддерживаются следующие:
// SOFT_SE (по умолчанию), LR1110_SE, ATECC608A_TNGLORA_SE
**SECURE_ELEMENT:** SOFT_SE
// Безопасный элемент предварительно настроен
**SECURE_ELEMENT_PRE_PROVISIONED:** ON
// Активация поддержки регионов. Выберите те, которые вы хотите поддерживать. По умолчанию включена поддержка только REGION_EU868.
**REGION_EU868:** ON
**REGION_US915:** OFF
**REGION_CN779:** OFF
**REGION_EU433:** OFF
**REGION_AU915:** OFF
**REGION_AS923:** OFF
**REGION_CN470:** OFF
**REGION_KR920:** OFF
**REGION_IN865:** OFF
**REGION_RU864:** OFF
**USE_RADIO_DEBUG:** ON
}
* Нажмите «CMake: Debug: Ready» и выберите тип сборки Debug или Release.

* Дождитесь завершения процесса настройки.
* Нажмите на «Build», чтобы собрать проект.

* Подождите, пока завершится процесс сборки.
* Двоичные файлы будут доступны в папке `./build/src/apps/ping-pong/`
* ping-pong — формат ELF
* ping-pong.bin — двоичный формат
* ping-pong.hex — шестнадцатеричный формат
### Управление последовательной консолью NVM
Примеры `periodic-uplink-lpp` и `fuota-test-01` позволяют сбросить хранилище NVM через последовательный интерфейс.
Чтобы сбросить содержимое NVM, необходимо нажать клавиши `ESC` + `N` на последовательном терминале.
После нажатия клавиш `ESC` + `N` последовательный терминал покажет следующее сообщение. После сброса конечного устройства будет использоваться чистое NVM.
```text
ESC + N
Сброс NVM выполнен успешно
ПЕРЕЗАГРУЗИТЕ КОНЕЧНОЕ УСТРОЙСТВО
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )