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.
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.
Sonuç
Detaylı anlatım ve sonuçta nasıl çalıştığını görmek için youtube videosunu izleyin