Módulo LoRaWAN da Radioenge Tutorial Completo

O módulo LoRaWAN da Radioenge é uma placa de fabricação nacional e homologada que pode ser usada com qualquer microcontrolador ou microprocessador através de comandos AT via porta serial.

1 O que é LoRaWAN?

O LoRaWAN é um protocolo que desenvolvido para aumentar o alcance da rede LoRa e utiliza nós em estrela para diminuir ao máximo o consumo da bateria, de modo que os ‘end nodes’ fiquem dedicados exclusivamente em enviar ou receber pacotes em alguns casos. Todos os pacotes são recebidos ou enviados através do ‘concentrador/gateway’ que fica ligado 24h por dia.

Demonstração da estrutura do LoRaWAN
Fonte: Robocore

O concentrador possibilita um menor consumo de energia se comparado com outros protocolos, pois fica sempre disponível para a escuta dos pacotes dos ‘end nodes’, tendo uma comunicação muito curta e rápida que evita ao máximo consumos desnecessários, claro que com uma boa configuração do módulo LoRaWAN.

Quem trata os dados, destina os pacotes e controlar toda aplicação é o ‘network server’. Ele é toda parte administrativa da rede e é nele que tem que ser configurado de como deve ser separado os bytes para enviar para uma API onde se comunicará consumidor da API, podendo ser um usuário ou uma outra aplicação como aplicativo ou sites por exemplo.

2 Diferença do LoRaWAN para LoRa Mesh da Radioenge

No LoRa mesh da Radioenge todos os dispositivos atuam como um repetidor, recebendo o pacote e reenviando até chegar o destinatário. Além disso, uma outra característica bem marcante é que não é necessário o uso de um hardware concentrador, pois qualquer módulo LoRa mesh pode ser configurado como master.

Estrutura de rede LoRa Mesh

A grande diferença do LoRaWAN para o LoRaMESH é que no mesh os próprio módulo pode ser um master e gerenciar a própria rede e no LoRaWAN isso não é possível. O gateway tem um hardware completamente diferente dos end device e sua estrutura exige uma capacidade de processamento maior que um microcontrolador não é capaz de suprir, por isso o uso de um Raspberry Pi.

Estrutura LoRaWAN com exemplo dos módulos LoRaWAN da Radioenge

O concentrador é um dos principais diferenciais do LoRaWAN, porém pode ser considerado um dos principais problemas, pois sem ele não é possível utilizar os end devices, pois como já foi dito, um módulo não é capaz de atuar como master.



Porém ele não é tão problemático assim, apenas para regiões que não possuem cobertura LoRaWAN e não tem condições financeirias para estar montando um gateway LoRaWAN do zero.

3 Cobertura LoRaWAN

Existem praticamente três métodos distintos de ter uma cobertura LoRaWAN na sua localidade para que seja possível utilizar os end devices, esses métodos são:

3.1 Utilizando a rede colaborativa de LoRaWAN

Uma das melhores formas de ter cobertura LoRaWAN é através da rede colaborativa da The Things Network que possui inúmeros gateways espalhados pelo mundo e já cobriu toda cidade de Amsterdam-Holanda.

Porém no Brasil a cobertura estar avançando aos poucos, mas já apresenta alguns resultados mais expressivos na região sul e sudeste do país. ainda assim não é nada se comparado com toda extensão territorial do Brasil.

Cobertura LoRaWAN da TTN

Mesmo que sua região tenha um gateway colaborativo e mesmo que tenha possa ser que o concentrador em especifico não fique online 24h por dia, 7 dias na semana, pois a pessoa ou instituição que disponibiliza tem que arcar com todo o hardware e também o consumo dele.

3.2 Método de “rede pública” da American Tower

Caso sua região não tenha um gateway da TTN disponível ou parcialmente disponível, te restará duas opções para que consiga usar o LoRaWAN, a primeira é ver se na sua região tem “gateway público” disponibilizado pela American Tower, se tiver você terá que ver qual provedora se adequa melhor para sua aplicação.

