Após a disponibilidade de uma nova pilha Lorawan® aprimorada e recurso no modem Lora Basics ™, a Semtech decidiu fazer a transição do loramac-nó para o modo de manutenção (as correções críticas de bugs ainda serão suportadas).
O modem Lora Basics ™ é a plataforma que implementa novos recursos de Lorawan (isto é, CSMA) e apoiará futuras melhorias introduzidas pela Lora Alliance (por exemplo, Lorawan 1.2). Enquanto o anteriormente introduzido as transições de pilha de nó Loramac para o modo de manutenção Semtech recomenda que os clientes usem o modem Lora Basics ™ para novos designs.
O objetivo deste projeto é mostrar um exemplo de uma implementação de pilha de Lorawan device final.
Este projeto possui 2 ramificações ativas em vigor.
| Filial | L2 Spec | RP Spec | Tag/Milestone | Aula | Comentários |
|---|---|---|---|---|---|
| 1.0.4 / 1.1.0 + fcntdwn errata | 2-1.0.3 | v4.7.0 | ABC | Lorawan L2 1.0.4 - Lançado | |
| mestre | 1.0.4 / 1.1.0 + fcntdwn errata | 2-1.0.3 | v4.7.0 | ABC | Lorawan L2 1.0.4 / 1.1.0 |
| V5.0.0 | 1.0.4 / 1.1.0 + fcntdwn errata | 2-1.0.3 | M 5.0.0 | ABC | Lorawan L2 1.0.4 / 1.1.0 - Adiciona suporte para modulação LR -FHSS |
Este projeto implementa totalmente as classes de Device de Classa, Classb e Classc e também fornece SX1272/73, SX1276/77/78/79, SX1261/2 e LR1110 Drivers de rádio.
Para cada exemplo de plataforma atualmente suportado, são fornecidos aplicativos de exemplo.
LORAMAC/FUOTA-TEST-01 : Cenário de teste Fuota 01 Aplicação de exemplo de dispositivo final. (Com base nos pacotes comuns do aplicativo fornecido)
Loramac/periódico-uplink-lpp : Aplicação de exemplo de device de classificação/b/c. Explica periodicamente um quadro usando o protocolo Cayenne LPP. (Com base nos pacotes comuns do aplicativo fornecido)
Pingue-pong : Ponto a Point RF Link Exemplo de aplicativo.
RX-SENSI : Exemplo de aplicativo útil para medir o nível de sensibilidade ao rádio usando um gerador de RF.
TX-CW : Exemplo de aplicativo para mostrar como gerar uma transmissão de onda contínua de RF.
Nota : Cada exemplo de aplicativo de Lorawan (Loramac/*) inclui uma implementação da Lora-Aliança; Protocolo de certificação de Lorawan.
Nota : A documentação da API da pilha de Lorawan pode ser encontrada em: http://stackforce.github.io/loramac-doc/
Atualmente, este projeto fornece suporte para as plataformas abaixo.
Este projeto pode ser transportado para outras plataformas usando MCU diferentes e as atualmente suportadas.
O documento do Guia de Porting fornece linhas de guia sobre como portar o projeto para outras plataformas.
NAMOTE72
Nucleolxxx - kit de descoberta
Skim880b, skim980a, skim881axl
SAMR34
Siga as instruções fornecidas pelo documento do ambiente de desenvolvimento.
Clone o repositório do GitHub
$ git clone https://github.com/lora-net/loramac-node.git loramac-nodeO projeto Loramac-Node contém submódulos Git que devem ser inicializados
$ cd loramac-node
$ git submodule update --init Atualmente, este projeto suporta três implementações diferentes de elementos soft-se , lr1110-se e atecc608a-tnglora-se .
Para personalizar o arquivo binário do MCU com as teclas Lorawan EUIS ou/e AES128, é preciso seguir as instruções fornecidas pelos capítulos Soft-Se, LR1110-SE e ATECC608A-TNGLORA-SE
Soft-Se é uma emulação pura de software de um elemento seguro. Isso significa que tudo está localizado nas memórias do Host MCU. As teclas DevEUI , JoinEUI e AES128 keys podem ser armazenadas em uma memória não volátil através de APIs dedicadas.
Para atualizar a identidade do dispositivo final ( DevEUI , JoinEUI e AES128 keys ), é preciso atualizar o arquivo se-identity.h localizado em ./src/peripherals/soft-se/ diretório.
NOTA: Nas versões anteriores deste projeto, isso foi feito dentro de Commissioning.h arquivos localizados em cada diretório de exemplo fornecido.
A implementação da abstração LR1110-SE lida com todas as trocas necessárias com o motor criptográfico de rádio LR1110.
Todos os chips de rádio LR1110 são pré-provisionados para fora da fábrica para serem usados com o serviço Lora Cloud Disposition.
Caso outros servidores de junção sejam usados as AES128 keys DevEUI , Pin , JoinEUI e AES128, podem ser atualizadas seguindo as instruções fornecidas no capítulo "13. LR1110 Provisioning" do manual do usuário LR1110.
Quando a opção Compile SECURE_ELEMENT_PRE_PROVISIONED estiver definida como ON LR1110-SE usará os dados provisionados de fábrica ( DevEUI , JoinEUI e AES128 keys ).
Quando a opção Compile SECURE_ELEMENT_PRE_PROVISIONED estiver definida como OFF , o LR1110-SE deve ser provisionado seguindo um dos métodos descritos no Capítulo "13. LR1110 Provisioning" do manual do usuário LR1110. O DevEUI , Pin e JoinEUI podem ser alterados editando o arquivo se-identity.h localizado no diretório ./src/peripherals/lr1110-se/ .
A implementação da abstração ATECC608A-TNGLORA-SE lida com todas as trocas necessárias com os elementos seguros ATECC608A-TNGLORA e ATECC608B-TNGLORA.
Esse elemento seguro é sempre pré-provisionado e seu conteúdo não pode ser alterado.
Exemplo periódico-uplink-lpp para plataforma nucleol476 com escudo mbed lr1110mb1dis e usando o elemento seguro pré-fornecedado LR1110
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release
-DTOOLCHAIN_PREFIX= " <replace by toolchain path> "
-DCMAKE_TOOLCHAIN_FILE= " ../cmake/toolchain-arm-none-eabi.cmake "
-DAPPLICATION= " LoRaMac "
-DSUB_PROJECT= " periodic-uplink-lpp "
-DCLASSB_ENABLED= " ON "
-DACTIVE_REGION= " LORAMAC_REGION_EU868 "
-DREGION_EU868= " ON "
-DREGION_US915= " OFF "
-DREGION_CN779= " OFF "
-DREGION_EU433= " OFF "
-DREGION_AU915= " OFF "
-DREGION_AS923= " OFF "
-DREGION_CN470= " OFF "
-DREGION_KR920= " OFF "
-DREGION_IN865= " OFF "
-DREGION_RU864= " OFF "
-DBOARD= " NucleoL476 "
-DMBED_RADIO_SHIELD= " LR1110MB1XXS "
-DSECURE_ELEMENT= " LR1110_SE "
-DSECURE_ELEMENT_PRE_PROVISIONED= " ON "
-DUSE_RADIO_DEBUG= " ON " ..
$ makeExemplo de pingue-pongue usando a modulação Lora para plataforma nucleol476 com escudo mbed lr1110mb1dis
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release
-DTOOLCHAIN_PREFIX= " <replace by toolchain path> "
-DCMAKE_TOOLCHAIN_FILE= " ../cmake/toolchain-arm-none-eabi.cmake "
-DAPPLICATION= " ping-pong "
-DMODULATION: " LORA "
-DREGION_EU868= " ON "
-DREGION_US915= " OFF "
-DREGION_CN779= " OFF "
-DREGION_EU433= " OFF "
-DREGION_AU915= " OFF "
-DREGION_AS923= " OFF "
-DREGION_CN470= " OFF "
-DREGION_KR920= " OFF "
-DREGION_IN865= " OFF "
-DREGION_RU864= " OFF "
-DBOARD= " NucleoL476 "
-DMBED_RADIO_SHIELD= " LR1110MB1XXS "
-DUSE_RADIO_DEBUG= " ON " ..
$ makeExemplo periódico-uplink-lpp para plataforma nucleol476 com escudo mbed lr1110mb1dis e usando o elemento seguro pré-fornecedado LR1110
// Place your settings in this file to overwrite default and user settings.
{
"cmake.configureSettings" : {
// In case your GNU ARM-Toolchain is not installed under the default
// path:
// Windows : No default path. Specify the path where the
// toolchain is installed. i.e:
// "C:/PROGRA~2/GNUTOO~1/92019-~1".
// Linux : /usr
// OSX : /usr/local
// It is required to uncomment and to fill the following line.
"TOOLCHAIN_PREFIX" : " /path/to/toolchain " ,
// In case your OpenOCD is not installed under the default path:
// Windows : C:/openocd/bin/openocd.exe
// Linux : /usr/bin/openocd
// OSX : /usr/local/bin/openocd
// Please uncomment the following line and fill it accordingly.
//"OPENOCD_BIN":"C:/openocd/bin/openocd.exe",
// Specifies the path to the CMAKE toolchain file.
"CMAKE_TOOLCHAIN_FILE" : " cmake/toolchain-arm-none-eabi.cmake " ,
// Determines the application. You can choose between:
// LoRaMac (Default), ping-pong, rx-sensi, tx-cw.
"APPLICATION" : " LoRaMac " ,
// Select LoRaMac sub project. You can choose between:
// periodic-uplink-lpp, fuota-test-01.
"SUB_PROJECT" : " periodic-uplink-lpp " ,
// Switch for Class B support of LoRaMac:
"CLASSB_ENABLED" : " ON " ,
// Select the active region for which the stack will be initialized.
// You can choose between:
// LORAMAC_REGION_EU868, LORAMAC_REGION_US915, ..
"ACTIVE_REGION" : " LORAMAC_REGION_EU868 " ,
// Select the type of modulation, applicable to the ping-pong or
// rx-sensi applications. You can choose between:
// LORA or FSK
"MODULATION" : " LORA " ,
// Target board, the following boards are supported:
// NAMote72, NucleoL073 (Default), NucleoL152, NucleoL476, SAMR34, SKiM880B, SKiM980A, SKiM881AXL, B-L072Z-LRWAN1.
"BOARD" : " NucleoL476 " ,
// MBED Radio shield selection. (Applies only to Nucleo platforms)
// The following shields are supported:
// SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS(Default), SX1262MBXCAS, SX1262MBXDAS, LR1110MB1XXS.
"MBED_RADIO_SHIELD" : " LR1110MB1XXS " ,
// Secure element type selection the following are supported
// SOFT_SE(Default), LR1110_SE, ATECC608A_TNGLORA_SE
"SECURE_ELEMENT" : " LR1110_SE " ,
// Secure element is pre-provisioned
"SECURE_ELEMENT_PRE_PROVISIONED" : " ON " ,
// Region support activation, Select the ones you want to support.
// By default only REGION_EU868 support is enabled.
"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/Exemplo de pingue-pongue usando a modulação Lora para plataforma nucleol476 com escudo mbed lr1110mb1dis
// Place your settings in this file to overwrite default and user settings.
{
"cmake.configureSettings" : {
// In case your GNU ARM-Toolchain is not installed under the default
// path:
// Windows : No default path. Specify the path where the
// toolchain is installed. i.e:
// "C:/PROGRA~2/GNUTOO~1/92019-~1".
// Linux : /usr
// OSX : /usr/local
// It is required to uncomment and to fill the following line.
"TOOLCHAIN_PREFIX" : " /path/to/toolchain " ,
// In case your OpenOCD is not installed under the default path:
// Windows : C:/openocd/bin/openocd.exe
// Linux : /usr/bin/openocd
// OSX : /usr/local/bin/openocd
// Please uncomment the following line and fill it accordingly.
//"OPENOCD_BIN":"C:/openocd/bin/openocd.exe",
// Specifies the path to the CMAKE toolchain file.
"CMAKE_TOOLCHAIN_FILE" : " cmake/toolchain-arm-none-eabi.cmake " ,
// Determines the application. You can choose between:
// LoRaMac (Default), ping-pong, rx-sensi, tx-cw.
"APPLICATION" : " ping-pong " ,
// Select LoRaMac sub project. You can choose between:
// periodic-uplink-lpp, fuota-test-01.
"SUB_PROJECT" : " periodic-uplink-lpp " ,
// Switch for Class B support of LoRaMac:
"CLASSB_ENABLED" : " ON " ,
// Select the active region for which the stack will be initialized.
// You can choose between:
// LORAMAC_REGION_EU868, LORAMAC_REGION_US915, ..
"ACTIVE_REGION" : " LORAMAC_REGION_EU868 " ,
// Select the type of modulation, applicable to the ping-pong or
// rx-sensi applications. You can choose between:
// LORA or FSK
"MODULATION" : " LORA " ,
// Target board, the following boards are supported:
// NAMote72, NucleoL073 (Default), NucleoL152, NucleoL476, SAMR34, SKiM880B, SKiM980A, SKiM881AXL, B-L072Z-LRWAN1.
"BOARD" : " NucleoL476 " ,
// MBED Radio shield selection. (Applies only to Nucleo platforms)
// The following shields are supported:
// SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS(Default), SX1262MBXCAS, SX1262MBXDAS, LR1110MB1XXS.
"MBED_RADIO_SHIELD" : " SX1261MBXBAS " ,
// Secure element type selection the following are supported
// SOFT_SE(Default), LR1110_SE, ATECC608A_TNGLORA_SE
"SECURE_ELEMENT" : " SOFT_SE " ,
// Secure element is pre-provisioned
"SECURE_ELEMENT_PRE_PROVISIONED" : " ON " ,
// Region support activation, Select the ones you want to support.
// By default only REGION_EU868 support is enabled.
"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/ping-pong/ Os exemplos periodic-uplink-lpp e fuota-test-01 permitem redefinir o armazenamento NVM através da interface serial.
Para redefinir o conteúdo da NVM, é preciso pressionar as teclas do teclado ESC + N em um terminal serial.
O terminal serial mostrará o seguinte depois que as teclas do teclado ESC + N forem atingidas. Depois de redefinir o compensar final, o NVM limpo será usado.
ESC + N
NVM factory reset succeed
PLEASE RESET THE END-DEVICE