Setup LoRa com Arduino, Raspberry Pi e shield Dragino

Setup LoRa

Introdução

A Internet das Coisas (Internet of Things ou IoT) é um conceito que existe desde 1985 e pode ser definido como a integração de pessoas, processos e tecnologia com dispositivos e sensores conectados capazes de habilitar monitoramento remoto, status, manipulação e avaliação de tendências desses dispositivos. Sendo assim, IoT é uma das novas tecnologias com maior potencial de impacto social e econômico nos próximos anos. A integração de objetos à Internet permite a criação de aplicações inovadoras, capazes de monitorar e atuar em sistemas complexos e, com isso, possibilitar uma nova evolução tecnológica no que diz respeito à facilitação de controles que necessitam de transmissão sem fio.

As tecnologias de IoT, como por exemplo LoRa, Sigfox, RPMA e Weightless, utilizam protocolos de comunicação para conexão com a Internet. Estes protocolos visam implementar redes de Low Power Wide Area Network (LPWAN), onde o baixo consumo de energia e a escalabilidade, em termos do número de nós, são requisitos fundamentais.

LoRa (Long Range ou longo alcance) é uma técnica de modulação patenteada pela empresa francesa Semtech. A técnica baseia-se em espalhamento espectral Chirp e opera nas faixas sub-GHz, podendo ser utilizada na banda Industrial Scientific and Medical (ISM). LoRa oferece taxas de transmissão de 290 bps a 50 kbps, o que pode ser suficiente para a transmissão de dados de monitoramento ou de imagens de baixa resolução com pacotes de até 255 bytes e operando em larguras de bandas de 125, 250 ou 500 kHz. O alcance da tecnologia é de aproximadamente até 5 km em áreas urbanas, 15 km em áreas rurais e 30 km na superfície da água.

LoRaWAN, por sua vez, é a especificação da pilha de protocolos em que LoRa é utilizado na camada física.

Neste artigo será abordado um método de comunicação configurável pelo LoRaWAN capaz de avaliar a funcionalidade prática da tecnologia por um baixo custo. A Figura 1 mostra o setup que será utilizado e detalhado mais adiante. O investimento total foi de R$290,00.

Setup de baixo custo para avaliação do LoRa.
Figura 1 – Setup de baixo custo para avaliação do LoRa.

Desenvolvimento

O desenvolvimento para prototipação consiste em integrar a shield Dragino com o módulo nó sensor, responsável pela captura dos dados ambientais (que neste caso foi utilizado um Arduino com um sensor de temperatura LM35) e também com um nó gateway montado com outra shield Dragino e um Raspberry Pi 3.

O passo a passo da configuração segue abaixo.

1) Plugar os conectores tipo macho-fêmea entre o Dragino e o RPi conforme descreve a imagem e a tabela abaixo.

Conexões do Shield Dragino e da Raspberry Pi.
Figuras 2 e 3 – Conexões do Shield Dragino e da Raspberry Pi.

Tabela 1 – Designação de pinos entre o Dragino e o Raspberry Pi

Nas Figuras 2 e 3, em amarelo não consta a pinagem do RPi, mas sim o diagrama conforme feita a conexão no Dragino. A pinagem correta está descrita na Tabela 1 pela coluna “Pino RPi”.

Após as conexões, basta rosquear a antena no local indicado pela seta roxa.

No RPi, plugar via USB um teclado e um mouse, assim como um cabo HDMI a um monitor para amostragem dos dados. Se não foi feita a conexão cabeada pela rede LAN, configurar o RPi para utilizar o Wi-Fi.

2) Após todas as conexões entre o Dragino e o RPi, deve-se realizar a programação do RPi via terminal de comandos.

A primeira tarefa baseia-se em clonar o diretório do software que o Gateway irá executar:

Depois, uma vez que necessitamos da comunicação síncrona serial entre os hardwares, é necessário habilitar o SPI e reiniciar o RPi:

Para que se consiga controlar os pinos GPIO do RPi é necessário executar o comando a seguir:

No arquivo principal que foi clonado, alguns ajustes devem ser feitos para melhor adequação ao cenário Brasileiro. Assim, o arquivo fonte principal deve ser acessado e então alterado conforme abaixo:

As configurações que precisam ser feitas são no fator de espalhamento, que varia entre 7 e 12 (com limitações de 7 a 10 para 915 MHz devido ao dwell time) e a frequência de operação. Por padrão, os pinos de habilitação do transdutor são clonados já com as definições corretas para o uso no RPi e, portanto, a sequência para ssPIn, dio0 e RST mantêm-se em 6, 7 e 0.

A localização geográfica que o Gateway irá situar-se também pode ser parametrizada nesta etapa:

Após, deve ser direcionado um servidor e uma porta válida para conexão do RPi com a rede. Este servidor varia de acordo com o arquivo principal clonado e o próprio Dragino estabelece alguns servidores disponíveis.

Por fim, caso alguma modificação foi feita no arquivo principal, o comando abaixo deve ser realizado para executar o software.

Caso tudo esteja configurado de acordo com as características do hardware utilizado, ao executar o programa, o gateway estará apto a receber pacotes de qualquer nó que estiver enviando, além de mostrar a frequência de operação que está trabalhando e o fator de espalhamento. Outras informações, como o endereço identificador do gateway e dados de recebimento de pacotes, também podem ser consultados pelo RPi, embora as informações sejam melhor visualizadas no servidor em nuvem que o sistema irá interagir.

3) No que diz respeito à conexão do Dragino ao Arduino, basta que se encaixe cuidadosamente a shield de modo que todos os pinos fiquem conectados nos respectivos locais. Após, o cabo USB deve ser plugado no Arduino e conectado ao computador para que possa ser realizada a programação pela interface de desenvolvimento. Para comprovação dos testes de sensoriamento remoto com o LoRa, inseriu-se o sensor de temperatura LM35, alimentado com 5 V e programado pelo pino analógico 0 do Dragino. Deve-se ajustar as configurações de fator de espalhamento no nó sensor da mesma forma que foi realizada para o gateway.

As linhas de código utilizadas para o nó sensor podem ser conferidas no APÊNDICE (créditos: Thomas Telkamp e Matthijs Kooijman) mas algumas observações devem ser levadas em consideração para o nó sensor:

  • No código fonte, o LM35 foi estabelecido como ponto de exemplo para auferir a temperatura, entretanto qualquer outro tipo de sensor cuja informação captada seja de baixa taxa de bits também poderia ser utilizado. A limitação de canal, contudo, foi feita para que o nó sensor só canalize os dados obtidos e transmita em uma única frequência.
  • A biblioteca utilizada é a <lmic.h> e nos subdiretórios desta biblioteca, o arquivo config.h deve ser alterado para a padronização brasileira.
  • No arquivo lorabase.h, a frequência de operação correta também deve ser ajustada.
  • Na linha 760 do arquivo limic.c deve ser ajustada a divisão de canais para usos futuros.
  • Deve ser realizada a limitação no número de canais de transmissão caso não haja muitos uplinks ou downlinks. Para o simples sensoriamento remoto de um nó, um canal é suficiente para averiguar as condições ambientais e enviar a um gateway conectado à nuvem. Logo, é preciso desabilitar todos os canais que não estão em uso uma vez que se isso não for feito, o transmissor tentará enviar pacotes em todos os canais existentes enquanto que o receptor só estará apto a operar em um canal.

4) Para configurar o servidor em nuvem que irá fazer a amostragem dos pacotes recebidos, os passos a seguir devem ser considerados. É importante salientar que o servidor não faz nenhuma atuação de resposta, mas pode ser associado a algum atuador em outras aplicações capaz de assim fazê-lo.

Primeiramente, é preciso acessar a plataforma The Things Network e efetuar um cadastro e login.

Na tela inicial, são mostradas duas abas que precisam ser ajustadas: Applications e Gateways.

Em Gateways, deve-se registrar o RPi com o módulo Dragino para torná-lo integrado no servidor. Algumas informações básicas como nome do gateway, região e frequência de operação devem ser configuradas de acordo com o identificador do RPi programado previamente.

De maneira similar, em Applications é feito o registro dos nós que constituem todo o sistema, de modo que cada um tenha um registro único e atrelado ao seu respectivo código fonte no Arduino. Este registro é composto por três chaves geradas pelo servidor: Device Address, Network Session Key e App Session Key.

