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