1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lupyuen-LoRaMac-node-nuttx

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LoRaWAN Stack для Apache NuttX OS

Прочитайте статьи:

  • LoRaWAN на Apache NuttX OS;
  • LoRa SX1262 на Apache NuttX OS;
  • SPI на Apache NuttX OS.

Этот репозиторий зависит от:

  • lupyuen/lora-sx1262 (ветка loRaWAN);
  • GitHub.com/lupyuen/lora-sx1262/tree/lorawan.

Чтобы протестировать стек LoRaWAN, запустите приложение NuttX:

  • lupyuen/lorawan_test.

Установка библиотеки

Чтобы добавить этот репозиторий в проект 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

Для каждой поддерживаемой платформы предоставляются примеры приложений.

  • LoRaMac/fuota-test-01: тестовый сценарий FUOTA 01, пример приложения для оконечного устройства. (На основе общих пакетов предоставленного приложения).
  • LoRaMac/periodic-uplink-lpp: пример приложения для оконечных устройств класса A/B/C. Периодически передаёт кадр по протоколу Cayenne LPP. (На основе общих пакетов предоставленного приложения).
  • ping-pong: пример приложения двухточечной радиочастотной связи.
  • rx-sensi: пример приложения, полезного для измерения уровня чувствительности радио с помощью RF-генератора.
  • tx-cw: пример приложения для демонстрации генерации непрерывной волны RF-передачи.

Примечание: каждый пример приложения LoRaWAN (LoRaMac/*) включает реализацию протокола сертификации LoRa-Alliance; LoRaWAN.

Примечание: документацию по API стека LoRaWAN можно найти по адресу: http://stackforce.github.io/LoRaMac-doc/.

Поддерживаемые платформы

Этот проект в настоящее время поддерживает следующие платформы. Проект может быть перенесён на другие платформы с использованием другого MCU, отличного от тех, которые поддерживаются в настоящее время. Документ Руководство по переносу содержит инструкции по переносу проекта на другие платформы.

  • NAMote72

    • документация по платформе NAMote72 (doc/NAMote72-platform.md).
  • NucleoLxxx — Discovery kit

    • документация по платформам NucleoLxxx и Discovery kit (doc/NucleoLxxx-platform.md).
  • SKiM880B, SKiM980A, SKiM881AXL

    • документация по платформам SKiM88xx (doc/SKiM88xx-platform.md).
  • SAMR34

    • документация по платформе SAMR34 (doc/SAMR34-platform.md).

Начало работы

Предварительные требования

Следуйте инструкциям, приведённым в документе Среда разработки.

Клонирование репозитория

Клонируйте репозиторий из 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

soft-se — это чистая программная эмуляция безопасного элемента. Это означает, что всё находится в памяти хост-MCU. DevEUI, JoinEUI и ключи AES128 могут храниться в энергонезависимой памяти через специальные API. Чтобы обновить идентификатор конечного устройства (DevEUI, JoinEUI и AES128 keys), необходимо обновить файл se-identity.h, расположенный в каталоге ./src/peripherals/soft-se/. Примечание: в предыдущих версиях этого проекта это делалось внутри файлов Commissioning.h, расположенных в каждом предоставленном каталоге примеров.

lr1110-se

Абстракция реализации 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»

}

  • Нажмите на «CMake: Debug: Ready» и выберите тип сборки Debug или Release.
    cmake configure
  • Дождитесь завершения процесса настройки.
  • Нажмите «Build», чтобы собрать проект.
    cmake build
  • Подождите, пока завершится процесс сборки.
  • Бинарные файлы будут доступны в папке ./build/src/apps/LoRaMac/
    • LoRaMac-periodic-uplink-lpp — формат ELF
    • LoRaMac-periodic-uplink-lpp.bin — бинарный формат
    • LoRaMac-periodic-uplink-lpp.hex — шестнадцатеричный формат

Пример ping-pong с использованием модуляции LoRa для платформы NucleoL476 с MBED-щитом LR1110MB1DIS.

  • Пожалуйста, отредактируйте файл .vscode/settings.json.
Нажмите, чтобы развернуть!

// Поместите свои настройки в этот файл, чтобы перезаписать настройки по умолчанию и пользовательские настройки.
{
    "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.  
![cmake configure](doc/images/vscode-cmake-configure.png)
* Дождитесь завершения процесса настройки.
* Нажмите на «Build», чтобы собрать проект.  
![cmake build](doc/images/vscode-cmake-build.png)
* Подождите, пока завершится процесс сборки.
* Двоичные файлы будут доступны в папке `./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 выполнен успешно


ПЕРЕЗАГРУЗИТЕ КОНЕЧНОЕ УСТРОЙСТВО

Благодарности

  • Проект mbed (https://mbed.org/) использовался в начале в качестве источника вдохновения.
  • В этой программе используется реализация алгоритма AES (http://www.gladman.me.uk/) Брайана Гладмана.
  • Эта программа использует реализацию алгоритма CMAC (http://www.cse.chalmers.se/research/group/dcs/masters/contikisec/) Ландера Касадо, Филиппоса Цигаса.
  • The Things Industries за предоставление платформы Microchip/Atmel SAMR34 и поддержку ATECC608A-TNGLORA для безопасного элемента.
  • Tencent Blade Team за обнаружение уязвимостей безопасности и предложения по их устранению.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

LoRaWAN для операционной системы Apache NuttX. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Недавние действия

Загружен новый тег v4.5.2 4 месяца назад
Загружен новый тег v4.5.1 4 месяца назад
Загружен новый тег v4.5.0-rc.1 4 месяца назад
Загружен новый тег v4.5.0 4 месяца назад
Загружен новый тег v4.4.7 4 месяца назад
Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/lupyuen-LoRaMac-node-nuttx.git
git@gitlife.ru:oschina-mirror/lupyuen-LoRaMac-node-nuttx.git
oschina-mirror
lupyuen-LoRaMac-node-nuttx
lupyuen-LoRaMac-node-nuttx
master