6 Comentários

Solução Bluetooth Comunicando com a Rede LoRaWAN

lorawan

Introdução

A Internet das Coisas (IoT em inglês, para abreviar) dispensa apresentações. E um dos seus aspectos que merece a nossa atenção por conta da importância é a conectividade. Em parceria com a uDEV e Vermont, a Silicon Labs ampliou a solução multiprotocolo adicionando o Stack LoRaWAN da Arm para plataforma mbed aos Microcontroladores de 32 bits junto com a solução Bluetooth para a América do Sul.

Neste artigo, que faz parte de uma iniciativa da Arrow e Silicon Labs para o mercado de IoT vamos mostrar como criar rapidamente uma solução com conectividade multiprotocolo Bluetooth e LoRaWAN utilizando-se placas de desenvolvimento da Silicon Labs e da Semtech interconectadas e combinadas com o recentemente lançado stack LoRaWAN.

O objetivo aqui é demonstrar um exemplo inicial simples a partir da biblioteca disponível com o mínimo de modificações. Fica fácil perceber que o projetista pode mergulhar no código com o nível de detalhes e a profundidade que desejar, criando soluções próprias bastante variadas com base neste material.

Este exemplo implementa um conjunto com as seguintes funcionalidades:

  1. Sensor de Temperatura e Umidade Silicon Labs Si7021.
  2. Interface Bluetooth para conectividade local baseado na família Blue Gecko EFR32BG13.
  3. Interface para endpoint LoRaWAN para conectividade em rede de longa distância com transceptor LoRa da Semtech SX1262

Com isso conseguimos que as duas grandezas lidas por um sensor local (Temperatura e umidade) sejam enviadas para a nuvem pelo protocolo LoRaWAN, enquanto você habilita ou desabilita pelo smartphone a comunicação de longa distância e lê as informações do sensor.

Benefícios do Uso da Solução Bluetooth + LoRaWAN

Temos diversas opções de comunicação no mercado, o que exige uma análise sistêmica bem detalhada para definir qual a melhor modelo de comunicação para sua aplicação.

A necessidade de termos acesso às informações tanto na nuvem quanto localmente é uma característica cada vez mais necessária.

Serviços como o comissionamento do nó sensor, geolocalização, update de software, coleta local de dados, configuração e outros, podem ser feitas localmente, usando o smartphone, sem a necessidade que, para execução destes serviços, o seu equipamento obrigatoriamente esteja conectado à internet.

A escolha desta abordagem significa que o projetista já fez uma série de análises e sabe que seu caso é adequado ao protocolo LoRaWAN e sabe que terá vantagens em manter um canal de comunicação com Bluetooth e quer ter tudo isso diretamente sob seu controle. Geralmente chega-se a estas decisões por conta de um ou mais dos seguintes requisitos de projeto:

  1. Necessidade de funcionalidades e integração em um nível não disponível em produtos do mercado (módulos ou sensores);
  2. Custo de produção agressivo, demandando o maior nível de otimização possível;
  3. Opção por manter flexibilidade para evoluções futuras do projeto

Obviamente muitos casos podem (e devem) ser resolvidos com outras abordagens, como o uso de um modem pronto ou uma solução integrada, mas se os pontos acima fazem sentido para você, este artigo é ideal e irá ajudá-lo a dar os primeiros passos.

Fundamentos Básicos

Vamos considerar muitas coisas como já conhecidas pelo público para abreviar o texto, mas que podem ser melhor exploradas conforme seja necessário ou interessante para cada um. Vamos deixar aqui uma lista de tópicos e links que podem e merecem ser explorados com a devida calma:

Sequência de videos sobre os fundamentos básicos da tecnologia LoRa.

Material de treinamento Bluetooth

Site da LoRa Alliance com detalhes sobre o padrão

Material sobre o stack em uso:

  1. https://os.mbed.com/docs/mbed-os/v5.13/reference/lora-tech.html
  2. https://os.mbed.com/docs/mbed-os/v5.13/reference/lorawan-configuration.html
  3. https://os.mbed.com/docs/mbed-os/v5.13/tutorials/LoRa-tutorial.html
  4. https://os.mbed.com/docs/mbed-os/v5.13/apis/lorawan.html
  5. https://os.mbed.com/docs/mbed-os/v5.13/apis/lorawan-api.html
  6. https://os.mbed.com/blog/entry/Introducing-LoRaWAN-11-support/

Hardware e Software Necessários

Para poder executar estas tarefas, você vai precisar do seguinte:

  1. Instalar no seu computador o conjunto de desenvolvimento da Silicon Labs:

   a. Simplicity Studio Version: SV4.1.11.2 (ou superior)

   b. Gecko SDK Suite v2.6.1: Bluetooth 2.12.1.0, Flex 2.6.1.0, MCU 5.8.1.0 (ou superior)

   c. GNU ARM v7.2.1 (ou superior)

2. Baixar o código exemplo a partir do github, especificamente o conjunto com Bluetooth no link.

3. Kit de avaliação Silicon Lab EFR32BG13 – Part Number SLWSTK6020B

Figura: Kit de avaliação Silicon Lab EFR32BG13 - Placa com Microcontrolador Bluetooth + Antena

4. Kit de avaliação Semtech para o SX1262 – Part Number SX1262MB2CAS

lorawan
Figura: Kit de avaliação Semtech para o SX1262 + antena

5. Interconectar as placas (seja por cabo, conforme detalhado adiante, ou com um adaptador próprio que foi desenvolvido pela Vermont)

6. Alguma infraestrutura LoRaWAN disponível. Pode-se optar por uma conta na rede pública do Brasil onde há cobertura. Em locais sem cobertura, é necessário conseguir um gateway e criar uma rede privada a partir de alguma das opções de Servidor de Rede disponíveis no mercado. Vamos assumir aqui a utilização da Rede Pública ATC disponível em muitas cidades do Brasil.

7. Instalar a aplicação Blue Gecko num smartphone iOS ou Android para ter controle sobre o conjunto no link. 

Diagrama de Blocos do Conjunto

Para facilitar o entendimento, colocamos aqui um diagrama de blocos de todo o conjunto:

Figura: Diagrama de Blocos do Conjunto - Solução LoRaWan + Bluetooth

Veja que o conjunto de HW e FW que compõe a solução conecta-se ao PC via USB para fornecer alimentação e porta de configuração e debug. Temos também sensores (umidade e temperatura) que interagem com o ambiente, e também as interfaces Bluetooth que está conectada a uma aplicação no celular e LoRaWAN, que se conecta à rede pública.

Instruções Passo a Passo

No diretório principal do repositório para o FW existe um arquivo PDF que explica praticamente todos os pontos que são necessários para poder usar esta versão do stack. Vamos passar aqui as principais orientações em detalhes, mas vale a pena ler o seguinte arquivo na íntegra e com calma:

Em linhas gerais esta é a sequência que deve ser seguida:

  1. Instalar todas as ferramentas no PC e no smartphone

2. Baixar o arquivo ZIP do github: Silabs-Blue-LoRaWan-Mbed-master.zip

3. Abrir o Simplicity Studio e importar o projeto conforme orientação do PDF

4. Modificar as configurações do projeto para o caso que iremos demonstrar

5. Compilar e gerar o binário pelo Simplicity Studio

6. Conectar todas as placas dos kits adequadamente

7. Iniciar o debug e executar o FW, habilitando a comunicação com o aplicativo Blue Gecko dentro do smartphone

É isso. Não precisa muito mais para conseguir um primeiro exemplo funcional e uma compreensão geral do que está disponível.

Configurações do Firmware - LoRaWan

Vamos assumir que os 3 primeiros passos foram feitos adequadamente de acordo com as orientações do documento principal.

A primeira mudança de configuração necessária fica no arquivo loraWAN.cpp, que seleciona a partir de 2 diretivas de compilação #if, qual o construtor do rádio será chamado. Como vamos usar uma placa com o SX1262, precisa ser chamado o construtor da classe SX1262_LoRaRadio para que o componente seja adequadamente utilizado, conforme a seguir:

A seguir, vamos modificar as configurações do padrão de rede.

Para poder ingressar numa rede LoRaWAN será necessário configurarmos uma série de detalhes. O mais importante é a geração de um conjunto de chaves para configurarmos adequadamente o FW. Neste exemplo vamos operar em Classe A e modo ABP. Isso simplifica bastante nosso exemplo.

Cada um dos identificadores e chaves possui uma razão de existir e regras específicas de como são obtidos. Apesar disso, muitos Network Servers aceitam valores que são gerados aleatoriamente, repetidos, etc. É importante ter em mente que para efeitos de testes, este tipo de liberdade não é um problema, mas que para o uso final, em produção, as regras específicas devem ser respeitadas, sob risco de conflitos entre dispositivos no campo.

O primeiro identificador que vamos escolher é o DevEUI. Ele é um endereço do espaço IEEE EUI-64. No nosso exemplo podemos escolher um valor arbitrário ou reaproveitar o próprio MAC address da interface bluetooth. Precisamos escolher também um AppEUI e assim por diante.

Com estes valores vamos configurar o Network Server para reconhecer o dispositivo e saber como tratá-lo.

Figura: Configurando o Network Server para os dispositivos Lora

Desta tela de configuração vamos observar os valores que foram usados para ESTE endpoint em questão. Para cada novo dispositivo, é necessário criar outros IDs e chaves, conforme cada uma das regras.

A seguinte lista de definições foi aplicada ao projeto para gerar este endpoint em particular:

Existe uma configuração específica do NS que merece atenção. O Strict Counter precisa ficar em Off, para permitir debug sem a inconveniência de resolver os contadores que deveriam seguir sua sequência indefinidamente, mas que acabam geralmente sendo zerados em tempo de desenvolvimento e confundem o NS:

Strict Counters como OFF

Outras definições importantes que precisam ser verificadas ou configuradas dos dois lados, começando com o lado do Network Server:

  • Activation: ABP (também pode ser OTAA)
  • Encryption: NSS (poderia ser no Aplication Server)
  • Class: A (poderia ser C, a classe B é pouco usada ainda)
  • Counter Size: 4 (poderia ser 2)
  • RX Window: AUTO
  • RX Delays 1 & 2: 5 e 6 s (decisão feita por conta das latências da infraestrutura de celular – backhaul do LoRaWAN - no Brasil)
  • Band: LA915-928A
  • ADR: ON (poderia estar em OFF)

E aqui o que deve ser verificado do lado do projeto para tudo ficar alinhado:

Estas definições configuram (na ordem acima) o FW em ABP, ativam somente 8 canais de uplink, deixam ADR ligado, seleciona a região como AU915 e finalmente opta pela versão 1.0.2 do protocolo LoRaWAN.

Também existe uma linha que define quais os canais estão em uso do total de 64+8 canais de uplink disponíveis no padrão geral. Usamos aqui somente 8 deles no momento.

No arquivo LoRaPHYAU915.cpp precisa modificar os seguintes defines para alinhar os Rx Delays com o que é usado na rede ATC:

Existe a opção de selecionar se as mensagens serão confirmadas ou não confirmadas, a partir da chamada da função loraWanClass_send no arquivo main.cpp.

Feitas estas configurações, o código está pronto para ser gerado e utilizado.

Conectando as placas

Os sinais que devem ser conectados entre as duas placas de desenvolvimento são detalhados no arquivo PinNames.h – ali está uma lista com os nomes dos sinais que precisam ser roteados da placa da Silicon Labs até o shield mbed da Semtech. No nosso exemplo, vamos nos preocupar com as conexões necessárias para o SX1262:

Existem duas opções de conexão mais diretas e rápidas:

  1. Ligação através de fios com terminais para barra de pinos, lembrando-se de conectar também a alimentação do shield com a alimentação da placa base da Silicon Labs.

2. Utilizar um adaptador próprio que a Vermont desenvolveu para deixar mais estável mecânica e eletricamente, conforme a foto a seguir:

LoRaWan
Figura: Placa desenvolvida pela Vermont para interconexão

O conjunto montado fica conforme a seguinte imagem:

LoraWan
Figura: Placas conectadas que compõem a Solução Bluetooth com Rede LoRaWAN

Executando o Exemplo

Estamos prontos para gerar o código. Na IDE do Simplicity Studio, chamamos o Build Project. Após compilar e gerar o binário, pode-se tanto rodar o FW a partir do debug, quanto gravá-lo diretamente para que seja executado de forma autônoma.

Para demonstrar o funcionamento simultâneo das duas interfaces, propositalmente o sensor não irá se comunicar por LoRaWAN ao iniciar o FW. Este processo só ocorre após ter sido estabelecida a conexão do smartphone via Bluetooth, com o aplicativo, que deve ser iniciado e conectado ao dispositivo, conforme as etapas exibidas na imagem a seguir:

LoraWan
Figura: Sensores conectados a rede LoRaWan

Após feita a conexão, o aplicativo irá mostrar a temperatura na sua tela principal e os leds da placa irão mudar de comportamento, sendo que o LED1 irá ficar acesso durante a conexão e o LED0 irá piscar conforme cada mensagem é enviada ao ar.

LoRaWan
Figura: Led da placa de desenvolvimento

Este comportamento é regido diretamente pelo trecho de código no arquivo main.c que usa um dos eventos originados pelo subsistema do Bluetooth para chamar a função que lê o sensor, preparar a mensagem e enviá-la para a rede LoRaWAN:

Apesar da função mencionar no nome apenas a medição da temperatura, logo acima é possível observar que ela também lê a umidade relativa, prepara o pacote e causa o envio da mensagem.

A partir daqui, no Network Server devem aparecer agora as mensagens que estão sendo recebidas pela rede pública:

