IoT & Gömülü Sistemler

LoRa ile Uzun Menzilli IoT Haberleşme Sistemi Kurulumu

Fatih Algül
13.03.2026 208 görüntülenme

LoRa Teknolojisine Genel Bakış

LoRa (Long Range), düşük güç tüketimiyle kilometrelerce menzil sunan bir kablosuz haberleşme teknolojisidir. IoT (Nesnelerin İnterneti) projelerinde sensör verilerinin uzak noktalara iletilmesi gerektiğinde, Wi-Fi veya Bluetooth gibi kısa menzilli protokoller yetersiz kalır. İşte tam bu noktada LoRa devreye girer. 868 MHz (Avrupa) veya 915 MHz (Amerika) frekans bantlarında çalışan LoRa, açık alanda 15 km'ye kadar menzil sağlayabilir.

LoRa ile LoRaWAN arasındaki farkı anlamak önemlidir: LoRa fiziksel katmandaki modülasyon tekniğini ifade ederken, LoRaWAN ağ protokolü katmanını tanımlar. Bu yazıda hem noktadan noktaya (P2P) LoRa haberleşmesini hem de LoRaWAN ağ kurulumunu ele alacağız.

Gerekli Donanım Bileşenleri

  • LoRa Modülü: SX1276 veya SX1278 tabanlı modüller (örneğin RFM95W, Ra-02)
  • Mikrodenetleyici: ESP32, Arduino Uno veya STM32
  • Anten: 868 MHz veya 433 MHz uyumlu SMA anten (frekans bandınıza göre)
  • Sensörler: DHT22 (sıcaklık/nem), BMP280 (basınç) veya toprak nem sensörü
  • Güç Kaynağı: 3.7V LiPo pil veya güneş paneli + şarj modülü
  • LoRaWAN Gateway (isteğe bağlı): RAK7243, Dragino LPS8 veya DIY Raspberry Pi tabanlı gateway

Donanım Bağlantısı (ESP32 + SX1276)

ESP32 ile SX1276 modülünü SPI protokolü üzerinden bağlayacağız. Aşağıdaki pin bağlantı şemasını takip edin:

  • SX1276 MISO → ESP32 GPIO19
  • SX1276 MOSI → ESP32 GPIO27
  • SX1276 SCK → ESP32 GPIO5
  • SX1276 NSS (CS) → ESP32 GPIO18
  • SX1276 RST → ESP32 GPIO14
  • SX1276 DIO0 → ESP32 GPIO26
  • SX1276 VCC → 3.3V
  • SX1276 GND → GND

Önemli: SX1276 modülü 3.3V ile çalışır. Kesinlikle 5V uygulamayın, aksi halde modül kalıcı olarak hasar görebilir. Ayrıca anten bağlamadan modülü çalıştırmak RF çıkış katına zarar verebilir.

Yazılım Kurulumu ve Kütüphaneler

Arduino IDE üzerinde çalışacağız. Öncelikle gerekli kütüphaneleri yükleyin:

  • LoRa by Sandeep Mistry: Temel LoRa P2P haberleşme için
  • LMIC (LoRaWAN-in-C): LoRaWAN ağına katılmak için
  • RadioLib: Gelişmiş LoRa kontrol seçenekleri sunan alternatif kütüphane

Arduino IDE'de Araçlar → Kütüphane Yöneticisi yolunu izleyerek LoRa kütüphanesini arayın ve yükleyin.

Verici (Transmitter) Kodu

Aşağıdaki kod, DHT22 sensöründen sıcaklık ve nem verisini okuyarak LoRa üzerinden belirli aralıklarla gönderir:

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

#define SS 18
#define RST 14
#define DIO0 26
#define BAND 868E6
#define DHTPIN 4
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
int packetCounter = 0;

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

  dht.begin();

  LoRa.setPins(SS, RST, DIO0);
  if (!LoRa.begin(BAND)) {
    Serial.println("LoRa baslatma hatasi!");
    while (1);
  }

  // Performans ayarlari
  LoRa.setSpreadingFactor(7);
  LoRa.setSignalBandwidth(125E3);
  LoRa.setCodingRate4(5);
  LoRa.setTxPower(20);

  Serial.println("LoRa verici hazir.");
}

void loop() {
  float sicaklik = dht.readTemperature();
  float nem = dht.readHumidity();

  if (isnan(sicaklik) || isnan(nem)) {
    Serial.println("Sensor okuma hatasi!");
    delay(2000);
    return;
  }

  String mesaj = String(packetCounter) + ","
               + String(sicaklik, 1) + ","
               + String(nem, 1);

  LoRa.beginPacket();
  LoRa.print(mesaj);
  LoRa.endPacket();

  Serial.print("Gonderildi: ");
  Serial.println(mesaj);

  packetCounter++;
  delay(30000); // 30 saniyede bir gonder
}

Alıcı (Receiver) Kodu

Alıcı tarafında gelen paketleri dinleyip seri porta yazdıran kod:

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

#define SS 18
#define RST 14
#define DIO0 26
#define BAND 868E6

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

  LoRa.setPins(SS, RST, DIO0);
  if (!LoRa.begin(BAND)) {
    Serial.println("LoRa baslatma hatasi!");
    while (1);
  }

  LoRa.setSpreadingFactor(7);
  LoRa.setSignalBandwidth(125E3);
  LoRa.setCodingRate4(5);

  Serial.println("LoRa alici hazir, dinleniyor...");
}

void loop() {
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    String gelen = "";
    while (LoRa.available()) {
      gelen += (char)LoRa.read();
    }

    int rssi = LoRa.packetRssi();
    float snr = LoRa.packetSnr();

    Serial.print("Alindi: ");
    Serial.print(gelen);
    Serial.print(" | RSSI: ");
    Serial.print(rssi);
    Serial.print(" dBm | SNR: ");
    Serial.print(snr);
    Serial.println(" dB");
  }
}

Spreading Factor ve Performans Optimizasyonu

LoRa'nın en güçlü yanlarından biri Spreading Factor (SF) parametresini ayarlayarak menzil ile veri hızı arasında denge kurabilmenizdir:

  • SF7: En yüksek veri hızı (~5.5 kbps), en kısa menzil. Yakın mesafe uygulamaları için ideal.
  • SF9: Orta menzil ve veri hızı dengesi. Şehir içi kullanımlar için uygun.
  • SF12: En uzun menzil, en düşük veri hızı (~0.3 kbps). Kırsal alan ve maksimum kapsama için.

SF değeri arttıkça havada kalma süresi (Time on Air) de artar, bu da pil tüketimini doğrudan etkiler. Örneğin, 10 baytlık bir paket SF7'de yaklaşık 36 ms'de iletilirken, SF12'de bu süre 1.5 saniyeyi aşar.

Bant Genişliği ve Kodlama Oranı

Bant genişliği (Bandwidth) seçenekleri genellikle 125 kHz, 250 kHz ve 500 kHz'dir. Dar bant genişliği daha iyi alıcı duyarlılığı sağlar ancak veri hızını düşürür. Coding Rate (4/5 ile 4/8 arası) ise hata düzeltme kapasitesini belirler; yüksek değerler gürültülü ortamlarda daha dayanıklı iletişim sunar fakat ek yük (overhead) oluşturur.

LoRaWAN Ağ Yapısı

Birden fazla sensör düğümünü merkezi bir sisteme bağlamak istiyorsanız LoRaWAN mimarisini kullanmanız gerekir. Temel bileşenler:

  1. End Device (Uç Cihaz): Sensör verilerini toplayan ve LoRa ile ileten düğümler
  2. Gateway: LoRa sinyallerini alıp IP ağına (Ethernet/Wi-Fi) aktaran köprü cihazlar
  3. Network Server: Paket yönlendirme, güvenlik ve cihaz yönetimini sağlayan sunucu (The Things Network, ChirpStack)
  4. Application Server: Verilerin işlendiği ve görselleştirildiği katman

The Things Network (TTN) ile Entegrasyon

