LoRa Teknolojisi

LoRa Teknolojisi

LoRa teknolojisi uzun mesafe iletişimi için kullanılan ve internet bağımlılığı olmayan bir kablosuz iletişim teknolojisidir. LoRa, kendi kablosuz ağını oluşturur ve internet bağlantısına ihtiyaç duymadan cihazlar arasında veri alışverişi yapabilir.

LoRa, "Long Range" anlamına gelen uzun menzilli kablosuz iletişim teknolojisidir. Düşük güç tüketimi ve uzun menzil özellikleriyle öne çıkar. Bu sayede, cihazlar arasındaki iletişim geniş bir kapsama alanında gerçekleştirilebilir. Özellikle IoT (nesnelerin interneti) uygulamalarında, uzaktan izleme, sensör ağları, akıllı şehirler, tarımsal uygulamalar gibi alanlarda LoRa sıklıkla tercih edilen bir teknolojidir.

LoRa, kendine özgü bir protokol kullanır ve genellikle ISM (Endüstriyel, Bilimsel ve Tıbbi) bantlarındaki lisanssız frekansları kullanır. Bu sayede, internet bağımlılığı olmadan cihazlar arasında doğrudan iletişim sağlanabilir.

Ancak, LoRa teknolojisi bağımsız bir internet bağlantısı sağlamaz. Eğer cihazların internete erişim sağlaması gerekiyorsa, ayrı bir bağlantı yöntemi veya LoRa ağını bir ağ geçidine (gateway) bağlama gerekebilir. Bu şekilde, LoRa modüllerinden alınan verilerin internete iletilmesi mümkün olur.

LoRa teknolojisi, tipik olarak 2 ila 10 kilometre arasında olan uzun iletişim menzillerine sahiptir. Buna ek olarak, engellerin arasından sinyal geçişi yapabilme kabiliyetine sahiptir. Genellikle 433 MHz, 868 MHz veya 915 MHz gibi lisanssız ISM (Endüstriyel, Bilimsel ve Tıbbi) bantlarında çalışır. Bu frekanslar, düşük güç tüketimi ve geniş kapsama alanı sunar.


LoRa modülleri, genellikle yarı çift yönlü (half-duplex) iletişim sağlar. Bu, aynı zamanda hem verici hem de alıcı olamayacakları anlamına gelir. Yani, aynı anda veri gönderip alamazlar. Ancak, modülün duruma göre değişen zaman aralıklarında alıcı veya verici olarak çalışması mümkündür.


Günümüzde, üretilen LoRa modülleri mikrodenetleyicilerle kolay bir şekilde entegre olabilir. Sitemizde bazı mikrodenetleyiciler ile farklı modüllerin bağlantı şemalarını ve kod örneklerini paylaşıyoruz. Örnek olarak seçtiğimiz Ra-01 LoRa SX1278 modülünün Arduino Nano'ya bağlantısının ardından kod örneklerini de aşağıya ekledik.

Verici (Transmitter) Bağlantıları:

Ra-01 DI0_PIN -> Arduino Nano D2
Ra-01 SCK_PIN -> Arduino Nano D13
Ra-01 MISO_PIN -> Arduino Nano D12
Ra-01 MOSI_PIN -> Arduino Nano D11
Ra-01 SS_PIN -> Arduino Nano D10
Ra-01 RST_PIN -> Arduino Nano D9


Alıcı (Receiver) Bağlantıları:

Ra-01 DI0_PIN -> Arduino Nano D2
Ra-01 SCK_PIN -> Arduino Nano D13
Ra-01 MISO_PIN -> Arduino Nano D12
Ra-01 MOSI_PIN -> Arduino Nano D11
Ra-01 SS_PIN -> Arduino Nano D10
Ra-01 RST_PIN -> Arduino Nano D9

İki adet Nano'ya bağlanmış iki adet Ra-01 LoRa SX1278 modülünün birbiriyle haberleşebilmesi için gereken kodlar:

 

Verici Kodu (Transmitter):

#include <SPI.h>
#include <LoRa.h>

