LoRa ile Uzaktan Kontaktör Start-Stop Devresi
Bu yazımızda yüksek güçlü motor, dalgıç pompası ve projektör gibi güçlü cihazların LoRa ile Uzaktan Kontaktör Start-Stop Devresi nasıl yapılır öğreneceğiz.
Kontaktörler bütün panolarda bulunan ve güvenli bir şekilde devre elemanlarını açıp kapatma işine yarar. Bugün sizlerle beraber kontaktör, buton, interrrup ve LoRa modüllerinin birleşimi büyük bir proje yapacağız. Ticari olarak da satılabilir bir proje olacaktır bu yapacağımız proje.
Uygulama Videosu
1.1 Gerekli Malzemeler
2 Kontaktör-Röle Bağlantısı
Öncelikle kontraktörü neden ve nasıl kullanacağımız devre şeması üzerinden gösterelim.

bağlantı şemasını internette burdan buldum https://silo.tips/download/kumanda-devreler-rnek-1-stop-ncelikli-start-stop-devresi-klasik-mhrleme-devresi
3 Pano Tarafı Kod Yapısı
Kontaktöre start stop verebileceğimiz kod yapısı şu şekildedir.
Burada e22 kütüphanesi kullanmayı unutmayın!!!
Link: https://github.com/xreef/EByte_LoRa_E22_Series_Library
#include "LoRa_E22.h"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // Arduino RX <-- e32 TX, Arduino TX --> e32 RX
LoRa_E22 E22(&mySerial);
String sifre = "";
#define M0 7
#define M1 6
#define StartBtn 2
#define StopBtn 9
struct Signal {
char type[15];
bool role;
} data;
void setup() {
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
pinMode(StartBtn, OUTPUT);
pinMode(StopBtn, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
digitalWrite(StartBtn, LOW);
digitalWrite(StopBtn, LOW);
Serial.begin(9600);
E22.begin();
delay(500);
}
void loop() {
while (E22.available() > 1) {
// Gelen mesaj okunuyor
ResponseStructContainer rsc = E22.receiveMessage(sizeof(Signal));
struct Signal data = *(Signal*) rsc.data;
Serial.print("Gelen Messaj: ");
Serial.println(data.type);
if (strcmp(data.type, "Fixaj.com") == 0) {
Serial.println("şifre doğru");
if (data.role) {
Serial.println("role start");
digitalWrite(StartBtn, HIGH);
delay(1000);
digitalWrite(StartBtn, LOW);
delay(1000);
} else {
Serial.println("role stop");
digitalWrite(StopBtn, HIGH);
delay(1000);
digitalWrite(StopBtn, LOW);
delay(1000);
}
}
rsc.close();
}
}
4 Buton İnterrupt
Kumanda devresinden gelecek start stop sinyalini arduino NANO nun 2 nolu pinine bağladık. Çünkü interrupt ile düğmenin basılıp basılmadığını kontrol edeceğiz.

internall pullup ile ilgili yazıyı buradan okuyabilirsinz https://www.arduino.cc/en/Tutorial/DigitalInputPullup
Çalışma mantığı ve debounce

ilgili yazıya şuradan ulaşabilirsiniz https://elextutorial.com/learn-arduino/arduino-button-switch-interface-pull-up-resistor/
5 Kumanda Kod Yapısı
Butondan okuma yapıp ona göre kontaktöre start – stop sinyali verdiğimiz kod yapısı şu şekilde.
#include "LoRa_E22.h"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
/*
Pinler Arduino Nano Lora E32 433T20d
11 3
10 4
*/
LoRa_E22 E22(&mySerial);
struct Signal {
char type[15] = "Fixaj.com";
bool role;
} data;
#define M0 7
#define M1 6
#define BTN 2
volatile bool roleDurumu = false;
volatile bool butonDurumu = false;
void setup() {
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
pinMode(BTN, INPUT_PULLUP);
Serial.begin(9600);
E22.begin();
delay(500);
attachInterrupt(digitalPinToInterrupt(BTN), butonOku, FALLING);
}
void loop() {
if (butonDurumu) {
butonDurumu = false;
if (roleDurumu) {
data.role = 1;
ResponseStatus rs = E22.sendFixedMessage(0, 44, 25, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());
} else {
data.role = 0;
ResponseStatus rs = E22.sendFixedMessage(0, 44, 25, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());
}
Serial.print("data.role: ");
Serial.println(data.role);
}
}
void butonOku() {
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if (interrupt_time - last_interrupt_time > 500)
{
roleDurumu = !roleDurumu;
butonDurumu = true;
}
last_interrupt_time = interrupt_time;
}
6 LoRa Modüllerinin Parametre Ayarları
Lora Modüllerinie 3in1 PCB miz ile RF Setting programı ayarı verebilmemiz için öncelikle şu kodu arduinoya yüklüyoruz.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
#define M0 7
#define M1 6
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, HIGH);
}
void loop() {
if (Serial.available()) {
mySerial.write(Serial.read());
}
if (mySerial.available()) {
Serial.write(mySerial.read());
}
}
Sonrasında RF settin E22 programını açıp portları seçtikten sonra şu ayarları girip set ediyoruz. RF settin E22 programına indirme sayfamızdan ulaşabilirsiniz.
PANO TARAFI LoRa Ayarları

Kumanda Tarafı LoRa ayarları
