16 DE DEZ DE 2018
Plataforma 3G IoT baseada em LoRa
O grande desafio agora é o desenvolvimento de sistemas embarcados para soluções IoT outdoor, com aplicações para smart-cities, cases do agronegócio, logística e sensoriamento remoto. Em particular, duas tecnologias de IoT - Sigfox e LoRa -
Com o avanço da Internet das Coisas (IoT), torna-se natural pensarmos em aplicações e soluções voltadas a objetos e redes de sensores conectados. Quando falamos da tecnologia necessária para o uso de IoT em aplicações indoor (como em casas inteligentes e automação predial), Wi-Fi e BLE (Bluetooth Smart) já estão consolidadas no mercado.
O grande desafio agora é o desenvolvimento de sistemas embarcados para soluções IoT outdoor, com aplicações para smart-cities, cases do agronegócio, logística e sensoriamento remoto. Em particular, duas tecnologias de IoT - Sigfox e LoRa - chamam a atenção por permitir comunicação de longo alcance (2-15km) com baixo consumo de energia (na ordem microamperes), as chamadas redes LPWAN (Low Power Wide Area Network).
LoRa como solução de IoT e comunicação M2M
Uma dúvida natural para a maioria dos estudantes e profissionais que desejam se aprofundar nas diferentes tecnologias para IoT é a escolha do hardware a ser usado e qual o seu custo associado. Atualmente, para projetos de telemetria e automação residencial e predial, por exemplo, associamos rapidamente a plataforma Particle Photon ou o módulo ESP8266, como solução de baixo custo.
Em se tratando do uso de LPWAN para soluções de IoT, muitos ainda ficam na dúvida sobre quais módulos e plataformas de desenvolvimento podem ser usados. Este artigo introduz o módulo RFM95W baseado no circuito integrado (transceptor) SX1276 da SEMTECH como transceiver LoRa e as placas de desenvolvimento que o utilizam.
Apresentando o módulo RFM95W (LoRa transceiver)
A partir da tecnologia patenteada LoRa, o transceiver pode ser utilizado para comunicações M2M (Machine-to-Machine) ou como parte de uma rede LPWAN, utilizando o protocolo LoRaWAN. A empresa HOPERF, especialista em soluções de RF e IoT, desenvolveu um módulo baseado no circuito integrado SX1276, que é bastante prático para o desenvolvimento de projetos que necessitam de comunicação LoRa. Assim, o RFM95W tornou-se um case de sucesso devido ao preço baixo e à facilidade de uso. Em uma comparação rápida, o RFM95W está para LoRa assim como o ESP8266 está para a tecnologia Wi-Fi (em termos de baixo custo e desenvolvimento open-source hardware).
O módulo pode ser encontrado nas versões de 433MHz, 868MHz e 915MHz, lembrando que a frequência de utilização do dispositivo LoRa está definida pela região geográfica/banda de frequência ISM (no Brasil utilizamos 915MHz).
Figura 1 - Transceiver LoRa RFM95W
Basicamente, o módulo apresenta a interface de comunicação através do protocolo SPI, entrada para alimentação e saída para conexão de antena externa. Na Figura 2 é apresentada uma visão geral do módulo e sua pinagem. Para mais informações, consulte o datasheet do módulo.
Figura 2 - Pinout do RFM95W (Fonte [2])
Algumas variações do módulo, RFMxx, são produzidos pela empresa HOPERF. Algumas versões anteriores baseiam-se em comunicação por radiofrequência, como o RF69.
Plataformas de desenvolvimento baseadas no SX1276
Até aqui, não foi apresentada nenhuma plataforma de desenvolvimento, isto é, uma placa baseada em algum microcontrolador (MCU) com o transceiver LoRa integrado. Como pode ser visto acima, a comunicação do RFM95 com qualquer microcontrolador é bastante simples. Assim, surgiram alguns módulos baseados na plataforma Arduino com o RFM95 integrado.
Segue uma lista das placas de desenvolvimento disponíveis, separadas por linhas de diferentes microcontroladores:
Atmel Atmega32u4: Feather 32u4
Figura 3 - Placa Feather 32u4
O ponto positivo desta placa é a possibilidade de encaixar diretamente uma bateria recarregável de lítio-polímero, bem como recarregar a mesma. Apesar da limitação do clock, de apenas 8MHz, a placa possui características interessantes, como os 300uA no sleep-mode e o pico de corrente de 120mA com transmissão a +20dBm.
Atmel ATSAMD21G18: Feather M0
Figura 4 - Placa Feather M0
Baseada em um ARM Cortex-M0 (com 48MHz), possui características bem parecidas com a versão que possui o Atmega32u4.
STM32: ST B-L072Z-LRWAN1 STM32 LoRaWAN™ Discovery
Figura 5 - Placa STM32 LoRaWAN Discovery
Talvez uma das melhores opções do mercado, por ser compatível tanto com mBed, como também com o Keil. Confira mais informações deste plataforma neste artigo.
Microchip: RN2903 Mote Boards (utiliza o RN2903)
Figura 6 - RN2903 da Microchip
Espressif ESP32: Lopy (utiliza o SX1272)
Entre as plataformas com tecnologia LoRa de baixo custo e voltadas para “makers”, a LoPy tem características interessantes por também apresentar BLE e Wi-Fi. Outro diferencial é o uso de Python para programação (através do bootloader do MicroPython instalado).
Existem outras plataformas, mas, dentre as que utilizam o RFM95, com exceção da RN2903, estas são as de maior relevância, em termos da relação custo x benefício. A STM32 discovery com o LoRa também é uma ótima plataforma de desenvolvimento para aplicações profissionais (desenvolvimento de produto), considerando que ela já conta com antena inclusa - item que é comprado separadamente para a maioria das outras placas.
Para os que precisam apenas do transceptor LoRa em seu projeto, existe ainda a possibilidade da compra de um módulo breakout/shield com o módulo RFM95.
LoRa Dragino ShieldFigura 7 - LoPy da Pycom
Figura 8 - LoRa Dragino shield
Figura 9 - Adafruit LoRa breakout board
Outra alternativa, a de menor custo, seria a compra do RFM95 e a confecção de sua própria placa/shield. O RFM95 pode ser encontrado com facilidade em sites de componentes internacionais.
Visão geral do uso do RFM95W
Nesta seção é apresentada uma visão geral do uso do SX1276 com a plataforma Arduino através dos microcontroladores Atmega328P e Atmega32u4.
Conexões físicas
Como mencionado anteriormente, a conexão com qualquer MCU pode ser realizada através do barramento SPI. Pelo fato do módulo RFM95W não apresentar um encaixe direto para uma protoboard, é possível utilizar o adaptador do ESP8266 para prototipagem.
Figura 10 - Conector para encaixe do RFM95W em protoboard
Uma limitação deste conector, em específico, é o uso de uma antena “wire” e não das tradicionais, com encaixe SMA ou uFL SMT. O uso de antenas diferentes influencia diretamente no alcance obtido durante a comunicação. A partir de relatos de usuários, alcances de 8.3km (com conexões a gateways LoRaWAN) já foram obtidos a partir do uso do SX1276.
Libraries/firmware para o SX1276
Como o foco da tecnologia LoRa são aplicações de IoT, o uso do RFM95 com o protocolo LoRaWAN pode ser feito através da biblioteca aberta Arduino-LMIC. Para algumas aplicações de comunicação de longo alcance ponto a ponto (P2P), a biblioteca RadioHead pode ser útil. Outra biblioteca bem interessante para o uso da tecnologia em comunicação rádio é a Arduino LoRA.
Em geral, a programação das placas Arduino compatíveis (ou até mesmo o próprio Arduino UNO) com o RFM95 segue o mesmo padrão conhecido.
Figura 11 - Feather32u4 LoRa com Arduino IDE
Aos interessados, alguns links úteis para configuração e programação:
- Setup da Arduino IDE com Feather 32u4/M0
- RFM95 test com Arduino UNO (usando biblioteca RadioHead)
- LoRa radio com Arduino-LoRa library
Eficiência energética
A partir do módulo LoRa breakout, realizei alguns testes de conexão para comunicação entre dois endpoints utilizando a biblioteca Arduino-LoRa em conjunto com LowPower Library para o Atmega328P. Objetivando um menor número de componentes eletrônicos para o mínimo consumo de energia possível, montei um circuito Arduino standalone (Figura 12) na protoboard e testei o consumo de corrente ao alimentar o circuito com uma bateria de 3.7V recarregável.
Configurando o firmware para enviar uma mensagem LoRa com payload de 8 bytes a cada 40 segundos, obtive 85 uA no modo sleep e picos instantâneos de 100mA ao enviar a mensagem. Realizando uma conta básica, teríamos uma autonomia de até 244 dias utilizando uma bateria de 500mAh.
Figura 12 - Circuito standalone para medir consumo de corrente
Apesar do bom resultado, o firmware do microcontrolador pode ser aprimorado para consumo na ordem de nA. Alguns projetistas compartilharam alguns projetosutilizando um Arduino Pro-Mini com consumo de corrente mínimo. Também foi possível medir o consumo com a placa Feather 32u4 (Figura 13). As informações a respeito do consumo de energia passadas pela Adafruit em seu site podem ser melhoradas utilizando a biblioteca LowPower (obtendo valores como 180uA em sleep mode e 100mA nos picos).
Figura 13 - Feather 32u4 alimentada com bateria recarregável
Testes de alcance de conexão
Utilizando as bibliotecas Arduino-LoRa e radiohead foi possível medir o alcance de uma conexão P2P entre dois módulos LoRa (testes envolvendo conexão endpoint-gateway ainda não foram realizados). O teste foi realizado tanto com o breakout board quanto com a placa Feather 32u4. A antena utilizada no teste com o módulo breakout é a mostrada na Figura 14. A da placa Feather 32u4 é a apresentada conectada a placa Lopy na figura 14 também.
Figura 14 - Plataformas de desenvolvimento baseadas em LoRa
Aos interessados, seguem as referências para as antenas utilizadas:
- Antena utiizada com o LoPy/Feather32u4 (com conector uFL);
- Antenna utilizada com o LoRa breakout (referência próxima);
- Wire antena: utilizada tanto no Feather 32u4 como no breakout a partir do RFM95W, saiba como calcular o tamanho do fio a ser utilizado aqui.
O melhor alcance obtido numa área urbana em Recife - PE (Figura 15) foi de cerca de 800 metros, contando com a presença de vários prédios entre os módulos. Comparando o resultado com relatos de outras pessoas em fóruns, o meu resultado apresentado é, de certa forma, ruim. Outras opções também para o aumento do range da comunicação é uma melhor configuração da antena e parâmetros da comunicação.
Figura 15 - Teste de alcance de conexão P2P LoRa
Integrando o hardware com a The Things Network
A partir do momento em que falo de placas de desenvolvimento baseadas em LoRa, também se torna fundamental definir uma plataforma para a integração do hardware desenvolvido com o protocolo LoRaWAN. Neste caso temos a plataforma 3GSOFT IoT.
A "The Things Network" (TTN) é um projeto global cuja missão é construir uma rede de Internet das Coisas aberta, global e crowdsourced, ou seja, construída, mantida e operada pelos seus usuários.
Em Julho de 2015, a TTN conseguiu cobrir a cidade inteira de Amsterdam com um novo tipo de rede wireless, usando a tecnologia LoRa. A rede foi construída de baixo para cima, financiada por desenvolvedores.
Atualmente a TTN permite a configuração gratuita de gateways ao redor do mundo, por qualquer usuário. No Brasil, temos alguns usuários cadastrados e alista das respectivas cidades com gateways públicos. No momento, estou tentando a instalação de uma gateway na cidade de Recife - PE. Uma das minhas motivações com a escrita deste artigo é compartilhar o conhecimento sobre a tecnologia LoRa e conhecer os usuários da rede TTN no Brasil.
Para o uso dos dispositivos LoRa com a TTN, podemos utilizar dispositivos prontos ou construir nossa própria solução, a partir de transceivers LoRa (como o RFM95).
LoRa endpoints
Para conectar um endpoint (no) LoRa na TTN, torna-se necessário configurar o dispositivo para tal. Recomendo o uso da biblioteca Arduino-LMIC. Em uma continuação deste artigo abordarei a construção de seu próprio endpoint a partir do RFM95. Para os curiosos de plantão, recomendo a seção Devices do site da TTN.
A TTN também fornece sua própria placa (The Things UNO), baseada no Arduino UNO, para desenvolvimento de endpoint LoRaWAN. Apesar de ser totalmente compatível com a TTN, a placa possui grande desvantagem na questão do preço.
Figura 16 - The Things UNO da TTN
Gateway
O estabelecimento de um Gateway LoRaWAN é um pouco diferente do que a simples configuração de um nó da rede. Além de uma maior complexidade da solução do hardware, existem também algumas etapas na configuração (registro e software). A TTN oferece uma solução pronta, restando apenas a configuração.
Figura 17 - Gateway LoRaWAN da TTN
Assim como o estabelecimento de um endpoint, existem alguns tutoriais de como montar seu gateway (com várias limitações em termos de hardware devido ao fato deles usarem o SX1276 como receptor) a partir de plataformas como Raspberry Pi 3, placas baseadas em ESP8266 e outros dispositivos embarcados. A seção gatewaysdo site da TTN possui alguns tutoriais utilizando as plataformas citadas acima.
Conclusão
A partir deste artigo espero ter contribuído para a comunidade do Embarcados com uma parte deste conhecimento sobre LoRa adquirido em minhas pesquisas e desenvolvimentos recentes. Senti falta de um material introdutório em português sobre o assunto, e foi um desafio resumir muita informação sobre as placas, protocolo e soluções em um único artigo. Como dito anteriormente, meu plano é continuar este texto com uma possível sequência de como construir seu endpoint (com diferentes abordagens) e um mini gateway LoRa.
Referências
MobileFish: how to build LoRa endpoint
Fonte: LinkedIn