Reset do estado da porta digital ao perder o sinal do transmissor LoRa

Projetos com LoRa
patrycklm
Novato
Mensagens: 1
Registrado em: 07/Nov/2019, 15:41

Reset do estado da porta digital ao perder o sinal do transmissor LoRa

Mensagem por patrycklm » 07/Nov/2019, 15:56

Boa tarde!

Estou com um pequeno projeto utilizando 02 ESP32 LoRa da Heltec, um transmissor e um receptor, um telecomando, na verdade por enquanto é um liga e desliga da porta digital 23, (fecho no transmissor o 3,3v com a porta digital 13, que manda o pulso como 1) como sou iniciante, estou com algumas dificuldades, por exemplo como acionar várias portas digitais remotamente, no caso utilizando o rádio LoRa para fechar vários relés de um módulo, porém cada um utilizando uma porta individual, pois na verdade já estou utilizando partes de um código que peguei na internet, que utiliza a serial para receber o bit 1 ou 0 do estado da porta, porém ao declarar outra saida digital ela também liga, devido receber este pacote 1 ou 0 também, precisaria ser indiviual, a minha outra necessidade maior seria resetar o estado da porta digital ao perder a comunicação com o LoRa transmissor, ele mantém o estado 1 ou seja ligado até que religue o outro rádio e selecione a posição desligado e receba o 0 novamente. Não sei se fui muito claro em minhas dúvidas, estou deixando o código do transmissor e do receptor para análise a auxilio de vocês!

Obrigado!!!

Transmissor

Código: Selecionar todos

#include "heltec.h"
#define BAND 915E6
 
void setup () {
Heltec.begin(true, true, true, true, BAND);

// Garante que não iremos receber pacotes de outros rádios LoRa
// Mude a palavra de sincronismo (0xFF) para casar com o receptor 
// Faixas entre 0-0xFF

LoRa.setSyncWord(0xFF);

 Heltec.display->setContrast(255);
 Heltec.display->clear();
  
 Heltec.display->setFont(ArialMT_Plain_24);
 Heltec.display->drawString(0, 0, "Eletrotec");
  
 Heltec.display->setFont(ArialMT_Plain_10);
 Heltec.display->drawString(0, 28, "TRANSMISSOR V1.0");
 Heltec.display->display();

 Heltec.display->setFont(ArialMT_Plain_16);
 Heltec.display->drawString(0, 42, "(27) 3752-1294");
 Heltec.display->display();
}
 
void loop () {
Serial.print("Envio de pacote:");
Serial.println("contador");
 
LoRa.beginPacket();
LoRa.print(digitalRead(13));
LoRa.endPacket();
 
digitalWrite(25, HIGH);
delay(400);
digitalWrite(25, LOW);
delay(400);
}
Receptor

Código: Selecionar todos

#include "heltec.h"
#define BAND 915E6

char st;
void setup () {
Heltec.begin(true, true, true, true, BAND);

// Garante que não iremos receber pacotes de outros rádios LoRa
// Mude a palavra de sincronismo (0xFF) para casar com o transmissor 
// Faixas entre 0-0xFF

LoRa.setSyncWord(0xFF);

 Heltec.display->setContrast(255);
 Heltec.display->clear();
  
 Heltec.display->setFont(ArialMT_Plain_24);
 Heltec.display->drawString(0, 0, "Eletrotec");
  
 Heltec.display->setFont(ArialMT_Plain_16);
 Heltec.display->drawString(0, 25, "RECEPTOR V1.0");
 Heltec.display->display();

 Heltec.display->setFont(ArialMT_Plain_16);
 Heltec.display->drawString(0, 42, "(27) 3752-1294");
 Heltec.display->display();

//Define pino 23 da GPIO como saída
pinMode(23, OUTPUT);
}
 
void loop () {
int packetSize = LoRa.parsePacket();
 
if(packetSize) {
Serial.print("Pacote recebido '");
 
while(LoRa.available ()) {
st = (char)LoRa.read ();
Serial.println(st);
}

//Se a string serial for igual à 0 a o estado da saída é desligado
if (st == '0')
digitalWrite(23,LOW);
//Se a string serial for igual à 1 a o estado da saída é ligado
if (st == '1')
digitalWrite(23,HIGH);

//Exibe no monitor serial o sinal em RSSI
Serial.print("'com RSSI");
Serial.println(LoRa.packetRssi());
}
}

Responder