O problema é que a grande maioria das provedoras são para pessoa jurídica e as de pessoa física tem limitações de consumo e para as pessoas que estão estudando acaba sendo um fator muito limitante para os experimentos.

Cobertura de LoRaWAN da American Tower


Porém usar os gateways disponibilizado pela American Tower só é válido para regiões que tem uma cidade bem desenvolvida e mesmo nessas cidades pode haver uma área de sombra. Caso sua localidade não esteja no alcance do concentrador, você terá que partir para a opção de ter o próprio gateway.

3.3 Criar sua própria cobertura LoRaWAN

Umas das melhores formas de ter a cobertura LoRaWAN é através do próprio gateway, pois com ele você não só consegue ter a cobertura, como também consegue servir a múltiplos network server, na imagem a seguir é possível ver isso.

Este método é o mais trabalhoso e mais caro, porém é o método que vai te proporcionar maior liberdade em absolutamente tudo te possibilitando até mesmo criar um network server próprio através do Chirpstack.

Multi direcionamento do gateway LoRaWAN da Radioenge para o network server da TTN e ChirpStack

Para montar um gateway é necessário ter o hardware concentrador e um Raspberry Pi ou Banana Pi. A Radioenge também fabrica e vende o hardware concentrador homologado pela Anatel e para nossos foi utilizado ele junto com um Banana Pi M2 Zero.

Gateway da Radioenge com Banana Pi e módulo LoRaWAN da Radioenge com ESP32.

4 Características do módulo LoRaWAN da Radioenge

As características deste módulo é muito similar ao do mesh, pois é o mesmo hardware, sendo diferenciado apenas no firmware. Por isso há pequenas diferenças no uso e no comportamento do módulo. A principal diferença entre eles é que o mesh usa tratamento de bytes em sua comunicação e no WAN usa comandos AT.

Pinout do módulo LoRaWAN da Radioenge

4.1 Pinout

Diferentemente do LoRa Mesh que tem duas UART, neste caso só tem uma UART e os pinos da UART transparente se tornou mais duas GPIO ficando com um total de 10. Além disso, este módulo tem mais funcionalidades em termos de GPIO se comparado com o modelo mesh, pois tem como configurar interrupções, na parte de configurações será abordado esse ponto.

Pinout do módulo LoRaWAN da Radioenge.


4.1.1 Tensão

Uma das características deste módulo que é muito vantajosa, é a tolerância de tensão acima de 3.3v, que é a tensão do microcontrolador on-board.

limite de tensão do módulo LoRaWAN da Radioenge

É interessante observar que a tensão máxima da comunicação UART nesse módulo por padrão é 5V, no caso do mesh a tensão mudava de 3V3 para classe A e 5V para classe C, aqui independente da classe o limite máximo é 5V.

4.2 Aplicação de baixo consumo

Assim como no mesh o LoRaWAN segue as mesmas regras de baixo consumo, uma via comandos AT e outra via hardware, a única diferença está no comportamento do módulo na classe A e C.

4.2.1 Via comandos AT

O módulo para entrar em baixo consumo de energia tem que está na classe A, neste modo ele não recebe pacotes a menos que o próprio módulo inicie a comunicação com o servidor e para receber os pacotes terá que estar na janela Rx1 e Rx2 que são as janelas de escuta do módulo.

Em classe C o rádio pode escutar a qualquer momento mas não fica em modo de economia de energia e só pode escutar através da janela Rx2, diferente da classe A.

Como este LoRa Mesh é um módulo para inúmeras aplicações, já vem preparado para aceitar uma tensão de alimentação de até 16v para sair 3.3v no barramento da placa.

4.2.2 Via Hardware



O regulador de tensão que faz esse gerenciamento da tensão de entrada, mas o próprio regulador consome também, mas se a tensão da sua aplicação já for 3.3v, não há necessidade do uso de regulador.

Por isso a Radioenge colocou um forma de fazer um bypass do regulador, para isso, basta remover o regulador (retângulo A) e adicionar um resistor de 0R 0402 no retângulo B.

Bypass do regulador de tensão do LoRaWAN da Radioenge

