Primeiros passos comunicação LoRa com Arduino 31

LoRa (Long Range) é uma tecnologia de comunicação Wireless de longo alcance mas com baixo consumo de energia. Essas características tornam LoRa uma tecnologia ótima para utilização em redes wireless de IoT (Internet das coisas), e nesse post vamos utilizar o LoRa com Arduino, realizando uma comunicação básica entre duas placas utilizando o módulo LoRa 433MHz.

Circuito LoRa com Arduino

Aplicações de IoT estão buscando resolver situações envolvendo cidades inteligentes, mudanças climáticas, controle de poluição, desastres naturais. LoRa vem para ajudar nessa força tarefa.

Podemos ver a tecnologia LoRa sendo integrada a carros, sistemas de iluminação, equipamentos de manufatura, wearables, eletrodomésticos e casas inteligentes.

Componentes utilizados

Módulo LoRa 433MHz

O módulo LoRa 433MHz funciona através de uma interface serial com pinos TX e RX. Por isso conseguimos facilmente integrá-lo ao Arduino e utilizar as funções de Serial já bem conhecidas por programadores Arduino.

A distância de comunicação pode chegar até 3 Km dependendo das antenas usadas, condições de ambiente e interferências de radiofrequência e magnéticas.

Módulo LoRa

A alimentação pode ser 3,3V ou 5V e a comunicação serial é TTL podendo ser 5V. Isso significa que pode ser feito uma conexão segura com Arduino e outras placas 3,3V como ESP8266.

Esse módulo possui 4 modos de operação. O modo mais básico para simples comunicação é o Modo Normal. Para este modo devemos colocar os pinos M0 e M1 em GND(nível 0). Em outros posts iremos explorar outros modos de operação como Modo Power Saving, Sleep e Wake-up.

No datasheet do módulo podem ser encontradas mais informações técnicas sobre o LoRa 433MHz. O modelo que a FILIPEFLOP vende atualmente, e modelo utilizado neste tutorial, é o E32-TTL-100.

Veja abaixo na ilustração a pinagem do módulo e na tabela uma descrição de cada pino.

Módulo LoRa

Tabela pinagem

Circuito eletrônico Lora com Arduino

No caso da nossa demonstração teremos dois circuitos. Um para a transmissão de dados e outro para recepção.

Circuito de transmissão

O circuito de transmissão consiste em um Arduino, dois push buttons e um módulo LoRa 433MHz.

Circuito Lora com Arduino

Circuito de recepção

O circuito de recepção consiste de outro Arduino, um LED, resistor e outro módulo LoRa 433MHz.

Circuito Receptor

Programação Arduino

Programação do transmissor

A programação do transmissor tem objetivo de enviar via protocolo serial duas strings “on” e “off” de acordo com cada botão pressionado. Veja o código abaixo:

#include <SoftwareSerial.h>

#define BTN1  4
#define BTN2  5  

SoftwareSerial loraSerial(2, 3); // TX, RX

String turnOn = "on";
String turnOff = "off";


void setup() {
  pinMode(BTN1, INPUT_PULLUP);
  pinMode(BTN2, INPUT_PULLUP);
  Serial.begin(9600);
  loraSerial.begin(9600);
  
}

void loop() {

  if(digitalRead(BTN1) == 0) {
    loraSerial.print(turnOn);
    while(digitalRead(BTN1) == 0);
    delay(50);
  }

  if(digitalRead(BTN2) == 0) {
    loraSerial.print(turnOff);
    while(digitalRead(BTN2) == 0);
    delay(50);
  }
}
Programação do receptor

A programação do receptor tem o objetivo de esperar pelas strings enviadas pelo transmissor. Quando recebe a string “on” liga o LED. Quando recebe a string “off” desliga o LED. Veja o código abaixo:

#include <SoftwareSerial.h>

#define LED1  4  

SoftwareSerial loraSerial(2, 3); // TX, RX

void setup() {
  pinMode(LED1, OUTPUT);
  Serial.begin(9600);
  loraSerial.begin(9600);  
}

void loop() { 
  if(loraSerial.available() > 1){
    String input = loraSerial.readString();
    Serial.println(input);  
    if(input == "on") {
      digitalWrite(LED1, HIGH);  
    } 
    if(input == "off") {
      digitalWrite(LED1, LOW);
    }
  }
  delay(20);
}

Funcionamento do sistema

Para testar o sistema utilizamos duas antenas SMA comuns e conseguimos chegar a uma distância de ~30m ao ar livre. Provavelmente as antenas utilizadas não são ideais para esse módulo e os edifícios e outros obstáculos interferiram na distância de comunicação.

Lembrando que a distância indicada no datasheet de 3 Km é em condições ideais, campo aberto, antenas bem dimensionadas e livre de interferências de rádio ou magnéticas. Ver datasheet página 7 para mais detalhes sobre os testes de distância.

Em posts futuros iremos explorar mais recursos do módulo LoRa e também tentaremos obter maior alcance experimentando com diferentes antenas.

Veja abaixo o funcionamento dos módulos LoRa juntamente com Arduino.

