Atalay YamanGNU Radio
EN
Seri girişi

GNU Radio ile SDR: 13 Mini Proje

Yazılım: GNU Radio Companion (GRC) 3.10.12 — radioconda (Windows)Donanım: MP-1 – MP-7 ve MP-12B: donanım gerekmez (simülasyon). MP-8 – MP-13: ADALM-Pluto SDR.Sürüm: 1.0 · 2026-10-01Yazar: Atalay Yaman

Bu belge, GNU Radio Companion (GRC) ile yazılım tanımlı radyoyu (SDR) sıfırdan öğreten 13 mini projelik bir serinin tüm verisini içerir: her projenin amacı, kullanılan her blok, varsayılan değerinden farklı olan her ayar, blok bağlantıları, deneyler, beklenen sonuçlar, sınav soruları ve gerçek kurulumda yaşanmış hatalar.

Seri, TEKNOFEST Elektronik Harp yarışması için SDR tabanlı bir Elektronik Destek (ES) sistemi geliştirme yolunda hazırlanmıştır. Simülasyonla başlar, ADALM-Pluto ile gerçek RF'ye geçer ve sinyalleri otomatik bulan, listeleyen ve kaydeden küçük bir ES sistemiyle biter.

MP-1'den başla ›

Seri haritası

#BaşlıkAna kavramDonanımÖn koşul
MP-1İlk Akış Grafiği: Sinyal KaynağıComplex sinyal, zaman ve frekans görünümüYok—
MP-2IQ Örnekleme ve AliasingNyquist, örtüşme (aliasing)YokMP-1
MP-3Gürültü ve SNRGürültü kaynağı, sinyal-gürültü oranıYokMP-2
MP-4Otomatik Sinyal TespitiFFT, dB normalizasyonu, eşik ve histerezisYokMP-3
MP-5Filtreleme ve Kanal SeçmeAlçak geçiren filtre, frekans kaydırma, decimationYokMP-4
MP-6IQ Kaydetme ve Tekrar OynatmaDosya formatı, waterfall, burst sinyalYokMP-5
MP-7AM ve FM: İki Radyo İstasyonuModülasyon ve demodülasyon, ses çıkışıYok (hoparlör)MP-6
MP-8ADALM-Pluto ile FM RadyoGerçek RF, LO, offset tuning, WBFMPlutoMP-7
MP-9Gerçek Spektrumda Otomatik TespitOrtalama alma, uyarlanır gürültü tabanıPlutoMP-8
MP-10Embedded Python Block: Sinyal ListesiKendi bloğunu yazmak, median, birleştirmePlutoMP-9
MP-11ZMQ ile Kendi Arayüzüne BağlanmaPUB/SUB, PyQt5 + pyqtgraphPlutoMP-10
MP-12Dijital Sinyaller: OOK ve PSK/QAMDarbe analizi, constellationPluto (12A) / Yok (12B)MP-11
MP-13Bitirme: Mini ES SistemiTespit + liste + otomatik kayıtPlutoMP-12

Önerilen klasör yapısı (öğrencinin bilgisayarında):

kod
GNU_Radio_Test/
├── MP-1/ … MP-13/          her proje kendi klasöründe
└── (her klasörde .grc ve GRC'nin ürettiği .py)

Ortak kavramlar

GRC'de port renkleri

RenkVeri tipi
Mavicomplex (IQ) — her örnek I + jQ, 8 bayt
Turuncufloat — tek reel sayı, 4 bayt
Mor / pembebyte veya int
Koyu tonAynı tip, ama vektör halinde (ör. 1024'lük paket)
Gri, kesikliMesaj portu (akış değil, olay/mesaj)

Seri boyunca geçerli kurallar

  1. Throttle kuralı: Akış grafiğinde donanım saati yoksa (Pluto, ses kartı) Throttle eklenir; varsa eklenmez. Donanım yokken Throttle olmazsa işlemci %100'e çıkar. Donanım varken Throttle eklenirse iki saat çakışır ve takılmalar olur.
  2. Değişken kullan: Birden fazla blokta geçen her değer (samp_rate, fft_len …) bir Variable bloğunda tanımlanır. Değer tek yerden değişir.
  3. Canlı ayar: QT GUI Range (kaydırma çubuğu) ve QT GUI Chooser (açılır liste) da birer değişkendir. Çalışırken değiştirilince onu kullanan bloklar anında güncellenir.
  4. Kırmızı başlık = hata: GRC'de bir bloğun başlığı kırmızıysa akış grafiği çalışmaz. En sık sebep: boşta kalan bir giriş/çıkış portu veya geçersiz bir değer.
  5. **GRC'nin ürettiği .py dosyasına kod yazılmaz.** GRC her çalıştırmada bu dosyayı baştan yazar. Ek Python kodu ayrı bir dosyada tutulur.
  6. Dosyada örnekleme hızı saklanmaz. Ham IQ dosyasının adına örnekleme hızı ve merkez frekansı yazılır (ör. fm_100p0MHz_1p92Msps.cfile).

Temel formüller

FormülAnlamı
Görünen bant = samp_rate (complex)−samp_rate/2 … +samp_rate/2
Bin genişliği = samp_rate / fft_lenFFT frekans çözünürlüğü
FFT kare süresi = fft_len / samp_rateBir FFT'nin kaç saniyelik veriye baktığı
Güç (dB) = 10·log10(P); genlik (dB) = 20·log10(A)
Güç = genlik²Bağımsız sinyallerin güçleri toplanır
SNR (dB) = 10·log10(P_sinyal / P_gürültü)
Alias frekansı = f − k·samp_rate (görünen banda düşen)
Decimation sonrası hız = samp_rate / D
Pluto'nun gördüğü aralık = LO ± samp_rate/2
Carson bant genişliği (FM) ≈ 2·(Δf + f_mesaj)
Dosya boyutu (complex64) = örnek sayısı × 8 bayt

Sözlük

TerimAçıklama
IQ / complex sinyalSinyalin iki bileşenle (I: gerçek, Q: sanal) gösterimi. Pozitif ve negatif frekansları ayırt etmeyi sağlar.
Örnekleme hızı (samp_rate)Saniyede alınan örnek sayısı.
FFTZaman sinyalini frekans bileşenlerine ayıran algoritma.
BinFFT çıkışındaki tek bir frekans dilimi.
Pencere (window)FFT öncesi uygulanan, spektral sızıntıyı azaltan ağırlık fonksiyonu.
HisterezisEşikte iki ayrı seviye (high/low) kullanarak titremeyi önleme.
DecimationHer D örnekten birini tutarak örnekleme hızını düşürme.
TapsFIR filtrenin katsayıları.
LO (Local Oscillator)SDR'nin ayarlandığı merkez frekans.
DC spikeSDR spektrumunun tam ortasında (LO'da) oluşan yapay tepe.
WaterfallSpektrumun zaman içindeki değişimini renklerle gösteren grafik.
BurstKısa süreli, açılıp kapanan yayın.
De-emphasisFM vericide yükseltilen tiz sesleri alıcıda geri kısan filtre.
ES (Electronic Support)Elektromanyetik spektrumu dinleyip sinyalleri tespit, tanımlama ve konumlandırma.
AMCOtomatik Modülasyon Sınıflandırma.
OOKOn-Off Keying: taşıyıcıyı açıp kapatarak bit gönderme.
ConstellationDijital sembollerin I/Q düzlemindeki noktaları.
PUB/SUBBir yayıncının yayın yaptığı, abonelerin dinlediği mesajlaşma modeli (ZMQ).