Ao fazer isso, você estará sujeito a perder a placa caso a tensão de alimentação ultrapasse 4v.

Há também 3 LED’s que servem para sinalização de alguns comportamentos do módulo, porém no caso da ‘classe A’, não cheguei a testar se os LED’s permanecem funcionando, caso permaneça, dessolde eles para economizar ainda mais energia.

4.2.2.1 Observação

Não adianta configurar classe e fazer o bypass se não configurar a comunicação do rádio para a menor transmissão possível, pois quanto mais transmitir, maior será o consumo.

4.3 LEDs de sinalização

Diferentemente do LoRaMESH os LED’s deste módulo são significativamente bem menos ativo e só se manifestam quando ocorre alguma funcionalidade lista a baixo.

LED's de sinalização presentes no LoRaWAN da Radioenge

4.3.1 Funções do LED’s

  • Vermelho: Pisca quando ocorre alguma transmissão via rádio. Se piscar durante a inicialização, indica classe A;
  • Verde: Pisca duas vezes quando ocorre alguma recepção via rádio. Se piscar durante a inicialização, indica classe C;
  • Amarelo: Pisca sempre que receber algo via serial de comandos.


O LED’s vermelho e verde seguem rigorosamente suas funcionalidades, porém o LED amarelo não se manifestou em nenhum dos testes que foi feito, mas sua funcionalidade de piscar quando recebe comando na serial estava foi passada para o LED verde. Isso provavelmente é algum bug na versão do firmware, a versão abordada durante os testes foi a 13B…

5 Como configurar o módulo LoRaWAN da Radioenge

Para configurar o módulo LoRaWAN da Radioenge é somente via porta serial, no LoRaMESH por exemplo é possível configurar um módulo a distância, porém nesse caso não é possível. A configuração pode ser feita de forma manual através do aplicativo disponibilizado pela Radioenge ou via biblioteca que criamos para Arduino IDE.

App de configuração dos módulos LoRaWAN

Vamos primeiramente entender como essa configuração poderá ser feita manualmente, para isso você vai precisar de um conversor USB serial de tensão de 3V3 e o motivo de ser 3V3 você entenderá ao decorrer da leitura. Neste exemplo optei por utilizar esse FTDI para fazer a comunicação, veja que há um jumper, você deve por o jumper em 3V3.

Conversor USB serial FTDI

Para utilizarmos o aplicativo é necessário antes de mais nada, ter o próprio aplicativo baixado em seu computador windows, para isso basta clicar aqui e fazer download. Após isso, selecione a porta COM respectiva ao LoRaWAN e clique em “Conectar ao MOTE”, também selecione o baudrate em 9600.

Primeira conexão do módulo LoRaWAN da Radioenge com o app de configuração

Logo após ter conectado, todos os outros parâmetros serão liberado para uso, primeiramente vamos nos concentrar nas configurações destinadas exclusivamente para o LoRAWAN.

É extremamente importante que você tenha noções básicas sobre a The Things Network (TTN), pois usaremos esse network server como exemplo, caso ainda não saiba usar e configurar basta clicar aqui.

5.1 Parâmetros de conexão LoRaWAN

O LoRaWAN utiliza seis parâmetros distintos que são destinados a dois métodos de conexão com o network server, o primeiro é o OTAA e o segundo é o APB. O bom é que a própria Radioenge já ordenou esses parâmetros no próprio aplicativo, não estão legendados, mas a divisão está exata, olhe só essa imagem abaixo.

Métodos de conexão do LoRaWAN


5.1.1 Get

Primeiramente vamos consultar o valor de cada um desses parâmetros e deixar anotado, pois isso será necessário posteriormente para fazer as conexões com o servidor. Desses 6 parâmetros, apenas um vem zerado, que no caso é o DevAddr que deve ser gerado pelo servidor. Após fazer todas as consultas, foram esses os valores retornados:

  • AppEUI/JoinEUI: 214707355ED3A3A0;
  • DevEUI: 0012F80000001E62;
  • DevAddr: 260D4259;
  • AppKey: 50D1AD39E5B3A6FCFFDB3EA63EE65AA4;
  • AppSKey: 214707355ED3A3A05A1EFFCC152B1BB8;
  • NwkSKey: B2961704ED23B371EA6E0F9DA67A2B88.

