Ajuda com o LoRa

Eu estou testando o LoRa, a onde de um lado tenho um HC-SR04 ligado a um arduino mega 2560 enviando os dados da distancia captada pelo sensor para outro arduino uno através do LoRa. Minha ideia é fazer uma lógica simples de "se a distância for menor que 30cm, acenda o led". Coisa assim.

Os exemplos de LoRa que vejo é apenas usando string que já deixamos escritas numa variável, e eu queria enviar a cada segundo a distância que o sensor me der. Como eu poderia fazer isso? Convertendo o valor de inteiro pra string, e assim enviar pelo LoRa, ou enviar como um valor inteiro e do outro lado tem alguma forma de receber como inteiro também?

Outra pergunta é: Qual delay devo por para enviar um valor e para receber? O receptor deve ter um delay menor ou maior que o transmissor? Vi que isso pode mudar a transmissão e queria saber a melhor forma de usar o LoRa. Estou utilizando o LoRa E32-900T30D.

Código receptor:

#include <SoftwareSerial.h>
//Deve ser usado no UNO

#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);    
}
}

Código Transmissor:

include <SoftwareSerial.h>
#include <Ultrasonic.h>
//deve ser usado no MEGA 

Ultrasonic ultrasonic(12,13); //12 TRIGGER, 13 ECHO

//#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() {

  int distancia;
  distancia = ultrasonic.read();
  delay(1000);
  String Distancia = String(distancia);
  loraSerial.print(Distancia);
  Serial.println(Distancia);
}

Você já tentou trabalhar apenas com strings para ver se a comunicação funciona?

Você não deve usar nenhum delay tanto no envio quanto no recebimento.

No envio use a função millis() para controlar o intervalo de envio dos dados.

Procure pelo exemplo "blink without delay" na IDE.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.