Arduino LORA – Long Range – Reyax RYLR998 – Uzun Menzilli Haberleşme – Ders 47 –

Kablosuz uzak mesafelere mesaj gönderme yada herhangi bir donanımı aktif/pasif etmek için Long Range (LORA) sistemleri kullanılabilir.

LORA, rf sinyalleri kullanarak kendi arasında uygun dil ile kodlanırsa 5 ile 20 KM gibi uzak mesafelere veri gönderip alabilirler. Gönderilecek veri tipleri, metin mesajı olduğu gibi data sinyalleri de olabilmektedir. Gönderilen mesaj yada data sinyaline göre işlemler yapılabilmektedir. Örneğin Aç/kapa sinyali gönderilerek bir röle yada kantaktör çekilebilmektedir. Yine gönderilen sinyalin sağlıklı ulaşıp ulaşmadığının geri bildirimi alınabilmektedir. Bu sistemler arada herhangi bir ek röle ayda anten sistemi olmadan doğrudan iletilebilmektedir.

Lora ile kurulacak sistemde iki lora aynı frekansta ve aynı dilde kodlanmalıdır. Bu sayede araya başka bir frekans karışamamakta ve başka bir sistem tarafından aradaki haberleşme dinlenememektedir. Dilenirse şifreli mesaj da iletilip alınabilmektedir.

Lora sistemleri bir çok marka ve modelde bulunmaktadır. Bu yazımızda bizler REYAX firmasının RYRL998 modelini kullanarak bir örnek yaptık. LORA ile ilgili neler yapılabilir daha fazlası için bizleri youtube kanalımızdan takip edebilirsiniz.

reyax-ryrl998
reyax-ryrl998

Bu modüllerden elinizde 2 adet olması gerekmektedir. 5 adet bağlantı pini bulunmaktadır. Bunlardan VDD pini +3.3Volt ile beslenmesi gerekir. GND hattı eksiye bağlanmalı, RX ve TX pinleri arduinodan dijital pinlere bağlanması gerekmektedir. RST pini ise jine dijital pine bağlanabilir.
Reyax RYRL998 modelini arduino ile kullanmadan önce USB TTL dönüştürücü ile ayarlarının yapılması gerekmekedir. USb to TTL bağlantısını şemadaki gibi yapabilirsiniz.

USB to TTL

Parametre ayarları için bu bağlantıyı tıklayınız

Hem verici hem de alıcı LORA modülünüzün ayarlarını yaptıktan sonra artık Arduino ile kodlama yapabilirsiniz.

VERİCİ ŞEMA BAĞLANTISI

lora_verici_sema
lora_verici_sema

VERİCİ LORA KODLARI

//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı LORA Verici Kodları  - kullanımı örnek Kodları


#include <SoftwareSerial.h>
#include <Wire.h>
#include <SPI.h>
#include <dht.h>

#define pin 9
#define LED 10
#define buton 8

dht DHT;
String lora_RX_addresi = "1";
SoftwareSerial lora(2, 3);


void setup() {
  
  Serial.begin(9600);
  lora.begin(9600);
  pinMode(buton, INPUT_PULLUP);
  pinMode(LED,OUTPUT);



}

void loop() {


  digitalWrite(LED, LOW);
  int readData = DHT.read22(pin);
  float isi = DHT.temperature;
  float nem = DHT.humidity;

  String temp = String(isi);
  String hum = String(nem);

  String values = "ISI:" + String(temp) + "," + "NEM:" + String(hum) + "," + "MESAFE:";
  String cmd = "AT+SEND=0," + String(values.length()) + "," + values;
  lora.println(cmd);
  delay(50);
  while (lora.available())
  {
    Serial.write(lora.read());
    digitalWrite(LED, HIGH);

  }
  delay(2000);
 

  while (digitalRead(buton) == HIGH) {
  lora.println("AT+SEND=1"",7,LED_YAK"); // AT+SEND=1,3,YAK
    delay(1000);
  }



 while (isi >= 22.50 ) {

    lora.println("AT+SEND=" + lora_RX_addresi + ",10,YUKSEK ISI"); 
    delay(1000);
    lora.println(cmd);

    int readData = DHT.read22(pin);
    float isi = DHT.temperature;
    float nem = DHT.humidity;
    String temp = String(isi);
    break;
  }
}

ALICI LORA BAĞLANTI ŞEMASI

lora_alici_sema
lora_alici_sema

ALICI LORA KODLARI

//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı LORA Aıcı Kodları  - kullanımı örnek Kodları


#include <SoftwareSerial.h>
SoftwareSerial lora(2, 3);

#define LED_red 8
#define LED_green 9
String gelenMesaj;

void setup() {
  Serial.begin(9600);
  lora.begin(9600);
  pinMode(LED_red, OUTPUT);
  pinMode(LED_green, OUTPUT);  

}

void loop() {

if (lora.available()) {

    gelenMesaj = lora.readString();
    char bilgi[25];
    gelenMesaj.toCharArray(bilgi, 25);
    char* data = strtok(bilgi, ",");


    data = strtok(NULL, ",");
    data = strtok(NULL, ",");

    Serial.print("MESAJ > ");
    Serial.println(data);
    Serial.print("RAPOR > ");
    Serial.println(gelenMesaj);

 if (strcmp(data, "LED_YAK") == 0) {


      digitalWrite(LED_red, HIGH);
      digitalWrite(LED_green, LOW);
      delay(1000);
 }

if (strcmp(data, "YUKSEK ISI") == 0) {

      digitalWrite(LED_red, HIGH);
      digitalWrite(LED_green, LOW);
      delay(1000);

    }
 
  digitalWrite(LED_green, HIGH);
  digitalWrite(LED_red, LOW);
}
}
Videoyu İzlemek İçin Tıklayınız