5.1.2 Set

Para mudar qualquer parâmetro, com exceção do DevEUI, basta pegar valor de cada parâmetro e colocar um separador “:” entre cada byte, caso contrário a gravação não ocorrerá. Veja só como ficaria:

  • AppEUI/JoinEUI: 21:47:07:35:5E:D3:A3:A0;
  • DevEUI: 00:12:F8:00:00:00:1E:62;
  • DevAddr: 26:0D:42:59;
  • AppKey: 50:D1:AD:39:E5:B3:A6:FC:FF:DB:3E:A6:3E:E6:5A:A4;
  • AppSKey: 21:47:07:35:5E:D3:A3:A0:5A:1E:FF:CC:15:2B:1B:B8;
  • NwkSKey: B2:96:17:04:ED:23:B3:71:EA:6E:0F:9D:A6:7A:2B:88.

5.1.2.1 Por que tem que usar o separador?

Colocar o separador pode ser uma tarefa chata e desnecessária para alguns e certamente você pode ter se perguntado o porquê do uso do “:” entre cada byte. Também fiz essa mesma pergunta, mas após pensar um pouco entendi o motivo.

Tanto o LoRa mesh como também o LoRaWAN são camadas adicionadas via microcontrolador, tanto é que ambos tem o mesmo hardware, porém para os parâmetros serem armazenados de modo que não seja volátil é necessário que fiquem alocados na EEPROM ou Flash do microcontrolador.

No entanto, não é possível pegar o valor bruto de algum parâmetro desses e armazenar diretamente na memória sem que eles sejam fatiado por bytes.

Se pegarmos o datasheet do STM32L071CZT6 que é o microcontrolador deste módulo, logo na primeira página podemos visualizar a quantidade de bytes presentes na EEPROM.

Tamanho da EEPROM do microcontrolador presente no módulo LoRaWAN da Radioenge

O valor de 6KB representa que há 6 mil slote de um byte, mas cada byte tem sua limitação de 0 a 255 em decimal e em hexadecimal seria de 0x00 a 0xFF, então cada separador “:” está delimitando cada byte e o armazenamento fica de um slot X a um slot Z.



Para exemplificar melhor, vamos pegar o parâmetro DevEUI e mostrar como isso ficaria armazenado na EEPROM slote a slote, como DevEUI usa 8 bytes, já sabemos que será consumindo 8 slotes, veja só como isso ficaria:

SloteValor armazenado
00x00
10x12
20xF8
30x00
40x00
50x00
60x1E
70x62

Como ficaria a gravação dos outros parâmetros? Os outros parâmetros iriam iniciar um slote seguinte do ultimo slote usado, como o DevEUI terminou em 7 e para gravar o AppEUI iria do slote 8 a 16 e assim sucessivamente.

5.1.2.1.1 Método alternativo sem uso de separador

Entendendo a importância do uso de separador você pode estar si perguntando também se não há outro método de fazer essa separação sem a necessidade de usar um caractere separador. E sim, tem como.

Para a fazer essa separação basta criar um laço for com o comprimento do texto e fazer uma contagem até dois e fazer um incremento do caractere “:” ou salvar na EEPROM.

Como não tenho acesso ao firmware do módulo LoRaWAN da Radioenge, não é possível fazer com que salve diretamente na EEPROM, então vamos apenas adicionar o caractere “:” para delimitar o espaço de cada byte. Então fiz um callback que recebe o parâmetro e adiciona o separador, veja como ficou o resultado:

Exemplo de código separador de byte

O callback adicionaos separadores se a quantidade de caracteres do texto sejam número par, caso conrário ele retornará o mesmo valor de entrada que se enviado para o módulo retornará um erro. Esse callback foi adicionado na biblioteca e também pode receber textos já com o separador.

5.2 Mascara do canal