Os pacotes recebidos, enviados e seus respectivos detalhamentos de transmissão podem ser consultados nas abas de Traffic no servidor. O tempo de duração no ar que um pacote levou para ser enviado de um nó sensor até um gateway, a frequência de operação que este sistema está operando, o coding rate (CR), fator de espalhamento, largura de banda, identificador do nó e tamanho do pacote podem ser verificado nas abas de gerenciamento do servidor.

Também é possível visualizar os detalhes da transmissão de cada pacote que foi recebido pelo gateway. Neste teste foi criado um nó sensor da aba Applications e gerado um endereço de dispositivo que foi descrito no código do Arduino. Como exemplo, o contador de transmissões completas de número 43 identifica uma carga codificada que foi enviada de um nó sensor com registro de número 26031433 ao gateway eui-b827ebffff33fab6.

Na análise de tráfego de dados do gateway pode então ser mostrado de qual nó foi enviado o pacote, visualizado o tamanho total da carga e também só a codificação em HEX da informação.

Na tela de dados do RPi, pode-se constar que os dados criptografados para as transmissões correspondem aos dados recebidos no servidor. No exemplo citado da transmissão 43, os dados do pacote são registrados conforme são enviados.

Nota-se que no Monitor Serial do Arduino os dados obtidos pelo sensor são informados e enfileirados para a transmissão sem fio junto a um número de contagem para a análise quantitativa dos pacotes que estão sendo enviados, além de outras informações de controle. Na tela de amostragem de pacotes recebidos do servidor The Things Network, é possível comprovar a correta transferência de dados ao converter os valores em DEC dos sensores para HEX conforme mostra o servidor.

É possível verificar a redução do tempo no ar que um pacote transmitido com fator de espalhamento 7 sofre em relação ao mesmo pacote transmitido com fator de espalhamento 10. A distância na qual os testes foram realizados não sofreriam consequência significativas de perdas de pacotes mesmo com fator de espalhamento mais elevado, entretanto, se o mesmo teste for executado para separações maiores entre o nó sensor e o gateway é possível notar diferenciações em termos de perdas de pacotes.

Esta característica é intrínseca à tecnologia LoRa e se deve ao fato de haver proporcionalidade inversa entre o fator de espalhamento e alcance ou tempo no ar, deixando padrão todos os outros parâmetros.

Pode-se ainda associar estas informações a um banco de dados e em um servidor de aplicação para melhor quantificação dos dados, assunto este que pode ser abordado em um artigo posterior.

Resultados

Nos testes realizados, foi possível alcançar 3 km entre o nó sensor e o nó gateway em uma área urbana com antena não direcional, mas com perdas de pacotes consideráveis.

Tabela 2 – Fator de espalhamento 7

Tabela 3 – Fator de espalhamento 12

Conforme mostra as Tabelas 2 e 3, a transferência sem perdas foi possível obter para distâncias de até 1,5 km, que já é o suficiente para cobrir uma boa área e capacitar o monitoramento remoto em diversas aplicações, como número de veículos, poluição do ar, fluxo de pedestres e gerenciamento de lixo, por exemplo.

Na Figura 4 é possível exemplificar a cobertura de 1,5 km de raio quando utilizados dois gateways recebendo dados de nós LoRa espalhados na cidade de São José dos Campos, São Paulo. Pode-se verificar que vários bairros podem ser cobertos com esta configuração.

Aplicação de dois gateways LoRa.
Figura 4 – Aplicação de dois gateways LoRa.

Na Figura 5 é mostrada a eficiência de um único gateway LoRa se esta tecnologia for aplicada a cidades pequenas, mesmo com as configurações de prototipação exercidas neste artigo.

Aplicação de um gateway LoRa em cidades do interior.
Figura 5 – Aplicação de um gateway LoRa em cidades do interior.

Conclusões

As aplicações de LoRa para IoT são inúmeras. Smart City, Smart Grid, Smart Farm, Health Care, campus universitários e até tropas militares já se beneficiam com esta tecnologia. Esses resultados expressam que a tecnologia é funcional para Smart City, mas que pode ser aperfeiçoada com ajustes de potência de transmissão, ganho de antena, fator de espalhamento e gerenciamento de pacotes recebidos. Mesmo assim, foi possível avaliar o bom desempenho do protocolo LoRaWAN e sua atuação no sensoriamento remoto urbano utilizando hardwares de custo relativamente baixo e acessível à população.

