Röle ve Lora Kumanda

Pratik Röle Aç Kapa Uygulaması

Pratik Röle Aç Kapa Uygulaması

Merhaba Arkadaşlar bu yazımızda arkadaşlardan çokça soru olarak gelen düğmeye bastığımızda uzaktaki Röle açılsın, elimizi çektiğimizde röle kapansın uygulaması yapacağız.

LoRa ile Röle Açma Kapama Uygulaması

Gerekli Malzemeler

Bu projede Lora Uzman setini kullandım, gerekli buton ve Röleyi siz kendinize uygun olanı seçebilirsiniz.

LoRa Uzman Seti
LoRa Uzman Seti

E22 900T22D Lora Modülü uygun anten, PCB , Kutu ve Arduino nano modülleri ile birlikte en Uygun Fiyatlı set.

Kodlar

Kumanda Kısmının kodu

#include "LoRa_E22.h"
// #include "LoRa_E32.h" // E32 modülleri için bunu aktif et
#include <SoftwareSerial.h>


SoftwareSerial mySerial(10, 11);
LoRa_E22 E22(&mySerial);
// LoRa_E32 E32(&mySerial); // E32 modülleri için bunu aktif et

#define M0 7
#define M1 6
#define buton1 2
#define buton2 3


struct Signal {
  char sifre[15] = "Fixaj.com";
  char konum[15];
  byte btn1;
  byte btn2;
} data;

unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 2000;

bool mesajGonder = false;
bool butonDurumu = false;
bool butonDurumu2 = false;

void setup() {
  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, LOW);
  digitalWrite(M1, LOW);

  Serial.begin(9600);
  E22.begin();

  pinMode(buton1, INPUT_PULLUP);
  pinMode(buton2, INPUT_PULLUP);

  delay(500);
  Serial.println("başlıyoruz.. Fixaj.com");
}

void loop() {
  if (!digitalRead(buton1)) {
    data.btn1 = 1;
    mesajGonder = true;
    butonDurumu = true; 

  } else if (butonDurumu && digitalRead(buton1)) {
    data.btn1 = 0;
    mesajGonder = true;
    butonDurumu = false;
    kanalBekleme_sure = 0;
  }

  if (!digitalRead(buton2)) {
    data.btn2 = 1;
    mesajGonder = true;
    butonDurumu2 = true; 

  } else if (butonDurumu2 && digitalRead(buton2)) {
    data.btn2 = 0;
    mesajGonder = true;
    butonDurumu2 = false;
    kanalBekleme_sure = 0;
  }

  if (millis() > kanalBekleme_sure + kanalBekleme_bekleme && mesajGonder) {
    kanalBekleme_sure = millis();
    ResponseStatus rs = E22.sendFixedMessage(0, 1, 63, &data, sizeof(Signal));
    Serial.print("buton 2 : ");
    Serial.print(data.btn2);
    Serial.print(", ");
    Serial.println(rs.getResponseDescription());
    mesajGonder = false;
  }
}

Röle Kısmının Kodu

#include "LoRa_E22.h"
#include <SoftwareSerial.h>

#define M0 7
#define M1 6
#define role1 2
#define role2 4

SoftwareSerial mySerial(10, 11);
LoRa_E22 E22(&mySerial);

unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 5000;

struct Signal {
  char sifre[15] = "Fixaj.com";
  char konum[15];
  byte btn1;
  byte btn2;
} data;

void setup() {
  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, LOW);
  digitalWrite(M1, LOW);

  Serial.begin(9600);
  E22.begin();

  pinMode(role1, OUTPUT);
  pinMode(role2, OUTPUT);

  delay(500);
  Serial.println("başlıyoruz.. Fixaj.com");
}

void loop() {
  while (E22.available() > 1) {
    // Gelen mesaj okunuyor
    ResponseStructContainer rsc = E22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*)rsc.data;
    rsc.close();

    if (strcmp(data.sifre, "Fixaj.com") == 0) {
      Serial.println("şifre doğru");
      kanalBekleme_sure = millis();

      if (data.btn1 == 1) {

        Serial.println("Röle 1 AÇ");
        digitalWrite(role1, HIGH);
        delay(30);

      } else if (data.btn1 == 0) {

        Serial.println("Röle 1 KAPAT");
        digitalWrite(role1, LOW);
        delay(30);
      }

      if (data.btn2 == 1) {

        Serial.println("Röle 2 AÇ");
        digitalWrite(role2, HIGH);
        delay(30);

      } else {

        Serial.println("Röle 2 KAPAT");
        digitalWrite(role2, LOW);
        delay(30);
      }
    }
  }
    if (millis() > kanalBekleme_sure + kanalBekleme_bekleme) {
      digitalWrite(role1, LOW);
      digitalWrite(role2, LOW);
    }
  
}

Lora Parametre Ayar Ekranı

Bu ayarlar Rölenin takılı olduğu PCB deki LoRa modülünün Parametre Ayarlarıdır.

Kumanda kısmı çok önemli değildir, farklı bir adres vererek diğer ayarları aynı yapabilirsiniz.

Sonuç

Detaylı anlatım ve sonuçta nasıl çalıştığını görmek için youtube videosunu izleyin