Figura: Solução Bluetooth + LoRaWan

Parabéns! O exemplo conforme foi discutido até aqui está pronto e realiza a função básica de um nó sensor com conectividade Bluetooth e LoRaWAN.

Explorando outras Possibilidades

Podemos incluir inúmeras variações sobre cada uma das configurações, passando por:

  • Modificação de parâmetros de cada interface,
  • Novas formas de interação com o usuário,
  • Outros sensores,
  • Etc

Além disso, podemos por exemplo levar os dados a um Application Server e exibi-los de forma gráfica numa tela da web:

Figura: Application Service que exibe os dados da Solução Bluetooth + LoraWan

A partir daqui fica a cargo da criatividade do projetista quais as mudanças serão feitas e quais funcionalidades incluídas no projeto final.

Começando o Seu Projeto

Muitas coisas podem ser feitas por conta própria a partir do material aqui colocado. Mesmo assim, existem inúmeros pontos que podem correr mais rapidamente se você contar com um suporte dedicado e local.

Entre em contato conosco pelo eMail [email protected] e nos conte mais a respeito da aplicação que você quer desenvolver. Juntamente com a equipe da Arrow, teremos prazer em ajudá-lo a encontrar as respostas mais adequadas para o seu caso.

Dicas Práticas

Vale deixar umas dicas finais que apesar de óbvias, na correria muitas vezes são esquecidas. De forma geral, vale a regra do “vamos por partes”. Cada bloco de um sistema complexo traz consigo seus desafios. O que ninguém precisa é de excesso de surpresas e variáveis para tumultuar os primeiros trabalhos.

Isso significa inserir elementos novos um por um sobre uma base anterior já dominada. Avançar em etapas pode parecer mais lento, mas ao final chega-se ao resultado final completo com menor estresse. Aqui o investimento em tempo se paga mais tarde, sem sombra de dúvidas.

  1. Sempre que for modificar trechos relacionados a RF ou tiver dúvidas se algo não está bem neste aspecto, utilize algum método para monitorar o espectro. Geralmente um SDR (como o RTL-2832U) de baixo custo resolve boa parte das dúvidas.
  2. Comece fazendo a ativação no modo ABP, mesmo que seu objetivo final seja OTAA. Garanta que o que é simples funciona e depois teste o caso mais complicado.
  3. Utilize primeiro o próprio Networks Server para ver os dados chegando. Depois parta para o uso de um Application Server, sabendo que as camadas anteriores foram resolvidas.
  4. Procure o suporte sempre que houver alguma dúvida ou impasse. Muitos problemas já foram enfrentados por alguém e isso pode poupar tempo precioso.

Se você está iniciando um projeto e precisa de ajuda sobre como obter qualquer dos itens detalhados acima, entre em contato conosco ([email protected]).

Links principais - Bluetooth, Lorawan e Placas

Deixaremos aqui os links para os materiais diversos que são base deste trabalho. Embora o conjunto utilizado seja de uma placa Blue Gecko com o SX1262, outras combinações são possíveis. Existem placas e repositórios prontos para algumas delas. Para o que não está 100% pronto na forma de exemplo, também é possível realizar adaptações do material e expandir as possibilidades.

(*) Este post foi patrocinado pela Arrow e Silicon Labs.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Internet Das Coisas » Solução Bluetooth Comunicando com a Rede LoRaWAN
Comentários:
Notificações
Notificar
guest
6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rodrigo Duarte Pechoneri
Rodrigo Duarte Pechoneri
05/05/2020 11:50

Bem interessante o artigo.

Fabio
Fabio
06/02/2020 16:39

Muito bom Cláudio! Além da qualidade do artigo , o fato de ter esta solução no Brasil é otimo! Podemos colocar esta configuração de Dashboard que você montou aí já pronta na TagoIO (www.tago.io) para o pessoal trabalhar em cima. Me contacta e fazemos isto. Abraços

Claudio Sonaglio
Claudio Sonaglio
Reply to  Fabio
17/02/2020 15:48

Exatamente, Fábio! Vamos conversar sobre esta opção. Abraços!

Wellington Bianchini
03/02/2020 09:52

Parabéns pelo artigo Cláudio! IOT está fervendo...muito boa essa combinação Bluetooth+LoraWan...

Claudio Sonaglio
Claudio Sonaglio
Reply to  Wellington Bianchini
03/02/2020 12:38

Obrigado, Wellington! Uma honra poder trazer algo de diferente e relevante para o mercado.

Talvez você goste:

Séries

Menu

WEBINAR
 

Soluções inteligentes para acionamento de MOSFETs/IGBTs com família STDRIVE

Data: 08/10 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link