Primeiros passos comunicação LoRa com Arduino 19

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 *

19 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.