A mascara do canal é um parâmetro complementar aos parâmetros anteriores, pois através deste parâmetro que é especificado quais canais e suas respectivas frequências serão trabalhadas para se comunicar com o network server. Cada network server usa uma mascara especifica e outros usam a mesma mascara, veja só:

Mascara do canalNetwork server
ff:00:00:00:00:00:00:00:00:02:00:00ChirpStack & The Things Network
00:ff:00:00:00:00:00:00:00:01:00:00Everynet

Por padrão já vem definido como a primeira mascara, por issonão é necessário gravar para a maioria das aplicações, que são usando a The Things Network ou o Chirpstack.



5.3 Delay’s e janelas

Os delays e janela são extremamente importantes para sincronizar a comunicação do servidor com o módulo. Os delay’s de RX são parâmetros que indicam o tempo em que o end device entrará na janela, e a janelas é o tempo disponível para receber algum pacote do network server.

Por isso ter esses parâmetros configurados de forma errada trará problemas de comunicação, pois os tempos estarão diferentes e logo não terá sincronismo com o network sever.

Imagem ilustrando como funciona os delays e janelas do LoRaWAN

5.3.1 RX1/JN1

RX1/JN1 delayNetwork server
1000ChirpStack & The Things Network
5000Everynet

5.3.2 RX2/JN2

RX2/JN2 delayNetwork server
2000ChirpStack & The Things Network
6000Everynet

5.4 Classes

Este módulo trabalha com duas classes, a classe A e a classe C assim como o LoRaMESH e as regras são literalmente as mesmas, por isso é extremamente importante tomar cuidado com as tensões da comunicação UART.

Tensão de funcionamento para as duas classes do LoRaWAN

5.4.1 Classe A

A classe A é ideal para quem pretende ter um baixo consumo de energia e por consequência não ficará com o rádio ligado toda hora, o que impossibilita o recebimento de pacotes do servidor a qualquer hora, só é possível receber quando o próprio módulo inicia a comunicação.



Os pacotes podem ser recebidos tanto na janela RX1 como na RX2. Além disso o método de conexão com o network server fica limitado a OTAA (Over The Air Activation).

5.4.2 Classe C

Na classe C o módulo fica o tempo todo ligado e por isso não é recomendado para quem busca baixo consumo de energia, neste modo apenas só será possível receber pacotes através da janela RX1 e o método de conexão com o network server é o APB (Activation By Personalization).

5.5 Configuração da GPIO do módulo LoRaWAN da Radioenge

Uma das coisas mais interessantes é a possibilidade de usar o módulo de forma isolada sem a necessidade de um microcontrolador externo. No LoRa mesh da Radioenge por exemplo é possível fazer leitura e acionamento remoto através do master, mas no LoRaWAN isso não é possível, porém este módulo tem a opção de configurar interrupções.

Funcionalidades da GPIO do módulo LoRaWAN da Radioenge

Essas interrupções que ficam disponíveis em seis GPIO’s possibilita que através de um pulso digital o módulo mande um pacote para o network server com os seguintes parâmetros:

Pacote enviado pós interrupção gerada via GPIO

O interessante é que é possível por os seis pinos com seis sensores distintos, pois cada interrupção levará no pacote o pino que gerou a interrupção, dessa forma é possível diagnosticar qual sensor foi ativado.

6 Conexão com o servidor The Thing Network

Antes de fazer a conexão com a The Things Network é necessário configurar todos os parâmetros anteriormente citado, porém destinado para a TTN. Como a TTN só disponibiliza o modo conexão APB após a primeira conexão, então teremos que fazer inicialmente a conexão via OTAA por isso a escolha da classe terá que ser a classe A.

Parâmetros de conexão LoRaWAN via OTAA para a TTN


7 Módulo LoRaWAN da Radioenge e ESP32

Neste exemplo vamos utilizar o ESP32 para fazer a comunicação com o módulo LoRaWAN da Radioenge, mas é possível usar o Arduino como microcontrolador, porém é interessante por um conversor de nível lógico ou um divisor de tensão do TX do Arduino para o RX do módulo.