TTN, ücretsiz ve topluluk destekli bir LoRaWAN ağ sunucusudur. Cihazınızı TTN'e kaydetmek için OTAA (Over-The-Air Activation) yöntemini kullanmanız önerilir. Bu yöntemde her oturum için yeni şifreleme anahtarları türetilir ve güvenlik seviyesi ABP'ye göre çok daha yüksektir.

TTN konsolunda uygulamanızı oluşturduktan sonra cihaz kaydında aldığınız AppEUI, DevEUI ve AppKey değerlerini LMIC kütüphanesi ile kullanabilirsiniz.

Güç Yönetimi ve Pil Ömrü

Uzak noktalarda konuşlandırılan IoT cihazlarında güç yönetimi kritik öneme sahiptir. ESP32'nin deep sleep modunu kullanarak pil ömrünü önemli ölçüde uzatabilirsiniz:

#define uS_TO_S_FACTOR 1000000ULL
#define SLEEP_SURESI 300 // 5 dakika

void gonderVeUyu() {
  // Sensor oku ve LoRa ile gonder
  // ... (gonderim kodu)

  LoRa.sleep(); // LoRa modulunu uyku moduna al
  esp_sleep_enable_timer_wakeup(SLEEP_SURESI * uS_TO_S_FACTOR);
  esp_deep_sleep_start();
}

Bu yapılandırmayla ESP32 yalnızca veri gönderimi sırasında aktif olur ve geri kalan sürede mikro amper seviyesinde akım çeker. 3000 mAh kapasiteli bir LiPo pil ile 5 dakika aralıklarla veri gönderen bir düğüm birkaç ay boyunca çalışabilir.

Sık Karşılaşılan Sorunlar ve Çözümleri

  • Paket kaybı yüksekse: SF değerini artırın, anten bağlantısını kontrol edin ve Fresnel bölgesinde engel olmadığından emin olun.
  • RSSI çok düşükse (-120 dBm altı): Anteni daha yükseğe konumlandırın. Her 1 metre yükseklik kazanımı menzili önemli ölçüde artırır.
  • Duty cycle sınırlaması: Avrupa'da 868 MHz bandında %1 duty cycle zorunluluğu vardır. Gönderim aralığını buna göre ayarlayın.
  • Frekans uyumsuzluğu: Verici ve alıcının aynı frekans, SF ve bant genişliği ayarlarını kullandığından emin olun.
  • SPI iletişim hatası: Kablo bağlantılarını kontrol edin, özellikle MISO/MOSI pinlerinin ters bağlanmadığından emin olun.

Güvenlik Önlemleri

LoRa P2P haberleşmede veriler varsayılan olarak şifrelenmez. Hassas veriler gönderiyorsanız AES-128 şifreleme uygulamak kritik önem taşır. LoRaWAN protokolü ise iki katmanlı şifreleme sunar: ağ oturumu anahtarı (NwkSKey) ile uygulama oturumu anahtarı (AppSKey). P2P haberleşmede kendi şifreleme katmanınızı eklemeniz gerekir.

Sonuç ve İleri Adımlar

LoRa teknolojisi, düşük maliyeti ve uzun menziliyle tarımsal izleme, akıllı şehir altyapısı, çevresel sensör ağları ve endüstriyel IoT gibi pek çok alanda güçlü bir çözüm sunar. Bu rehberdeki temel P2P haberleşme yapısını kurduktan sonra şu adımları değerlendirebilirsiniz:

  • ChirpStack ile kendi özel LoRaWAN sunucunuzu kurmak
  • Grafana ve InfluxDB ile sensör verilerini görselleştirmek
  • MQTT entegrasyonu ile verileri bulut platformlarına (AWS IoT, Azure IoT Hub) aktarmak
  • Mesh ağ topolojisi ile kapsama alanını genişletmek
  • Güneş paneli ve enerji hasat (energy harvesting) sistemleri ile tamamen otonom düğümler oluşturmak
Yazar Hakkında
Fatih Algül
TechSoft Solutions
Proje mi var?

Yazılım, IoT veya otomasyon konularında destek almak ister misiniz?

İletişime Geç