Funcionamento Módulo LoRa

Gostou do exemplo de utilização do LoRa com Arduino? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. Se tiver dúvidas e projetos não se esqueça de visitar nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

31 Comentários

  1. Qual o alcance desse modulo LoRa?

    1. Olá Edmilson!

      Essa informação se encontra no próprio artigo acima ou no datasheet.

      Vou retirar um trecho do artigo acima e colocar aqui pra você ler:

      “Lembrando que a distância indicada no datasheet de 3 Km é em condições ideais, campo aberto, antenas bem dimensionadas e livre de interferências de rádio ou magnéticas. Ver datasheet página 7 para mais detalhes sobre os testes de distância.”

      Como informado acima, mais informações você pode encontrar no datasheet.

      Espero ter ajudado. Abraço!

      1. Você poderia fazer um teste real , bem como você disse em condições ideais é de 3km o que nunca vai acontecer, eu fiz o teste de um módulo Lora e consegui no maximo 100 metros…seria legal você colocar o teste do dispositivo que possui para ficarmos cientes

        1. Olá Bruno!

          No final do tutorial, onde tem o gif do funcionamento, explicamos qual foi o teste feito.

          O módulo é novo, ainda estamos testando. A ideia desse post foi apresentar o módulo, suas especificações técnicas e um funcionamento básico.

          Deixamos o datasheet disponível para que você possa lê-lo por completo e ficar ciente do que os fabricantes dizem sobre o módulo.

          Na medida do possível iremos fazer outros testes com esse módulo e vários outros projetos utilizando o mesmo.

          Fique ligado nos próximos posts! Abraço!

  2. Não precisa de uma gateway LORA para implementar a comunicação?

    1. Olá Osmar!

      Para uma comunicação simples igual ao tutorial acima não é necessário.
      Agora se você quiser centralizar dados ou enviá-los para a nuvem ou alguma plataforma IoT, servidor, etc. aí sim você irá precisar de um Gateway.

      O Gateway é basicamente uma placa com transceiver LoRa e um módulo WiFi, fazendo uma ponte entre rede LoRa com a internet.

  3. Bom dia,

     

    Queria saber, o receptor pode receber dados de dois ou mais transmissor ?

    Um transmissor pode enviar dados para mais de um receptor ?

    Se for o caso, como vamos reconhecer quem comunica com quem ? Com um codigo no sinal enviado ?

    1. Olá amigo!

      Ainda não fizemos esse teste. Mas provavelmente será necessário implementar algum tipo de criptografia e identificação de dispositivos via software.

  4. Cara, eu to querendo comprar esse kit…So que ele nao vem com as antenas certo? Procurei qual era a antena certa para colocar no kit…sabe me dizer? att, Rafael

    1. Olá Rafael!

      Isso, não vem com antena.

      Para o tutorial usamos uma antena de outro produto. O módulo APC220. É uma antena com conector SMA também.

      No datasheet, na seção que fala sobre o alcance do módulo, diz assim:

      “The external antenna used is of 5dBi gain and vertical
      polarization. The height is 2.5 meters;”

      Em breve iremos tentar incluir na loja uma antena específica para esse módulo.

  5. Giovanni, parabéns pelo artigo! Dúvidas: quantos transmissores eu poderia usar com apenas 1 receptor? Como seria a implantação, de por exemplo, 10 transmissores (sensor de presença), e 1 receptor. Obrigado pela atenção.

    1. Olá Marcelo! Obrigado pela leitura.

      Ainda não testamos esse módulo com mais de um transmissor.

      Mas teoricamente creio que vocẽ precisaria identificar cada transmissor via software quando os dados são enviados. Por exemplo colocando um endereço antes do dado para cada transmissor.

      Abraço!

  6. Parabéns pelo post, muito bom.

    Poderia fazer um post mandando mensagem usando o protocolo?
    1) Declarando variáveis
    2) Empacotando as variáveis
    3) Bufferizando
    4) Transmitindo

    Por favor, iria ajudar muito.

    1. Olá Wesley!

      Vou anotar essa sugestão, mas não prometo nada, viu? :p

      Você pode dar uma olhada no nosso fórum. Lá você pode tirar algumas dúvidas e postar seus projetos. Colaborar e aproveitar a comunidade:

      https://www.filipeflop.com/forum/

      Aí se quiser postar algum projeto seu com LoRa lá, fique à vontade.

      Abraços!

      André – Equipe FILIPEFLOP

  7. saudações
    excelente tutorial uma pergunta Eu tenho um par de transceptores E32-1W copiar o código e compilado bem no cartão, mas o led não liga quando eu apertei o botão.

    1. Olá Plinio! Obrigado pela leitura.

      Verifique as suas conexões na protoboard. Se tiver qualquer mal contato, o projeto não irá funcionar.

      Você pode também modificar o programa para enviar a string diretamente sem ser necessário apertar um botão.

      Bons projetos!

      1. Obrigado giovanni

        Eu soldou a fiação para ter certeza, mas não funciona.

        será porque as placas arduino não são originais.

      2. Eu estou usando uma placa clone de arduino 1.

        1. Olá Plinio!

          Sendo Arduino open hardware ou não não faz diferença.

          Você já tentou modificar o software para enviar a string diretamente sem apertar botão?

          Outra opção é testar com um analisador lógico se os dados estão indo pela linha serial.

  8. olá boa noite, eu estou fazendo um modulo tx e rx para radio controle de aeromodelo, atualmente fiz com os modulos HC-12, funcionou perfeito,….

    porem comprei o lora E32 433 pelo alcance ser maior, porem na hora de transmitir os dados seriais ele transmite com um atrazo muito alto e nao sei o porte,, tipo o receptor recebe os dados a cada 200ms, eu preciso q sege transparente envio e ja recebo entende,… meu programa funciona assim..

    le o tempo de cada pulso ppm do radio pra saber os “ms” de cada canal correto, e pega esses tempos e transmite via byte para o outro modulo no caso receptor,… mas nao posso ter demoras,.. tenho que receber continuamente porem esta dando este atrazo como mencionei…. vc saberia o porque? seria configuração dos modulos?

    1. Olá Rodrigo!

      Infelizmente LoRa não é recomendado para seu tipo de aplicação. Controle de aeromodelos requer alta velocidade de transmissão praticamente em tempo real.

      LoRa é melhor utilizado em aplicações que não demandem velocidade, por exemplo transmitir dados de um sensor a cada 10 min. E também aplicações de baixo consumo de energia e longas distâncias.

      No datasheet do E32 diz que a velocidade de transmissão é de 2.4kbps, já seu módulo bluetooth HC-12 é de 5kbps, ou seja o dobro da velocidade.
      https://www.allaboutcircuits.com/projects/understanding-and-implementing-the-hc-12-wireless-transceiver-module/

      Veja aqui uma discussão sobre o que é possível com LoRa
      https://www.thethingsnetwork.org/forum/t/unclear-what-exactly-is-possible-with-lorawan-technology/2508/2

      Talvez um módulo interessante para sua aplicação seria o NRF20L01. Velocidade de 2Mbps
      https://www.filipeflop.com/produto/modulo-wireless-nrf24l01-transceiver-com-antena-sma/
      Veja aqui um teste de alcance: https://hallard.me/nrf24l01-real-life-range-test/

      Abraço!

  9. Olá! É possível construir um gateway utilizando essa Lora com o Raspberry Pi Zero, 2 e 3? Se sim, você conhece algum tutorial? Obrigado.

    1. Olá João.

      Creio que seja possível sim. Infelizmente não temos tutorial sobre isso ainda.

      Veja este artigo no Portal Embarcados se te ajuda.
      O autor é o Eronides Neto, ele é referência em LoRa no Brasil.
      https://www.embarcados.com.br/gateways-lora-open-source-hardware/

      Veja outros artigos do Eronides aqui: https://www.embarcados.com.br/author/eron93/

  10. Olá.
    Eu só tenho uma duvida. Uma vez que este equipamento trabalha na faixa de Radioamador e estes geralmente fazem uso de rádios potentes, quais as possibilidade de um sofrer interferência do outro e deixar de seu funcionamento normal garantido?

    José Fernando Santos Lourenço
    1. Olá José.

      infelizmente não fizemos testes relacionados a interferẽncias desse tipo.

      Dê uma olhada no datasheet: https://img.filipeflop.com/files/download/E32_User+Manual_EN_v1.00.pdf
      Encontrei 11 referências a palavra “interference”

      Abraço!

  11. Olá quanto que ficaria esse kit ? Obrigado

    1. Olá Luciano!

      Pra comprar o kit é só ir ali na parte de Material Necessário e adicionar tudo ao carrinho!

      Abraços!

      André – Equipe FilipeFlop

  12. Esse modulo pode ser usado para controle de servo motor ? Ele tem algum conflito com a biblioteca servo.h?

    1. Olá Flavio!

      Pode sim. A princípio não tem nenhum conflito.

      Abraços!

      André – Equipe FilipeFlop

  13. Boa tarde!
    Gostaria de uma ajuda baseada na comunicação entre sensores de temperatura e vibração com uma raspberry Pi3 usando o LoRa. A ideia é projetar um sistema de envio e recepção de sinal para fazer manutenção preditiva de um maquinário. Você teria algum artigo de como poderia fazer isso?
    Desde já agradeço.

    Ronan Bezerra Alvarenga
    1. Olá Renan!

      Bem legal sua ideia de projeto!
      Infelizmente não temos nada parecido com sua ideia de projeto.

      Temos vários tutoriais sobre Raspberry Pi, sensor de temperatura, vibração etc. É só pesquisar na barra de pesquisa seu tema ou sensor desejado.

      Tutoriais com LoRa teremos mais futuramente pois ainda é uma tecnologia relativamente nova no Brasil, no mundo maker pelo menos.

      Vocẽ pode também postar a sua ideia em nosso fórum, as vezes você até ache alguém que já tenha feito algo parecido.