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.
![](https://bz02b1.n3cdn1.secureserver.net/wp-content/uploads/2022/10/20221015_130134-1.png)
Gerekli Malzemeler
Bu projede Lora Uzman setini kullandım, gerekli buton ve Röleyi siz kendinize uygun olanı seçebilirsiniz.
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(3, 4); //PCB versiyon 4.3 den sonra bu şekilde olmalı
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(3, 4); //PCB versiyon 4.3 den sonra bu şekilde olmalı
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.
![](https://bz02b1.n3cdn1.secureserver.net/wp-content/uploads/2022/10/RF-setting-1.png)
Sonuç
Detaylı anlatım ve sonuçta nasıl çalıştığını görmek için youtube videosunu izleyin