0% acharam este documento útil (0 voto)
49 visualizações8 páginas

Código Arduino Lora

O documento descreve um código para comunicação entre um LoRa Mestre e três LoRas Escravos utilizando a biblioteca RadioHead. O mestre envia comandos específicos para cada escravo, que respondem confirmando a recepção e executando ações como ligar, desligar ou enviar status. O projeto inclui instruções para configuração e próximos passos, como testar a comunicação e integrar com uma interface gráfica em C#.

Enviado por

desi
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
49 visualizações8 páginas

Código Arduino Lora

O documento descreve um código para comunicação entre um LoRa Mestre e três LoRas Escravos utilizando a biblioteca RadioHead. O mestre envia comandos específicos para cada escravo, que respondem confirmando a recepção e executando ações como ligar, desligar ou enviar status. O projeto inclui instruções para configuração e próximos passos, como testar a comunicação e integrar com uma interface gráfica em C#.

Enviado por

desi
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Aqui está um código para o LoRa Mestre que se comunica com três LoRas Escravos via um mesmo canal,

mas com endereços diferentes.

---

Configuração do Projeto

Mestre envia comandos para os escravos baseados nos endereços.

Escravos respondem confirmando a recepção do comando.

Utiliza LoRa SX1278/SX1276 com a biblioteca RadioHead (RH_RF95).

---

Código para o LoRa Mestre (Arduino)

Este código permite o mestre se comunicar individualmente com cada escravo.

#include <SPI.h>

#include <RH_RF95.h>

// Definição do módulo LoRa

#define RFM95_CS 10 // Pino Chip Select

#define RFM95_RST 9 // Pino Reset

#define RFM95_INT 2 // Pino de interrupção


RH_RF95 rf95(RFM95_CS, RFM95_INT);

#define FREQUENCIA 915.0 // Frequência LoRa

#define CANAL 1 // Canal fixo para todos os dispositivos

// Endereços dos LoRas escravos

#define LORA1 1

#define LORA2 2

#define LORA3 3

void setup() {

Serial.begin(9600);

pinMode(RFM95_RST, OUTPUT);

digitalWrite(RFM95_RST, HIGH);

if (!rf95.init()) {

Serial.println("LoRa Mestre: Falha ao inicializar LoRa");

while (1);

rf95.setFrequency(FREQUENCIA);

rf95.setTxPower(23, false);

rf95.setModemConfig(RH_RF95::Bw125Cr45Sf128); // Config padrão LoRa

Serial.println("LoRa Mestre Pronto!");

void loop() {

// Exemplo de envio de comando


enviarComando(LORA1, "LIGAR");

delay(2000);

enviarComando(LORA2, "DESLIGAR");

delay(2000);

enviarComando(LORA3, "STATUS");

delay(2000);

void enviarComando(uint8_t endereco, String comando) {

Serial.print("Enviando para LoRa ");

Serial.print(endereco);

Serial.print(": ");

Serial.println(comando);

uint8_t mensagem[RH_RF95_MAX_MESSAGE_LEN];

comando.getBytes(mensagem, RH_RF95_MAX_MESSAGE_LEN);

rf95.send(mensagem, comando.length());

rf95.waitPacketSent();

// Aguardar resposta do escravo

if (rf95.waitAvailableTimeout(2000)) {

uint8_t resposta[RH_RF95_MAX_MESSAGE_LEN];

uint8_t tamanho = sizeof(resposta);

if (rf95.recv(resposta, &tamanho)) {

Serial.print("Resposta do LoRa ");


Serial.print(endereco);

Serial.print(": ");

Serial.println((char*)resposta);

} else {

Serial.println("Sem resposta!");

---

Código para os LoRas Escravos

Os três LoRas escravos usam o mesmo código, mas cada um tem um endereço diferente (definido na
variável MEU_ENDERECO).

#include <SPI.h>

#include <RH_RF95.h>

#define RFM95_CS 10

#define RFM95_RST 9

#define RFM95_INT 2

RH_RF95 rf95(RFM95_CS, RFM95_INT);

#define FREQUENCIA 915.0

#define CANAL 1
// Defina o endereço do escravo manualmente (Mude para 2 ou 3 nos outros módulos)

#define MEU_ENDERECO 1

void setup() {

Serial.begin(9600);

pinMode(RFM95_RST, OUTPUT);

digitalWrite(RFM95_RST, HIGH);

if (!rf95.init()) {

Serial.println("Falha ao inicializar LoRa Escravo");

while (1);

rf95.setFrequency(FREQUENCIA);

rf95.setTxPower(23, false);

rf95.setModemConfig(RH_RF95::Bw125Cr45Sf128);

Serial.print("LoRa Escravo ");

Serial.print(MEU_ENDERECO);

Serial.println(" Pronto!");

void loop() {

if (rf95.available()) {

uint8_t mensagem[RH_RF95_MAX_MESSAGE_LEN];

uint8_t tamanho = sizeof(mensagem);

if (rf95.recv(mensagem, &tamanho)) {

String comando = String((char*)mensagem);


Serial.print("Comando recebido: ");

Serial.println(comando);

String resposta;

if (comando == "LIGAR") {

resposta = "Lâmpada Ligada";

} else if (comando == "DESLIGAR") {

resposta = "Lâmpada Desligada";

} else if (comando == "STATUS") {

resposta = "Status: OK";

} else {

resposta = "Comando Desconhecido";

uint8_t respostaBuffer[RH_RF95_MAX_MESSAGE_LEN];

resposta.getBytes(respostaBuffer, RH_RF95_MAX_MESSAGE_LEN);

rf95.send(respostaBuffer, resposta.length());

rf95.waitPacketSent();

---

Explicação

1. Mestre:
Define o canal e frequência.

Envia comandos para cada LoRa escravo baseado no endereço.

Aguarda a resposta de cada escravo.

2. Escravos:

Esperam por um comando.

Executam a ação correspondente (ligar, desligar ou enviar status).

Respondem ao mestre.

---

Próximos Passos

✅ Testar a comunicação entre o mestre e os escravos.

✅ Integrar com sua interface gráfica em C# para enviar comandos e exibir status.

Precisa de algo mais?

Você também pode gostar