const int DI0_PIN = 2;     // Ra-01 DI0 pinini Arduino Nano D2 pinine bağlayın
const int SCK_PIN = 13;    // Ra-01 SCK pinini Arduino Nano D13 pinine bağlayın
const int MISO_PIN = 12;   // Ra-01 MISO pinini Arduino Nano D12 pinine bağlayın
const int MOSI_PIN = 11;   // Ra-01 MOSI pinini Arduino Nano D11 pinine bağlayın
const int NSS_PIN = 10;    // Ra-01 NSS pinini Arduino Nano D10 pinine bağlayın
const int RST_PIN = 9;     // Ra-01 RST pinini Arduino Nano D9 pinine bağlayın

void setup() {
  Serial.begin(9600);
  while (!Serial);

  LoRa.setPins(NSS_PIN, RST_PIN, DI0_PIN);
  SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN);

  if (!LoRa.begin(433E6)) {
    Serial.println("LoRa başlatılamadı. Kontrol edin!");
    while (1);
  }

  Serial.println("LoRa verici başlatıldı.");
}

void loop() {
  String data = "Merhaba, bu bir LoRa testidir!";
  LoRa.beginPacket();
  LoRa.print(data);
  LoRa.endPacket();

  Serial.println("Veri gönderildi: " + data);
  delay(5000);  // 5 saniye bekleme süresi
}

 


 

Alıcı Kodu (Receiver):

 

#include <SPI.h>
#include <LoRa.h>

const int DI0_PIN = 2;     // Ra-01 DI0 pinini Arduino Nano D2 pinine bağlayın
const int SCK_PIN = 13;    // Ra-01 SCK pinini Arduino Nano D13 pinine bağlayın
const int MISO_PIN = 12;   // Ra-01 MISO pinini Arduino Nano D12 pinine bağlayın
const int MOSI_PIN = 11;   // Ra-01 MOSI pinini Arduino Nano D11 pinine bağlayın
const int NSS_PIN = 10;    // Ra-01 NSS pinini Arduino Nano D10 pinine bağlayın
const int RST_PIN = 9;     // Ra-01 RST pinini Arduino Nano D9 pinine bağlayın

void setup() {
  Serial.begin(9600);
  while (!Serial);

  LoRa.setPins(NSS_PIN, RST_PIN, DI0_PIN);
  SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN);

  if (!LoRa.begin(433E6)) {
    Serial.println("LoRa başlatılamadı. Kontrol edin!");
    while (1);
  }

  Serial.println("LoRa alıcı başlatıldı.");
}

void loop() {
  if (LoRa.parsePacket()) {
    while (LoRa.available()) {
      String receivedData = LoRa.readString();
      Serial.println("Alınan veri: " + receivedData);
    }
  }
}

 

Bu kodlar, LoRa kütüphanesini kullanır ve SPI bağlantısını gerektirir. SS_PIN, RST_PIN, DI0_PIN,MOSI_PIN, MISO_PIN ve SCK_PIN değerleri, LoRa modülünün Arduino Nano'ya bağlanan pinlerini belirtmektedir. güç Beslemeleri doğru şekilde yapılandırılmalıdır(3.3V ve GND)

Kodu yükledikten sonra, verici Arduino Nano tarafından gönderilen veriler alıcı Arduino Nano tarafından alınacak ve seri monitörde görüntülenecektir.

Kodu kullanmadan önce, her iki Arduino Nano'ya da LoRa kütüphanesini(LoRa.h) yüklenmelidir. Arduino IDE'de "Kütüphane Yöneticisi" aracılığıyla LoRa kütüphanesini bulabilir ve yüklenebilir.

Farklı bir frekanstan haberleşme sağlanmak isteniyorsa aşağıdaki satırdaki değişiklik yapılmalıdır:

if (!LoRa.begin(433E6)) : Bu satırdaki 433E6 değeri 433 MHz değerini gösterir. Diğer frekans seçenekleri ise şunlardır :

868 MHz için: 868E6

915 MHz için: 915E6

 

Not:

LoRa Ra-01 modülü 433 MHz frekans bandında çalışırken, LoRa Ra-02 modülü 433 MHz , 868 MHz ve 915 MHz frekans bandında çalışabilme özelliğine sahiptir. Ra-02, daha geniş bir frekans aralığı sunarak kullanıcıya seçenek sağlar.