Configuração Inicial Lora Mesh

Olá, sou novato em comunicação com lora e estou tendo muita dificuldade com este módulo LoraMesh. Estou tentando comunicar dois módulos LoraMesh utilizando ESP32 como interface para enviar os comandos via serial, porém não estou tendo resultado nenhum. Para a programação estou utilizando a IDE do Arduino.

Alguém consegue me mandar um código básico do que mandar para configurar o canal e a ID do dispositivo via serial? Li no manual que é necessário utilizar o comando Local Read para obter os parâmetros do dispositivo antes de enviar as configurações, porém quando mando o comando 0xE2 via serial, o módulo não retorna nada. É como se estivesse morto.

Olá Martin…

Todos os comandos precisam do verificador CRC16 no final do comando e, se… não bater o CRC o módulo não responde nada.

Tente seguir o tutorial que usa o NodeMCU.
http://download.radioenge.com.br/iot/LoRaMESH+ESP8266.zip
Neste exemplo feito usando a IDE do Arduino tem exemplos de comandos já com a função para calcular o CRC.

Estou utilizando o seguinte código para a função Local Read:

"
int Byte = 0;
const int Pin13 = 13;
int Pino13 = 0;
void setup() {
Serial.begin(9600);
pinMode (Pin13, INPUT);
}
void loop() {
Pino13 = digitalRead(13);
if(Pino13 == HIGH){
Serial.write(“0x00”);
Serial.write(“0x00”);
Serial.write(“0xE2”);
Serial.write(“0x00”);
Serial.write(“0x00”);
Serial.write(“0x00”);
Serial.write(“0x15”);
Serial.write(“0xB8”);
delay(2000);
}
if (Serial.available() > 0) {
Byte = Serial.read();
Serial.print("Recebido: ");
Serial.println(Byte, DEC);
}
}
"

O cálculo do CRC não está no código, mas está correto, e os valores enviados via serial são os mesmos que o SW_LoRaMESH_6R12 “printa” quando eu clico em Local Read no software. Porém eu mando estes valores (convertidos para hex) via serial para o módulo lora e na porta serial apenas aparece o que foi enviado. O módulo não emite nenhuma resposta.

Sugestões:

  • Verifique se a fiação entre TX e o RX não estão invertidos. (inverta e teste novamente).
  • Use o exemplo que lhe passei, por favor. Este exemplo foi testado e é funcional. Tem um arquivo .ino com vários exemplos de comandos.
  • o que acontece durante o delay(2000)? A serial continua funcionando? seria bom evitar esperas ocupadas.
  • Neste exemplo do forum Arduino … está sendo usado um modo diferente para envio de bytes em hexadecimal:
    https://forum.arduino.cc/index.php?topic=142248.0

Pelo visto o problema era o jeito que eu estava enviando. Removi o Delay e utilizei outra forma de envio. Agora deu certo. Caso alguém precise, segue o código:

int Byte = 0;
const int Pin13 = 13;
int Pino13 = 0;
int chk = 0;
void setup() {
Serial.begin(9600);
pinMode (Pin13, INPUT);
}
void loop() {
Pino13 = digitalRead(13);
if(Pino13 == HIGH && chk == 0){
chk = 1;
byte message[] = {0x00, 0x00, 0xE2, 0x00, 0x00, 0x00, 0x15, 0xb8 };
Serial.write(message, sizeof(message));
}
if (Serial.available() > 0) {
Byte = Serial.read();
Serial.print("Recebido: ");
Serial.println(Byte, DEC);
chk = 0;
}
}