Pois como vimos anteriormente, vamos ter que trabalhar com classe A e logo a tensão será de 3V3 na UART e como o ESP32 já trabalha com 3V3, não será necessário por nada entre o módulo e o ESP.

7.1 Ideia da aplicação

Para demonstrar o funcionamento do LoRaWAN por completo, vamos utilizar um código exemplo da biblioteca e nesse código ele vai fazer toda configuração do módulo para se conectar na TTN e por fim vai enviar um texto “elcereza.com”. Após isso o ESP32 vai ficar acionando via comandos AT a GPIO 2 do módulo.

Porém nada disso vai funcionar se caso você não tenha seguido o passo a passo da The Things Network, a única coisa que vai funcionar sem a conexão com a TTN é o LED da GPIO2 do módulo.

7.1.1 Diagrama do End Device

Como já foi dito, o ESP32 trabalha com a mesma tensão da UART em classe A e além disso o ESP tem uma UART disponível para uso, porém no Arduino a depender do modelo será necessário usar o SoftwareSerial para simular uma serial na GPIO.

Módulo LoRaWAN da Radioenge com ESP32

7.1.2 Código do End Device

O código a seguir utiliza a biblioteca LoRaWAN_Radioenge.h que está disponível para download via GitHub. Este exemplo já faz toda configuração automática do módulo, ou seja, todos aqueles parâmetros que foi visto já é configurado sozinho.

#include "LoRaWAN_Radioenge.h"

LoRaWAN_Radioenge LoRa(&Serial2);

void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);
  
  LoRa.begin(true);
  LoRa.printParameters();

  if(LoRa.JoinNetwork(OTAA, TTN, true, !true)) 
    LoRa.SendString("elcereza.com", 1);
  
   LoRa.pinMode(2, OUTPUT);
}

void loop() {
  LoRa.digitalWrite(2, 1);
  delay(5000);
  LoRa.digitalWrite(2, 0);
  delay(5000);
}

7.1.3 Teste Prático na Bancada



No lado esquerdo do vídeo é possível ver o funcionamento da biblioteca realizando todas as consultas para ver se está dentro dos parâmetros para o network server definido e logo após o módulo envia o texto “elcereza.com”.

Logo após ser enviado, o pacote é recebido e fica dentro de um parâmetro “frm_payload” do json, porém esse pacote recebido está em base64 e ficar legível é necessário fazer a conversão de base64 para string.

Essa conversão pode ser feita de forma automática, porém essa tarefa é um pouco detalhosa e por isso é necessário abordar isso em outro post.

8 Boas Práticas

Rádios são feitos para usar antenas, então não ligue seu LoRa sem ter conectado uma antena. Outra coisa, a antena tem que ter 50R e só pode usar uma saída por vez.

Além disso, dê preferência em trabalhar com os microcontroladores em tensão de 3V3 e alimente o rádio com a mesma tensão, pois uma hora ou outra você vai acabar usando a conexão via OTAA.

9 Agradecimento

Primeiramente gostaria de agradecer a Radioenge por ter reconhecido meu trabalho com o LoRaMESH e entrou em contato comigo para eu fazer conteúdo sobre LoRaWAN e me enviou dois módulos LoRaWAN, um gateway e uma antena.

Também não poderia deixar de mencionar o Adail Silva que foi meu mentor que me ajudou a instalar todas as dependências para o gateway se comunicar com o Banana Pi M2 Zero, sem isso não seria possível fazer nada disso, pois na região metropolitana da Bahia – Brasil não há cobertura da TTN e a ISO disponibilizado pela Radioenge não é compatível para Banana Pi.

10 Opinião Pessoal Sobre o módulo LoRaWAN da Radioenge



Este módulo LoRaWAN são muito simples de serem utilizados e todo o funcionamento é bem enxuto e alinhado ao datasheet, a única coisa que fugia do que estava no datasheet era a funcionalidade do LED amarelo que foi “passado” para o LED verde.

Deixe uma resposta

Descubra mais sobre elcereza

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading