LoRa Mesh da Radioenge

Informações sobre a biblioteca e o LoRa

Esta biblioteca, na verdade é um fork da biblioteca da Radioenge, porém foram adicionados as principais configurações do módulo RD42C de modo que o desenvolvedor tenha maior autonomia em suas aplicações, ao invés de usar um aplicativo e configurar manualmente.
  • Autor: Gustavo Cereza;
  • Corrigido por: Marco Chiodi;
  • Testado e revisado por: Gabriel Tabaroski.

Compatibilidade

A biblioteca foi pensada para Arduino (Atmega328p) e para ESP32, pode funcionar em outras placas mas é bom tomar cuidado com a tensão da comunicação UART. No caso do ESP32, se o LoRa for alimentado com 5v, é interessante por um conversor lógico 3v3 para 5v ou por um divisor de tensão no TX do módulo.

Sobre o LoRaMESH

Basciamente o LoRa Mesh é um rádio que utiliza a modulação LoRa porém tem a capacidade de criar uma rede, onde é gerenciada por um único master e vários slaves, podendo chegar até 2047 slaves dentro da mesma rede. Além disso, cada dispositivo tem a capacidade de repassar o pacote um para o outro até que chegue ao destinatário.

image

Caso você caiu nesse repositório de paraquedas e não faz a mínima ideia que módulo é esse, mas teve o interesse de conhecer sobre, acesse este link: https://elcereza.com/lora-mesh-da-radioenge-tutorial-completo/

Configuração de bps

A função que configura o bps já vem preenchida por padrão e quando a gravação é bem sucedida tem um retorno verdadeiro, caso contrário retorna falso.
  bool config_bps(uint8_t bandwidth = BW500, uint8_t spreading_factor = SF_LoRa_7, uint8_t coding_rate = CR4_5);

Bandwidth

Comando Bandwidth
BW125 125kHz
BW250 250kHz
BW500 500kHz

Spreading Factor

Comando Spreading Factor
SF_LoRa_7 7
SF_LoRa_8 8
SF_LoRa_9 9
SF_LoRa_10 10
SF_LoRa_11 11
SF_LoRa_12 12

Coding Rate

Comando Coding Rate
CR4_5 4/5
CR4_6 4/6
CR4_7 4/7
CR4_8 4/8

Configuração da Classe

A função que configura a classe já vem preenchida por padrão e quando a gravação é bem sucedida tem um retorno verdadeiro, caso contrário retorna falso. Porém nessa configuração você deve se atentar tensão da comunicação UART, caso não saiba do que estou falando, acesse o primeiro link do Readme.
  bool config_class(uint8_t lora_class = LoRa_CLASS_C, uint8_t lora_window = LoRa_WINDOW_5s);

Classe

Comando Classe
LoRa_CLASS_A A
LoRa_CLASS_C C

Janela

Comando Janela
LoRa_WINDOW_5s 5s
LoRa_WINDOW_10s 10s
LoRa_WINDOW_15s 15s

Definir ID

A função que defini o ID retorna verdadeiro caso a configuração seja execultada e gravada no módulo ou falso quando a gravação não é bem sucedida. O ID deve ser um valor de 0 a 2047 e cada módulo deve ter o ID diferente do outro. É muito importante que ao definir o ID o tipo deve ser 'uint16_t', caso seja algum outro tipo, faça a conversão da melhor maneira possível.
  bool setnetworkId(uint16_t id);

Definir Senha

Para definir uma senha é necessário que seja um valor numérico de 0 a 4294967295 e com o tipo 'uint32_t'. A função também retorna um valor verdairo após validar a definição da senha, porém o feedback da senha está limitado a 65535.
  bool setpassword(uint32_t password);

Configurar as GPIO's

O LoRa mesh da Radioenge tem 7 GPIO's disponíveis para uso, sendo duas são para entrada ADC e as demais para aplicações digitais. Neste caso, a gravação não tem feedback e apenas retorna verdadeiro caso as configurações definida pelo usuário esteja dentro das regras.
  bool config_digital_gpio(uint8_t gpio, uint8_t pull, uint8_t inout, uint8_t logical_level);

GPIO

Comando GPIO Tipo
LoRa_GPIO0 0 I/O
LoRa_GPIO1 0 I/O
LoRa_GPIO2 2 I/O
LoRa_GPIO3 3 I/O
LoRa_GPIO4 4 I/O
LoRa_GPIO5 5 I/O ou ADC
LoRa_GPIO6 6 I/O ou ADC
LoRa_GPIO7 7 I/O

PULL

Comando PULL
LoRa_NOT_PULL Sem PULL
LoRa_PULLUP PULL UP
LoRa_PULLDOWN PULL DOWN

INOUT

Comando Definição
LoRa_INOUT_DIGITAL_INPUT INPUT Digital
LoRa_INOUT_DIGITAL_OUTPUT OUTPUT Digital
LoRa_INOUT_ANALOG_INPUT ADC

Nível lógio inicial

Comando Estado Lógico
LoRa_LOGICAL_LEVEL_LOW LOW
LoRa_LOGICAL_LEVEL_HIGH HIGH