Iniciando com LoRaMESH - IDE Arduino

Olá a todos!

Meu caso é simples:
O escravo tem um Botão e um Led conectados a ele. Ao pressionar o botão, o mestre deve receber o sinal por Lora e devolver acionando o led, só isso.

Conseguindo isso, vou incrementar mais 6 escravos na rede mesh.
O problema é que não consigo compilar meu código na IDE do arduino, por não ter a biblioteca <LoRaMESH.h>.

As bibliotecas estão indisponíveis em:
https://github.com/Radioenge/LoRaMESH (No github da Radioenge não tem bibli para Mesh)
https://github.com/MarcoAOC/LoRaMESH_STM8L
Obs. Não posso publicar mais de 2 links por ser usuário novo.

Tentei adaptar um código que achei na internet, que é simples e o mais próximo do que preciso, mas sem sucesso.
Alguém tem algum código de referencia para arduino para os módulos LoRaMESH? Ou uma biblioteca?

#include <LoRaMESH.h>
#include <SoftwareSerial.h>
#include <stdint.h>

uint16_t localId;
uint16_t localNet;
uint16_t localUniqueId;

/* IDS dos modulos sensores */
uint16_t LEDID = 3;
uint16_t BUTTON = 3;

/* Payload buffer */
uint8_t bufferPayload[MAX_PAYLOAD_SIZE] = {0};
//uint16_t baudrate = 9600;

SoftwareSerial* hSerialCommands = NULL;
boolean ledstatus = false;

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

hSerialCommands = SerialCommandsInit(7, 6, 9600);

/* Verificação se está corretamente conectado */
delay(500);
while(LocalRead(&localId, &localNet, &localUniqueId) != MESH_OK)
Serial.print(“Nao foi possivel inicializar com LocalID\n\n”);

delay(500);
if(GpioConfig(LEDID, GPIO6, DIGITAL_IN, PULLDOWN) != MESH_OK)
Serial.print(“Erro configurando GPIO6 do LED\n\n”);
}

void loop() {

delay(500);
if(GpioRead(BUTTON, GPIO6, HIGH) != MESH_OK)
Serial.print("\nErro de comunicacao com leitura Botao\n\n");
else
{
Serial.println("\nBOTAO: ON");
if(ledstatus==true){
if(GpioWrite(LEDID, GPIO0,1) != MESH_OK)
Serial.print("\nErro de comunicacao com acionamento LED\n\n");
else
ledstatus = false;
}

else{
  if(ledstatus == false){
    if(GpioWrite(LEDID, GPIO0,0) != MESH_OK)
      Serial.print("\nErro de comunicacao com LED\n\n");
    else
      ledstatus = true;
  }
}

}
}

Não sei se entendi corretamente mas, me parece que você está tentando programar o módulo LoRaMESH como se ele fosse uma placa de desenvolvimento (Arduino, ESP32, etc). Seria isso?

Se for isso… não funcionaria. O RD42C é um módulo de comunicação LoRa com alguns parâmetros configuráveis via interface serial usart. Não é possível reprogramar o módulo. A biblioteca do github é para usar com o Arduino conectado via serial usart com o módulo LoRa.

Obrigado, fabio.

Passei o feriado estudando o manual e agora está tudo funcionando perfeitamente. Depois que percebi que minha pergunta foi besta rsrs.

Mas, aproveitando, tenho outra pergunta:
Quando envio um simples comando do mestre (ID=0) para o (ID=x), os outros recebem e já exercem sua função de Mesh, indo de ID ao ID até chegar no final? E o inverso também?

Pergunto isso porque notei que quando envio um pacote para o ID=1 (por exemplo), os outros também piscam o led verde (recepção), mas só o ID1 pisca o vermelho (transmissão).
Os outros também não tinham que piscar o vermelho, informando que passaram adiante o pacote? Ou seja, como posso verificar que o pacote passou por outros e que a rede Mesh está funcionando?

Quando envio um simples comando do mestre (ID=0) para o (ID=x), os outros recebem e já exercem sua função de Mesh, indo de ID ao ID até chegar no final? E o inverso também?
Pergunto isso porque notei que quando envio um pacote para o ID=1 (por exemplo), os outros também piscam o led verde (recepção), mas só o ID1 pisca o vermelho (transmissão).
Sim. A formação da rota é automática. Tanto para no sentido mestre->escravo quanto no inverso. No primeiro pacote a rota é formada e a rede vai usar o mesmo “caminho”. Toda transmissão tem uma confirmação. se não receber a confirmação a rede vai formar outra rota (self healing).
As rotas de mestre para escravo podem ser diferentes das rotas de escravo para mestre.

Os outros também não tinham que piscar o vermelho, informando que passaram adiante o pacote?
Não. somente o rádio que é a rota faz a retransmissão para não poluir o espectro e não causar interferência.

Ou seja, como posso verificar que o pacote passou por outros e que a rede Mesh está funcionando?
Pode usar a função via do SW LoRaMESH ou desligar o rádio que fez a retransmissão (aquele que não era o destino, mas que piscou o led vermelho).
No exemplo abaixo está sendo solicitado o nível de sinal do rádio 1 passando pelo rádio 4.
image

Obrigado, fabio!
Deu certo.