LoRa E32915T30D o Transceptor que chega até 8km

LoRa é um transceptor de longa distância capaz de chegar ou ultrapassar os 8000m em condições ideias com apenas 1W de transmissão.

Aplicações

  • Sensoriamento remoto;
  • Estações meteorológicas;
  • IoT;
  • Telemetria;
  • Comunicação em Malha.



Especificações

  • Voltagem de trabalho: 3v3 ~ 5v2;
  • Voltagem de comunicação: 2v5 ~ 3v6;
  • Consumo de transmissão: 650mA ~ 720mA;
  • Temperatura de trabalho: -40 ~ 85℃;
  • Humidade de trabalho: 10% ~ 90%;
  • Tamanho: 24mm x 43mm x 4,2mm;
  • Interface de comunicação: UART e SPI;



Comunicação

  • Potência de transmissão: 29.4 ~ 30.8dBm;
  • Taxa de dados: 0,3kbps ~ 19,2kbps;
  • Impedância da Antena: 50ohms;
  • Alcance de transmissão: 7200m ~ 8800m;
  • Tipo de conexão: DIP;
  • Conector Antena: SMA-K;
  • Frequência: 900 – 931Mhz.

Peculiaridades do LoRa

O LoRa (Long Range) é uma tecnologia de rede de área ampla de baixa potência (LPWAN). Baseia-se em técnicas de modulação de espectro de propagação derivadas da tecnologia chirp spread spectrum (CSS) e o modelo E32915T30D é um dos mais poderosos, chegando a uma distância de 7200m ~ 8800m em condições ideias.

LoRA E32915T30D

Transmitindo e Recebendo Dados

Foi feito diversos teste de transmissão com o LoRa, enviando dados curtos e longos. É um transmissor de comunicação rápida a depender das informações a serem transmitidas.

Diferentemente de outros transceptores o LoRa aparentemente faz um upload de dados, ou seja, se for enviado um texto de 1000 caracteres o LoRa vai ficar enviando e o receptor vai ficar lendo o sinal e armazenando nele mesmo até que seja encerrado e logo em seguida é exibido na UART.

Atenas e Cuidados

A antena deve atender a mesma faixa de frequência do modelo do LoRa nesse exemplo do post é o E32915T30D que tem uma frequência 915Mhz com um conector SMA Fêmea. As antenas são vendidas com range de 868 a 915Mhz e deve ter o conector SMA do tipo Macho.

Antena Lora


Caso não tenha em mãos uma antena que atenda a faixa de frequência do transceptor mas queria testar só tem antena de outras faixas como 2.4Ghz, não tem problema mas para aplicações a longa distância não terá o mesmo desempenho de uma antena adequada. Por mais que a antena não seja de adequada, é melhor do que o não uso, pois pode acabar danificando o LoRa.

Dimensões do LoRa E32915T30D

Esse modelo de LoRa tem um comprimento de um Arduino nano e uma largura aproximada de 1,5 Arduino nano.

LoRa Dimensões

LoRa E32915T30D Pinout

LoRa Pinout

LoRa E32915T30D com Arduino

O LoRa é muito simples de ser usado, tendo uma comunicação bilateral do transceptor com microcontrolador baseado em UART, recebendo dados apenas com a leitura da serial e enviando apenas imprimindo na serial.

Diagrama

Diferentemente das aplicações em que existe uma interfarce UART real no hardware e qualquer conexão deve seguir a lógica TX -> RX e RX -> TX de forma invertida, no caso do uso da biblioteca SoftwareSerial vai simular uma interface UART e por isso podemos fazer essa “inversão” TX e RX via código.

LoRa e Arduino

Código LoRa com Arduino

Para uso do LoRa e Arduino nano e uno é necessário ter a biblioteca Software que é nativo da IDE, não necessitando a instalação. Em casos de microcontroladores que possuem mais de uma UART como o ESP32, basta usar os comandos Serial1, Serial2, Serial3 […]

O código abaixo servem tanto para o exemplo do transmissor e do receptor, e para definir como receptor é só enviar “rx”, caso contrário iriar ficar transmitindo valores randômicos.

#include <SoftwareSerial.h>
SoftwareSerial lora(2, 3); // RX, TX

void setup() {
  Serial.begin(9600);
  lora.begin(9600);
}

void loop() {
  String cmd_read = Serial.readStringUntil('\n');
  if (cmd_read != "") {
    Serial.println(cmd_read);
    if (cmd_read == "RX" || cmd_read == "rx") {
      Serial.println("LoRa configurado como: Receptor");
      while (true)
      {
        String lora_value = lora.readString();
        if (lora_value != "")
          Serial.println(lora_value);
        String cmd_stop_rx = Serial.readStringUntil('\n');
        if (cmd_stop_rx == "stop_rx")
        {
          Serial.println("Modo RX Desativo!");
          break;
        }
      }
    }
    if (cmd_read == "TX" || cmd_read == "tx") {
      while (true)
      {
        String r = String(random(1000, 99999));
        lora.println(r);
        Serial.println("Valor enviado: " + r);
        String cmd_stop_tx = Serial.readStringUntil('\n');
        if (cmd_stop_tx == "stop_tx")
        {
          Serial.println("Modo TX Desativo!");
          break;
        }
        delay(1000);
      }
    }
  }
}

Funcionamento LoRa e Arduino

O funcionamento do E32915T30D foi apenas uma demonstração de conceito e não foi feito o teste real para validar a distância de transmissão mas o range de 8km mencionado nesse post foi com base no datasheet da fabricante. Único teste de distância realizado foi andar com um LoRa recebendo dados em Json a uma distância de 192m passando por locais extremante fechado e recebeu dados o tempo todo!!

Considerações

Por mais que não tenha sido realizado testes para comprovar distância do E32915T30D o LoRa aparentemente se mostrou um transceptor incrível mas falta ainda realizar o teste prático a longa distância.