Saiba mais

The Things Network: uma rede para IoT colaborativa

Gateways LoRa: soluções open-source hardware

Criando end-devices LoRa: arquitetura e especificações

Referências

Adelantado, F., Vilajosana, X., TusetPeiro, P., Martinez, B., Melià-Seguí, J., and Watteyne, T. (2017). Understanding the limits of lorawan. IEEE Communications Magazine, pages 34–40.

Petäjäjärvi, J., Mikhaylov, K., Roivainen, A., Hänninen, T., and Pettissalo, M. (2015). On the coverage of lpwans: Range evaluation and channel attenuation model for lora technology. ITS Telecommunications (ITST), pages 1–5.

Petäjäjärvi, J., Mikhaylov, K., Yasmin, R., Hämäläinen, M., and Iinatti, J. (2017). Evaluation of LoRa LPWAN Technology for Indoor Remote Health and Wellbeing Monitoring. International Journal of Wireless Information Networks, 24(2):153–165.

Battle, S., Gaster, B. (2017) LoRaWAN Bristol. IEEE. Proceedings of the 21st International Database Engineering and Applications Symposium, pages 287-290.

Semtech (2017). What is LoRa? http://www.semtech.com/wireless-rf/internet-of-things/what-is-lora/. Acessado: 18/09/2017

LoRa Alliance, Inc. (2017a). LoRaWAN 1.1 Regional Parameters. Version 1.1, published in October 11, 2017.

Dragino

Raspberry Pi

Conheça a tecnologia LoRa® e o protocolo LoRaWAN™

Plataformas de desenvolvimento baseadas em LoRa

Código fonte do nó sensor

Código fonte do gateway

Apêndice

É o mesmo código fonte do nó sensor descrito nas referências.

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 » Setup LoRa com Arduino, Raspberry Pi e shield Dragino
Comentários:
Notificações
Notificar
guest
10 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Anderson
Anderson
23/05/2019 17:50

Olá, gostaria de saber quantos nós um gateway com raspeberry consegue suportar e gerenciar?

Bruno Matheus Comin
Bruno Matheus Comin
15/04/2019 17:27

Boa tarde lucas, excelente publicação. Gostaria de saber se e possível fazer a atualização do firmware OTA, subir a imagem do sketch no gateway e do outro lado o “arduino” ou any dispositivos fazer esta atualização via Lora?

Obrigado!

Thiago Bueno
Thiago Bueno
26/01/2019 18:38

Olá,

Estou com um problema, seguindo os passos na instalação e depois da etapa do make, tentei rodar o compilado single_chan_pkt_fwd e me aparece o seguinte erro:

[email protected]:~/single_chan_pkt_fwd $ sudo ./single_chan_pkt_fwd
Unrecognized transceiver.
Version: 0xff

Já se deparou com este erro? Procurei em alguns forum do Dragino mas não encontrei nada preciso.

Obrigado.

Diogo Corrêa
Diogo Corrêa
28/05/2018 14:58

Olá, Eu tenho uma dúvida com relação ao Spreading Factor. Nos códigos de exemplo, tanto do Raspberry Pi quanto o do Arduino, foi configurado para o valor 10 de SF, e a frequência de 915 MHz. Mas no fim do artigo é mostrada uma tabela de resultados alcançados com o SF 12. Só que no meio do artigo é escrito que há uma restrição de operação de SF (entre 7 a 10) para a frequência de 915 MHz, impossibilitando de trabalhar com tais configurações. Desta forma, como foi possível operar em 915 MHz com o SF 12? Mas de qualquer… Leia mais »

Diogo Corrêa
Diogo Corrêa
Reply to  Lucas Restivo de Oliveira
29/05/2018 11:19

Ah sim, obrigado pela resposta.

Thiago
Thiago
Reply to  Lucas Restivo de Oliveira
17/07/2018 17:26

Boa tarde, saberia me dizer qual é a fonte dessa informação, que o SF tem que estar entre 7-10 para não infringir as questões legais?

Guilherme
Guilherme
28/05/2018 09:10

Bom dia.
Gostaria de saber os links de onde foram adquiridos os módulos Lora da Dragino.
Há venda no Brasil?
Obrigado,

Talvez você goste:

Séries

Menu