Dalgadan
sayıya

Yazılım tanımlı radyo ve IQ verisi, oynayarak.

Arkada akan şey bir şelale ekranı: radyo bandının canlı haritası. Fareyi üzerinde gezdirin; bir istasyona gelince sesini duyarsınız. Bu yolculukta o istasyonun sesinin nasıl sayılara dönüştüğünü ve sayılardan yeniden sese nasıl döndüğünü adım adım göreceğiz.

Anlatımlı tur yaklaşık 18 dakika sürer ve slaytlar kendiliğinden ilerler; istediğiniz an durup deneylerle oynayabilirsiniz. Kendi hızınızda gezerken → ile ilerleyin.

Görünmeyen ışık

Radyo dalgası ile gözünüze ulaşan ışık aynı şeydir; tek fark saniyede kaç kez salındıkları.

İkisi de elektromanyetik dalgadır ve ışık hızıyla yol alır. Frekans yükseldikçe adları değişir: radyo, mikrodalga, kızılötesi, görünür ışık, morötesi, X ışını, gama. Gözümüz bu uzun şeridin yalnızca küçücük bir penceresini görür.

Radyo kısmı ise kalabalıktır: FM yayınları, uçak telsizleri, cep telefonları, Wi-Fi, GPS uyduları. Kesik çizgili alan, birkaç yüz liralık bir RTL-SDR alıcının ayarlanabildiği aralık.

Daha fazla: frekans ve dalga boyu

Frekans ile dalga boyu ters orantılıdır; çarpımları her zaman ışık hızıdır:

c = f · λ ≈ 3 · 10⁸ m/sn

Bu yüzden şeridin altındaki dalga boyu skalası üsttekinin tersine akar. 100 MHz'lik FM dalgası yaklaşık 3 m, 600 THz'lik yeşil ışık yaklaşık 500 nm uzunluğundadır. Radyo alt bantlarının adları (LF, MF, HF, VHF, UHF, SHF) ITU'nun on katlık dilimleridir.

FM düğmesine basın ve FM bandına dokunun. Sonra şeridi sürükleyip ışığa kadar gidin.

Frekans, dalga boyu ve anten

Bir dalganın frekansını bilirseniz, boyunu ve onu yakalayacak antenin boyunu da bilirsiniz.

Dalga bir salınımı bitirene kadar ışık hızıyla yol alır; bu yol dalga boyudur. Frekans arttıkça bir salınım kısalır, dalga da kısalır: FM dalgası bir oda boyunda, Wi-Fi dalgası bir avuç içinde.

Anten, dalganın boyuyla uyumlu olduğunda en iyi çalışır. En basit anten, dalga boyunun dörtte biri uzunluğunda bir teldir: çeyrek dalga anten. Telefonunuzun içindeki antenler bu yüzden küçük, eski uzun dalga istasyonlarının direkleri bu yüzden devdir.

Daha fazla: hesap λ = c / f    anten ≈ λ / 4

100 MHz için λ = 299.792.458 / 100.000.000 ≈ 3,0 m, çeyrek dalga anten ≈ 75 cm. Gerçek antenler, telin kalınlığı ve uç etkisi yüzünden genellikle yüzde birkaç daha kısa kesilir.

"Dinle" bir benzetmedir: radyo dalgalarını duyamayız. Kaydırıcıyı sağa çektikçe ton, frekansla aynı oranda olmasa da tizleşir.

Frekansı en sola, orta dalgaya çekin: dalga boyu yüzlerce metre olur. Sonra Wi-Fi'ye basın.

Kıvılcımdan yazılıma

160 yılda radyo bir kıvılcım aralığından cebinizdeki bir yazılıma dönüştü.

Önce kuram geldi, sonra deney, sonra telsiz telgraf. Radyonun her büyük adımı bir parçayı ucuzlattı ya da küçülttü; son adımda radyonun kendisi bir programa dönüştü. Olaylara dokunun ya da ibreyi skalada sürükleyin.

Daha fazla: "yazılım tanımlı" ne demek?

Klasik alıcıda ayar, süzme ve demodülasyon bobin, kondansatör ve diyotla yapılır. SDR'da anten sinyali olabildiğince erken sayılara çevrilir; gerisi program olur: anten → (ayarlayıcı) → ADC → IQ sayıları → yazılım

Sonraki düğmesiyle Hertz'in kıvılcımına geçin; odanın öbür ucundaki halkada çakan kıvılcıma bakın.

Dalgayı ölçmek: ADC

Bilgisayar dalgayı göremez; yalnızca belli aralıklarla ölçülmüş sayıları görür.

Bu ölçümü ADC (analog-sayısal dönüştürücü) yapar. İki ayarı vardır: saniyede kaç kez ölçtüğü (örnekleme hızı) ve her ölçümü kaç basamakla yazdığı (bit derinliği).

Bit az olunca ölçüm en yakın basamağa yuvarlanır. Gerçek değerle yazılan değer arasındaki fark, yani nicemleme hatası, sinyale eklenmiş bir gürültü gibi davranır. Bit derinliğini düşürüp "Dinle"ye basın: o gürültüyü cızırtı olarak duyarsınız.

Daha fazla: her bit 6 dB

N bitlik bir ADC 2N seviye verir. Tam ölçekli bir sinüs için sinyal ile nicemleme gürültüsünün oranı:

SQNR ≈ 6,02 · N + 1,76 dB

Ekrandaki "ölçülen" değer, 65.536 örneklik bir sinüs gerçekten nicemlenip hatanın gücü ölçülerek hesaplanır. 1–2 bitte formül tutmaz, çünkü hata artık rastgele bir gürültü gibi değil, sinyale bağlı bir bozulma gibi davranır. RTL-SDR 8 bitlik bir ADC kullanır: kuramsal üst sınır yaklaşık 50 dB.

Bit derinliğini 1'e indirin, sonra yavaşça 8'e çıkarın; gri hata çubuklarının küçülüşüne bakın.

Nyquist sınırı ve örtüşme

Çok seyrek ölçerseniz, hızlı bir dalga size yavaş bir dalga gibi görünür.

Bir dalgayı tanımak için her salınımda en az iki kez ölçmek gerekir. Bu yüzden örnekleme hızının yarısı bir sınırdır: Nyquist sınırı.

Sinyal bu sınırı geçince noktalar sahte, daha yavaş bir dalga çizmeye başlar. Buna örtüşme denir. Alttaki diyagram frekansın sınıra çarpıp geri katlandığını gösterir: sinyal ne kadar hızlanırsa hızlansın, görünen frekans hep sıfır ile sınır arasında kalır.

Daha fazla: görünen frekans fgörünen = | f − k · fs |,   k = en yakın tam sayı (f / fs)

8 kHz örneklemede 5 kHz'lik ton 3 kHz gibi görünür: örnekleri, gerçekten 3 kHz olan bir tonun örnekleriyle birebir aynıdır. Örneklerden bakarak ikisini ayırmanın yolu yoktur. Bu yüzden ADC'nin önüne, sınırın üstünü kesen bir örtüşme önleyici filtre konur.

"Dinle"yi açıp Süpür'e basın: ton tizleşirken 4 kHz'de geri dönüp pesleşir.

Geriye dönen tekerlek

Filmlerde arabanın tekerleği bazen durur, bazen geriye döner. Bu da örtüşmedir.

Kamera saniyede belli sayıda kare çeker: tekerleği örnekler. İki kare arasında bir kol tam bir kol aralığı kadar dönerse, her karede kollar aynı yerde görünür ve tekerlek durmuş sanılır. Biraz eksik dönerse kollar her karede biraz geride yakalanır: tekerlek geriye döner gibi görünür.

Sağdaki kamera görüntüsü ile alttaki grafik, önceki slayttaki katlanmanın aynısıdır; yalnızca bu sefer gözle görülür.

Daha fazla: görünen hız adım = tur/sn ÷ kare/sn;   görünen adım = adım − k · (1/K)

K kollu tekerlek her 1/K turda kendine benzer; k, adımı −1/(2K)…+1/(2K) aralığına getiren tam sayıdır. 24 kare/sn ve 6 kolda tekerlek 4 tur/sn'de durur gibi görünür. Grafikte işaretin korunduğuna dikkat: kamera dönüş yönünü görebiliyor. IQ verisi de radyoda aynı şeyi sağlar.

Tekerlek hızını 4 tur/sn'ye çıkarın, sonra biraz geri çekin: kameradaki tekerlek geriye dönsün.

100 MHz'i nasıl örnekleriz?

100 MHz'lik bir FM yayınını doğrudan örneklemek için saniyede 200 milyondan fazla ölçüm gerekir.

Bu, 8 bitle bile saniyede yüzlerce megabayt demek: bir dakikalık kayıt onlarca gigabayt. Oysa ucuz bir RTL-SDR saniyede yalnızca yaklaşık 2,4 milyon örnek alır. Örnekleme hızını o değere çekin: noktalar 100 MHz'i çok uzaktan, sahte bir dalga olarak görür.

Hile şu: bütün banda değil, yalnızca dinlemek istediğimiz dar şeride ihtiyacımız var. Radyo önce o şeridi 0 Hz'e kaydırır, sonra örnekler. Bunun için her ölçümde iki sayı gerekir: I ve Q. Bir sonraki bölümün konusu tam olarak bu.

Daha fazla: veri hızı veri hızı = fs × bit ÷ 8   bayt/sn

250 MS/sn × 8 bit = 250 MB/sn; bir dakika 15 GB. IQ ile 2,4 MS/sn × 2 sayı × 8 bit = 4,8 MB/sn; USB 2.0'ın kuramsal 480 Mbit/sn (60 MB/sn) sınırının rahatça altında.

RTL-SDR hızı'na basın, sonra İpucu'yu açıp istasyonun 0 Hz'e kaymasını izleyin.

Dönen ok

Radyodaki her sinyali sabit hızla dönen bir ok gibi düşünebiliriz. Oku doğrudan göremeyiz, ama gölgelerini ölçebiliriz.

Oka tepeden bir el feneri tutun: yere düşen gölge sağa sola gidip gelir. Bu gölgeye I diyoruz. Yandan tutulan ikinci fener duvara bir gölge düşürür; o da aşağı yukarı gider gelir. Bu da Q.

İki gölgeyi zaman içinde kaydedince iki dalga çıkar: yerdeki gölge aşağı akan mavi dalgayı, duvardaki gölge sağa akan kehribar dalgayı yazar. İkisi aynı dalgadır, yalnızca çeyrek tur kaymıştır. Okun boyu genlik, açısı faz.

Daha fazla: kosinüs, sinüs ve Euler

Okun boyu A, açısı 2πft ise iki gölge şöyle yazılır (f, saniyedeki tur sayısı, yani Hz):

I = A·cos(2πft)    Q = A·sin(2πft)

Matematikte ok tek bir karmaşık sayıdır: I gerçek kısım, Q sanal kısım. Euler formülü ikisini birleştirir:

ejθ = cos θ + j·sin θ  ⇒  x(t) = A·ej2πft = I + jQ

Frekansı artırın: ok hızlanır, iki dalga sıklaşır. Sonra «Duraklat» ile oku durdurup gölgelerin boyuna bakın.

Zamanda bir yay

Dönen oku zaman boyunca ilerletin: ucu havada bir yay, bir sarmal çizer. Karmaşık bir sinyal tam olarak budur.

Sarmalı fareyle ya da parmağınızla sürükleyip döndürün. Tepedeki fener zemine mavi bir gölge düşürür: I dalgası. Yandaki fener arka duvara kehribar bir gölge düşürür: Q dalgası.

Üstten bakan yalnızca I'yı, yandan bakan yalnızca Q'yu görür. Zaman ekseni boyunca önden bakınca sarmal bir çembere döner: önceki slayttaki dönen ok. Bir IQ kaydı, bu yayın art arda alınmış fotoğraflarıdır.

Daha fazla: üç boyutlu bir eğri

Sarmalın her noktası bir (zaman, I, Q) üçlüsüdür:

( t,  A·cos 2πft,  A·sin 2πft )

Frekans negatif olsaydı sarmal ters yöne bükülürdü; sağ ve sol vida gibi. Tek bir gölgeye bakarak bu iki vidayı ayırt edemezsiniz. Çizim kütüphanesiz bir dik izdüşümle yapılıyor: her nokta kameranın «sağ» ve «yukarı» yönlerine izdüşürülüyor.

Sarmalı sürükleyip döndürün, sonra «Önden bak», «Üstten bak» ve «Yandan bak» düğmelerini deneyin.

Neden iki sayı?

Yalnızca yerdeki gölgeye, yani I'ya bakan biri okun hangi yöne döndüğünü söyleyemez.

Saat yönünün tersine dönen ok ile saat yönünde dönen ok aynı I gölgesini düşürür. Yani +f ve −f frekansları I'da birebir aynı görünür. Q gölgesi ise ikisinde ters yöne gider; yönü o söyler.

Sonucu spektrumda (frekans haritasında) görürsünüz: Q kapalıyken her sinyalin bir ayna görüntüsü belirir ve bandın iki yarısı üst üste katlanır. Q açıkken −f ile +f ayrı yerlerdir; aynı örnekleme hızıyla iki kat geniş bir bant ayırt edilir.

Daha fazla: negatif frekans

Gerçek bir kosinüs, zıt yönde dönen iki yarım boy okun toplamıdır; Q'ları birbirini götürür:

cos(2πft) = ½·ej2πft + ½·e−j2πft

Bu yüzden Q kapalıyken spektrumda iki tepe çıkar, her biri yarım genlikte, yaklaşık −6 dB. «Dinle», sinyali 600 Hz'lik bir taşıyıcıya bindirir: x(t) = I·cos(2π·600t) − Q·sin(2π·600t). Q açıkken +f sesi inceltir, −f kalınlaştırır; Q kapalıyken ikisi birden duyulur.

Frekansı + ile − arasında gezdirin, sonra «Q bileşeni» düğmesiyle Q'yu kapatıp spektruma bakın.

Genlik ve faz

Bir IQ çifti düzlemde tek bir noktadır. Bu nokta iki şey söyler: sinyal ne kadar güçlü ve şu an hangi yöne bakıyor.

Bir döner kapı düşünün. Kanadın merkezden ne kadar uzağa uzandığı genlik, kanadın baktığı pusula yönü faz. I ve Q ise aynı bilginin «doğu–batı» ve «kuzey–güney» parçalarıdır.

Noktayı merkezden uzaklaştırınca dalga büyür. Çember boyunca çevirince dalganın boyu değişmez, yalnızca zamanda kayar. Radyonun taşıdığı her bilgi bu ikisinin oynatılmasıdır: AM genliği, FM ve dijital yayınların çoğu fazı oynatır.

Daha fazla: formüller A = √(I² + Q²)    φ = atan2(Q, I) x(t) = I·cos(2πft) − Q·sin(2πft) = A·cos(2πft + φ)

atan2, açıyı dört çeyrekte de doğru veren arktanjanttır. Sağdaki üç dalga bu eşitliğin kendisidir: mavi ile kehribarın toplamı fildişi dalgayı verir. Tersine, alıcı havadaki x(t)'yi cos ve −sin ile çarpıp süzerek I ve Q'yu geri çıkarır.

Noktayı sürükleyin: önce merkezden uzaklaştırıp dalganın büyüdüğüne, sonra çember boyunca çevirip kaydığına bakın.

IQ dosyası nedir?

Bir SDR kaydı art arda dizilmiş IQ çiftlerinden ibarettir. Başlık yok, süs yok; yalnızca sayılar.

RTL-SDR'nin .cu8 dosyasında her örnek iki bayttır: önce I, sonra Q. Her bayt 0 ile 255 arasındadır ve sıfır tam ortada, 127,5'tedir. Çözmek için ortayı çıkarıp 127,5'e bölmek yeter; sonuç −1 ile +1 arasında bir sayıdır.

Dosya kendi örnekleme hızını ve frekansını bilmez; bunları ayrıca not etmek gerekir. SigMF bunun için var: ham baytların yanına küçük bir JSON dosyası koyar.

Daha fazla: biçimler ve SigMF
  • cu8: 8 bit işaretsiz (RTL-SDR, rtl_sdr). cs8: 8 bit işaretli (HackRF, hackrf_transfer), yine 2 bayt.
  • cs16: 16 bit işaretli tamsayı, 4 bayt. cf32: 32 bit kayan noktalı sayı, 8 bayt (GNU Radio'nun karmaşık türü).
boyut = örnekleme hızı × süre × örnek başına bayt

SigMF kaydı iki dosyadır: .sigmf-data (ham baytlar) ve .sigmf-meta:

{ "global": { "core:datatype": "cu8", "core:sample_rate": 2400000,
  "core:version": "1.2.6" },
  "captures": [ { "core:sample_start": 0, "core:frequency": 100100000 } ] }

«Sonraki örneği çöz»e basın ya da baytların üzerine gelin; sonra HackRF'i seçip bir saatlik kaydın boyutuna bakın.

Her sinyal dönen okların toplamı

Köşeli bir kare dalga bile, farklı hızlarda dönen okların uç uca eklenmesiyle çizilebilir.

Joseph Fourier 1807'de ısının yayılmasını incelerken cesur bir fikir ortaya attı: düzenli tekrar eden her biçim, frekansları temel frekansın tam katları olan sinüslerin toplamıdır. Bu katlara harmonik denir.

Soldaki ilk ok temel frekansla döner; sonrakiler onun tam katı hızlarda ve gittikçe kısalarak. Son okun ucunun yüksekliği dalgayı çizer. Alttaki çubuklar okların boylarıdır: dalganın spektrumu.

Daha fazla: Fourier serisi kare(t) = (4/π)·[sin ωt + sin 3ωt / 3 + sin 5ωt / 5 + …] testere(t) = (2/π)·[sin ωt − sin 2ωt / 2 + sin 3ωt / 3 − …] üçgen(t) = (8/π²)·[sin ωt − sin 3ωt / 9 + sin 5ωt / 25 − …]

Sıçramanın yanındaki küçük taşma, terim eklendikçe daralır ama yok olmaz: sıçramanın yaklaşık %9'u (Gibbs olayı). Üçgenin harmonikleri 1/k² ile söndüğü için çok daha çabuk yakınsar; kulağa da yumuşak gelir.

Harmonik sayısını 1'den 50'ye çıkarın. Sonra "Dinle"yi açıp aynısını kulakla yapın: her harmonik sesi biraz daha parlatır.

FFT: zamandan frekansa

FFT (hızlı Fourier dönüşümü) N örneklik bir tamponu alır ve hangi hızda dönen okların ne kadar güçlü olduğunu N frekans kutusuna dağıtır.

Üstte zaman alanı: tamponun I ve Q bileşenleri. Altta aynı tamponun spektrumu. Her kutunun genişliği örnekleme hızının FFT boyuna bölümüdür: N büyüdükçe kutular daralır ama daha uzun bir zaman dilimi gerekir.

Tampon, akan sinyalden kesilmiş bir parçadır. Ton bir kutunun tam ortasına düşmezse kesik uçlar enerjiyi komşu kutulara saçar: spektral sızıntı. Pencere fonksiyonu uçları yumuşakça sıfıra indirerek bunu bastırır.

Daha fazla: DFT ve kutu genişliği X[k] = Σ x[n]·e−j2πkn/N, n = 0 … N−1 Δf = fs / N (2,4 MS/sn, N = 1024 → 2,34 kHz)

Her X[k], sinyali k. kutunun hızında ters yöne döndürüp toplar: o hızda dönen bir ok varsa toplam büyür, yoksa birbirini götürür. Doğrudan hesap N² işlem ister; Cooley ve Tukey'in 1965 algoritması N·log₂N ile yapar: 4096 noktada yaklaşık 340 kat daha az. Hann penceresinin en yüksek yan lobu −31 dB, Blackman'ınki −58 dB; bedeli daha geniş bir tepe.

İnce ayarı +0,5 kutuya kaydırın: dikdörtgen pencerede tonun etekleri yayılır ve zayıf ton kaybolur. Sonra Hann'a geçin.

Desibel

Radyoda güçlü bir istasyon, zayıf olandan milyon kat güçlü olabilir. İkisini aynı cetvelde göstermenin yolu logaritmadır.

Doğrusal ölçekte en güçlü sinyal ekranı doldurur; ondan milyon kat zayıf olan sıfırdan ayırt edilemez. Desibel ise oranları sayar: her 10 dB on kat güç demektir. Böylece 60 dB'lik fark ekranda birkaç ızgara çizgisine sığar.

SDR'da düzeyler çoğunlukla dBFS ile verilir: ADC'nin tam ölçeğine göre desibel. 0 dBFS ulaşılabilecek en yüksek düzeydir, gerisi eksidir. Hiç sinyal yokken görülen düzey gürültü tabanıdır.

Daha fazla: dB hesabı dB = 10·log₁₀(P₁ / P₂) genlik için: 20·log₁₀(A₁ / A₂)
Fark+3 dB+6 dB+10 dB+20 dB+30 dB+60 dB−3 dB
Güç≈ 2 kat≈ 4 kat10 kat100 kat1.000 kat1 milyon kat≈ yarısı

Güç genliğin karesi olduğu için genlik oranında katsayı 20'dir. Bel, Alexander Graham Bell'in onuruna adlandırıldı; desibel onda biridir.

"Desibel"e geçip zayıf istasyonun ortaya çıkışını izleyin. Sonra A ve B işaretçilerini sürükleyip aradaki farkı okuyun.

Şelale ekranı

Spektrum anlık bir fotoğraftır. Şelale bu fotoğrafları renge çevirip üst üste dizer ve zamanı görünür kılar.

Her satır bir FFT'dir: yatay eksen frekans, renk güç. Yeni satır en üste eklenir, eskiler aşağı akar. Sürekli istasyonlar dikey şeritler bırakır; kısa yayınlar kesik izler: telsizde biri konuşup susar, bir kumanda paket gönderir, Mors noktalı bir yol çizer.

Tek bir spektrumda gürültüye karışan zayıf bir yayın, şelalede satırlar boyunca süren bir iz olarak hemen seçilir: göz, iyi bir örüntü bulucudur.

Daha fazla: zaman ve frekans takası Δf = fs / N T = N / fs Δf · T = 1

Buradaki bant saniyede 240.000 örnekle üretiliyor. N = 2048'de kutu 117 Hz genişliğinde, bir FFT 8,5 ms'lik veri kullanır. N'yi büyütmek frekansta ayrıntıyı artırır, zamanda bulanıklaştırır: kısa paketler ve Mors noktaları birbirine karışmaya başlar.

Fareyle bir izin üzerine gelip frekansını ve gücünü okuyun. Tıklayınca kırmızı ibre oraya ayarlanır ve o yayının sesini duyarsınız.

Sinyali bul

Sıra sizde: gürültünün içinde kısa yayınlar belirecek, her biri bir öncekinden biraz daha zayıf.

Bir yayın belirdiği anda şelalede ya da spektrumda üzerine tıklayın. Hızlı tıklamak ve zayıf yayınları yakalamak daha çok puan getirir. Baştan beri orada olan istasyonlar sayılmaz; boşa tıklamak puan götürür.

Zorluk, yayınların gürültü tabanının ne kadar üstünde başladığını, yani SNR'yi (sinyal-gürültü oranı) belirler. 0 dB'de sinyal, kutu başına gürültüyle aynı güçtedir; ancak satırlar boyunca süren bir iz olarak seçilir.

Daha fazla: göz neden işe yarar?

Tek bir satırda her kutunun gürültü gücü rastgele dalgalanır; dalgalanmanın büyüklüğü ortalamasıyla aynıdır. M satırı birlikte değerlendirmek dalgalanmayı yaklaşık √M kat azaltır. Göz şelalede bunu kendiliğinden yapar; sinyal algılayıcıları da enerjiyi bir süre toplayıp bir eşikle karşılaştırır.

Zorluğu seçip "Oyunu başlat"a basın; ilk yayın birkaç saniye içinde belirir.

Alıcının içi

Antenden bilgisayara giden yol altı kutudan geçer. Her kutu sinyale tek bir şey yapar.

Anten havadaki her şeyi toplar, LNA yükseltir. Asıl numara karıştırıcıda: sinyal, yerel osilatörün (LO) dalgasıyla çarpılır ve bütün spektrum aşağı kayar. Ayarladığınız istasyon 0 Hz'e oturur.

Sonra filtre yalnızca merkezin çevresini bırakır, ADC bu dar dilimi I ve Q olarak saniyede milyonlarca kez ölçer. Bilgisayara artık radyo dalgası değil, sayı akar.

Daha fazla: doğrudan dönüşüm ve süperheterodin

Burada gösterilen yapı doğrudan dönüşüm (sıfır IF): LO tam istasyonun frekansında, karıştırıcı iki kollu (0° ve 90°) ve çıkış doğrudan I ve Q. PlutoSDR ve USRP B210'daki AD936x çipleri böyle çalışır.

Klasik süperheterodin alıcı sinyali önce sabit bir ara frekansa (IF) indirir. RTL-SDR ikisinin karışımıdır: R820T/R828D ayarlayıcısı sinyali yaklaşık 3,57 MHz'lik düşük bir IF'ye indirir; RTL2832U bu IF'yi 28,8 MHz'de 8 bitle örnekler ve I/Q'ya dönüşümü sayısal olarak yapar.

Kutulara tıklayın: sinyalin her noktadaki spektrumunu görün. Sonra LO'yu kaydırın.

Karıştırma: spektrumu kaydırmak

Radyonun ayar düğmesini çevirmek aslında bütün spektrumu yana kaydırmaktır.

IQ akışını dönen bir okla (sayısal osilatör, NCO) çarpınca her frekans aynı miktarda kayar. Düğmeyi çevirdikçe alttaki spektrum ve şelale kayıyor; istediğiniz istasyon ortadaki kırmızı ibreye gelince alıcı onu duyar.

İbre iki istasyonun arasındaysa duyduğunuz şey gürültü: eski radyolardaki "istasyon arası" hışırtı.

Daha fazla: neden çarpma kaydırır?

Frekansı f olan bir ses ej2πft gibi döner. Bunu e−j2πf0t ile çarpınca açılar toplanır: dönüş hızı f − f0 olur. Her bileşen aynı f0 kadar yer değiştirir.

y[n] = x[n] · e^(−j2π·f₀·n / fs)

Sayısal sinyalde frekans ±fs/2'de "sarar": kenardan taşan istasyon öbür kenardan girer. Düğmeyi sona kadar çevirip bakın.

Büyük düğmeyi çevirin, bir istasyonu kırmızı ibreye getirin ve "Dinle"ye basın.

Filtrele ve azalt

İstasyon ortada, ama komşuları hâlâ orada. Önce süz, sonra gereksiz örnekleri at.

Alçak geçiren filtre yalnızca merkezin çevresini bırakır. Kesimi geniş açarsanız 14 kHz ötedeki komşu da içeri sızar: seste ıslık ve araya karışan bir konuşma duyulur. Çok daraltırsanız müziğin tınısı kesilir, ses boğuklaşır.

Süzdükten sonra bant artık dar; saniyede 240 bin örneğe gerek yok. Her M örnekten birini tutmak (azaltma) hesap yükünü M kat düşürür.

Daha fazla: katsayı sayısı ve örtüşme

FIR filtre son T örneğin ağırlıklı toplamıdır. T büyüdükçe kenar dikleşir (geçiş bandı daralır) ama her çıkış örneği T çarpma ister. Burada yük, yalnızca tutulan örnekler hesaplanarak ölçülüyor: 2 × T × fs / M.

Azaltmadan sonra görülebilen bant ±fs/(2M) olur. Kesim bundan genişse dışarıdaki istasyonlar içeri katlanır: Nyquist sınırındaki örtüşmenin aynısı.

"Dinle"ye basın ve kesimi 30 kHz'e açın: komşu sızar. Sonra 1 kHz'e kısın.

Bant geçiren filtre: yalnızca bir pencere

Filtre bir penceredir: içinden bakılan yeri siz seçersiniz, gerisi kararır.

Alçak geçiren pencere hep 0 Hz'in çevresindedir. Bant geçiren pencere istediğiniz yere taşınır; bant durduran (çentik) ise tersini yapar: yalnızca pencerenin içini söndürür.

Gerçek katsayılı filtre IQ'da hem +f hem −f'de pencere açar: IQ bölümündeki aynanın aynısı. Karmaşık katsayılı filtre yalnızca seçtiğiniz tarafı görür.

Daha fazla: güçlü istasyonu bastırmak

Bant durduranı güçlü yayının üstüne koyun: ekran ölçeği bir sonraki en güçlü sinyale iner ve dibindeki zayıf istasyon ortaya çıkar.

Gerçek hayatta SDR'cılar bunun için anten ile alıcı arasına 88–108 MHz'i 50 dB'den fazla bastıran FM bant durduran filtreler takar. Filtre ADC'den önce olmalıdır: güçlü yayın ADC'nin sınırlı dinamik aralığını bir kez doldurduysa, sonradan yazılımla süzmek zayıf sinyali geri getirmez.

Pencereyi ortasından tutup sürükleyin, kenarlarından genişletin; sonra "Karmaşık"ı seçin.

Gerçek alıcının izleri

Ucuz bir alıcının spektrumunda olmayan şeyler görürsünüz. Çoğu donanımın imzasıdır.

  • DC sivrisi: LO'nun sızıntısı ve devredeki küçük kaymalar merkezde sabit bir tepe bırakır.
  • IQ dengesizliği: I ve Q kolları tam eş değilse her istasyonun −f'de soluk bir aynası belirir.
  • Aşırı yükleme: kazanç fazlaysa ADC tepeleri kırpar; spektrumda olmayan istasyonlar ve yükselen bir taban çıkar.
Daha fazla: görüntü bastırma oranı

Kazanç oranı g ve faz hatası φ ise istasyon ile aynası arasındaki fark:

IRR = 10·log₁₀[(1 + 2g·cos φ + g²) / (1 − 2g·cos φ + g²)]

1 dB ve 6° hatada yaklaşık 22 dB. "IQ dengeleme" I ile Q'nun ilişkisini ölçüp Q'yu yeniden diker: önce I'ya benzeyen kısmı çıkarır, sonra iki kolun gücünü eşitler.

Faz hatasını artırın, aynaları izleyin; "IQ dengeleme"ye basın. Sonra RF kazancını yükseltin.

Gerçek donanım

Aynı fikir, dört fiyat sınıfı: 30 dolarlık USB çubuktan laboratuvar cihazına.

Bir SDR'ı dört soru tanımlar: hangi frekansları duyar, bir anda ne kadar genişliği görür, kaç bitle ölçer ve gönderebilir mi.

Bit sayısı dinamik aralığı belirler: her bit yaklaşık 6 dB ekler. 8 bitlik bir RTL-SDR'da güçlü ve zayıf sinyal arasında ≈ 50 dB, 12 bitlik bir PlutoSDR'da ≈ 74 dB yer vardır.

Daha fazla: gönderme yeteneği

RTL-SDR yalnızca alır. HackRF One gönderebilir ama aynı anda alamaz (yarı çift yönlü). PlutoSDR ve USRP B210 aynı anda alıp gönderir (tam çift yönlü).

Göndermek için amatör telsizcilik belgesi ya da izin gerekir; bu, sunumun sonundaki yasal bölümün konusu.

Bir hedef seçin: hangi cihazların alabildiğine ve nedenine bakın.

AM: genlik modülasyonu

Sesi radyo dalgasına yüklemenin en eski yolu: dalgayı sesin ritmiyle büyütüp küçültmek.

Ses yükselince verici dalgası büyür, alçalınca küçülür. Dalganın tepelerini birleştiren çizgiye zarf denir ve zarf sesin kendisidir. IQ düzleminde bu, yerinde durup nefes alır gibi uzayıp kısalan bir oktur.

Alıcı yalnızca okun boyunu ölçer: √(I² + Q²). Okun hangi yöne baktığı önemli değildir. Bu yüzden AM alıcısı çok basittir; kristal radyodaki tek diyot bu işi yapar.

Derinlik %100'ü geçince zarf sıfırın altına inmek ister. Ama boy eksi olamaz: ok ters döner ve ses bozulur.

Daha fazla: formül ve spektrum s(t) = [1 + m·x(t)] · cos(2π·fc·t)

IQ'da: I + jQ = [1 + m·x(t)]·ejφ. Zarf dedektörü |I + jQ| = |1 + m·x(t)| hesaplar; m·|x| ≤ 1 iken bu tam olarak 1 + m·x(t) olur ve ortalaması çıkarılınca ses geri gelir. Faz φ hiç işe karışmaz.

Spektrumda ortada taşıyıcı, iki yanında sesin aynalı iki kopyası (yan bantlar) durur. Bant genişliği sesin bant genişliğinin iki katıdır. Orta dalga yayınlarında kanallar Avrupa, Afrika ve Asya'da 9 kHz aralıklıdır.

Modülasyon derinliğini %130'a çekin, sonra "Dinle"ye basıp çözülen sesi kaynakla karşılaştırın.

FM: frekans modülasyonu

FM sesi dalganın boyuyla değil hızıyla taşır: genlik hiç değişmez, frekans sesle birlikte bir artar bir azalır.

IQ düzleminde ok hep aynı boydadır; değişen, dönüş hızıdır. Ses artıya gidince ok hızlanır, eksiye gidince yavaşlar.

Alıcı art arda gelen iki örnek arasındaki açıyı ölçer (nane renkli yay). Açı büyükse ses yüksek, küçükse alçaktır. Buna faz farkı demodülasyonu denir.

Sapma büyüdükçe sinyal spektrumda genişler ama gürültüye de daha dayanıklı olur. Yayın FM'de sapma ±75 kHz'dir.

Daha fazla: formül ve Carson kuralı z(t) = ejφ(t), φ(t) = 2π·Δf·∫x(τ)dτ x̂[n] = arg(z[n]·z*[n−1]) / (2π) · fs / Δf

Bant genişliği için Carson kuralı (1922): BW ≈ 2(Δf + W); W sesin en yüksek frekansı. Mono yayın FM'de Δf = 75 kHz, W = 15 kHz: 2(75 + 15) = 180 kHz.

Buradaki sinyal saniyede 240.000 karmaşık örnekle üretiliyor, çözülüyor ve 15 kHz'lik süzgeçten geçiyor. Gürültü açıkken aynı sesi aynı tepe gücüyle taşıyan bir AM verici de aynı gürültüyle çalışır.

Sapmayı 75 kHz'ten 5 kHz'e indirip spektrumun daralmasını izleyin; sonra gürültüyü açıp FM ile AM'i dinleyin.

Bitleri dalgaya yüklemek

Bit göndermek için dalganın bir özelliğini birkaç sabit değer arasında atlatırız. Her atlayışa sembol denir.

ASK genliği açıp kapar, FSK iki frekans arasında gidip gelir, BPSK fazı 180° çevirir. Üçü de sembol başına 1 bit taşır.

QPSK dört faz kullanır, böylece her sembol 2 bit taşır. 16-QAM hem genliği hem fazı değiştirir: 16 noktalı bir ızgarada sembol başına 4 bit. Aynı sürede dört kat bilgi taşır ama noktalar birbirine yaklaştığı için gürültüye daha duyarlıdır.

Daha fazla: bit hızı ve Gray kodu bit hızı = sembol hızı × log₂ M

M nokta sayısıdır: QPSK'da M = 4 (2 bit), 16-QAM'de M = 16 (4 bit). 16-QAM'de her eksen {−3, −1, +1, +3}/√10 değerlerini alır. Noktalar Gray koduyla adlandırılır, yani komşu iki nokta yalnızca tek bitte ayrışır; gürültü bir sembolü komşusuna kaydırırsa yalnızca 1 bit bozulur.

"Dinle" sesi ses aralığına taşır: FSK'da 1 = 1200 Hz, 0 = 2200 Hz. Bu, 1976 tarihli Bell 202 modeminin tonlarıdır ve amatör telsizcilerin APRS paketlerinde hâlâ duyulur.

Birkaç bite tıklayıp değiştirin, sonra BPSK'dan 16-QAM'e geçip aynı 16 bitin kaç sembole sığdığına bakın.

Takımyıldız ve gürültü

Her sembol düzlemde bir yıldızdır. Gürültü onu yerinden oynatır; yıldız komşusunun bölgesine kayarsa bit yanlış okunur.

Alıcı gelen her sembolü I/Q düzleminde bir nokta olarak görür. Gürültü olmasaydı noktalar tam ideal yerlerine düşerdi; gerçekte her biri kırçıl gri bir bulutun içinde rastgele sapar.

İnce kesikli çizgiler karar sınırlarıdır: nokta hangi bölgeye düşerse alıcı o sembole karar verir. Sınırı aşan noktalar kırmızı halkayla işaretli.

Sağdaki sayaç hataları gerçekten sayar ve kuramla karşılaştırır. Sembol başına çok bit taşıyan takımyıldızlarda noktalar birbirine yakındır; aynı gürültüde daha çok hata yaparlar.

Daha fazla: SNR ve hata oranı

SNR burada Es/N0: sembol başına enerjinin gürültü yoğunluğuna oranı. Bit başına oran Eb/N0 = Es/N0 − 10·log₁₀(k), k sembol başına bit. Komşu noktalar tek bitte farklı olacak biçimde (Gray kodu) etiketlendiği için çoğu sembol hatası tek bit hatasıdır.

BPSK: Pb = Q(√(2·Es/N0)) QPSK: Pb = Q(√(Es/N0)) 16-QAM: Pb ≈ ¾·Q(√(Es/(5·N0))) 8-PSK: Pb ≈ ⅔·Q(√(2·Es/N0)·sin(π/8))

Q(x), standart normal dağılımın x'ten büyük olma olasılığıdır. 8-PSK ve 16-QAM ifadeleri en yakın komşu yaklaşımıdır; çok düşük SNR'da ölçülen değer biraz daha yüksek çıkar.

SNR'ı 4 dB'e indirin, sonra 16-QAM'e geçin: bulutlar birbirine karışır, hata sayacı hızlanır.

Dönen takımyıldız

Vericinin ve alıcının osilatörleri hiçbir zaman tıpatıp aynı değildir. Takımyıldız bu yüzden döner.

Faz kayması bütün noktaları sabit bir açıyla çevirir: karar sınırları yerinde kalır, noktalar komşu bölgeye taşar. Frekans hatası daha sinsidir: alıcının osilatörü biraz hızlı ya da yavaşsa takımyıldız durmadan döner ve noktalar bir halkaya yayılır.

Alıcı bunu kendisi düzeltir. Her sembolde noktanın en yakın ideal noktaya göre ne kadar döndüğünü ölçer ve kendi osilatörünü o kadar geri çevirir. Bu geri besleme, faz kilitli döngü, birkaç yüz sembolde dönmeyi durdurur.

Daha fazla: döngünün denklemi

Düzeltilmiş nokta y, karar verilen ideal nokta d. Faz hatası e ölçülür, döngü hem fazı hem frekansı izler (ikinci derece döngü):

e = arg(y · d*) φ̂ ← φ̂ + ω̂ + Kp·e ω̂ ← ω̂ + Ki·e

QPSK 90° döndürülünce kendisiyle çakışır; döngü 0°, 90°, 180° ya da 270° kaymış kilitlenebilir. Görüntü düzgündür ama bitler yanlıştır. Bu belirsizliği bilinen öncü (pilot) semboller ya da farksal kodlama çözer; burada her 16. sembol öncüdür.

Frekans hatasını 1,5 Hz'e çekin; takımyıldız halka olunca "Dönmeyi düzelt"e basın.

Mesajını gönder

Hepsini birleştirelim: yazdığınız metin bitlere, bitler sembollere, semboller dalgaya dönüşüyor; gürültülü kanaldan geçip yeniden metin oluyor.

Her harf UTF-8 ile bir ya da birkaç bayta, yani 8'li bit gruplarına çevrilir; ş, ğ, ı gibi Türkçe harfler iki bayt tutar. Bitler sembol başına taşınan sayıda gruplanır ve her grup bir I/Q değeri olur.

Alıcı her sembol boyunca gelen örneklerin ortalamasını alır ve en yakın takımyıldız noktasına karar verir. Yanlış kararlar kırmızı bitlere, kırmızı bitler bozuk harflere dönüşür. Tek bir bit hatası bir harfi bambaşka bir harfe çevirebilir.

Daha fazla: harf hatası ve hata düzeltme

Bit hata oranı p ise 8 bitlik bir baytın sağlam gelme olasılığı (1 − p)⁸'dir:

P(bayt bozuk) = 1 − (1 − p)⁸ ≈ 8·p

p = 10⁻² iken her 12–13 bayttan biri bozulur. Gerçek sistemler bitlere fazlalık ekler (hata düzeltme kodu, FEC) ve sonuna bir sağlama (CRC) koyar; alıcı hataları düzeltir ya da en azından fark eder.

Kendi mesajınızı yazıp Gönder'e basın, sonra SNR'ı yavaşça düşürüp harflerin bozulmasını izleyin.

Sembol hızı ve bant genişliği

Saniyede ne kadar çok sembol gönderirseniz sinyal spektrumda o kadar geniş yer kaplar.

Sembolleri keskin basamaklarla göndermek spektrumu gereksiz yere yayar. Bu yüzden her sembol yumuşak bir darbeye dönüştürülür: yükseltilmiş kosinüs kökü. Roll-off (β) bu yumuşaklığı ayarlar. β = 0'da spektrum dik kenarlı bir dikdörtgendir ama darbenin kuyrukları çok uzundur; β = 1'de darbe kısalır, bant iki katına çıkar.

Kaplanan bant genişliği yaklaşık Rs·(1+β)'dır. Bit hızı ise sembol hızı çarpı sembol başına bittir: aynı bantta 16-QAM, QPSK'nın iki katı bit taşır ama önceki deneyde gördüğümüz gibi aynı hata oranı için daha yüksek SNR ister.

Daha fazla: formüller B ≈ Rs·(1 + β) Rb = Rs·log₂M η = log₂M / (1 + β) bit/sn/Hz

Verici ve alıcıdaki iki kök süzgeç birlikte yükseltilmiş kosinüs olur. Bu darbe komşu sembollerin örnekleme anlarında tam sıfırdan geçer; semboller birbirine karışmaz. Uydu yayını DVB-S2 β = 0,35, 0,25 ya da 0,20 kullanır; DVB-S2X 0,05'e kadar iner.

β'yı 0'a çekin: spektrum dikdörtgenleşir, darbenin kuyrukları uzar. Sonra sembol hızını artırın.

Havada neler var?

Bir SDR'ı açıp bandı gezdiğinizde her sinyalin şelalede kendine özgü bir izi olduğunu görürsünüz. Beşini burada, gerçek biçimlerine sadık kalarak tarayıcıda ürettik.

FM yayın geniş ve kesintisiz bir şerittir. Uçakların ADS-B paketleri yalnızca 120 mikrosaniye sürer ve ince yatay çizgiler bırakır. Kumanda kısa patlamalar hâlinde, Mors noktalı-çizgili bir izle görünür.

Alttaki panelde her sinyalin çözücüsü çalışır: FM'in içindeki 19 kHz pilot, uçak paketinin bitleri ve CRC denetimi, uydunun satır satır beliren görüntüsü, Mors metni, kumandanın 24 bitlik kodu.

Daha fazla: ADS-B ve APT'nin içi

ADS-B: Her paket 8 µs'lik bir başlangıçla açılır (0; 1; 3,5 ve 4,5 µs'de birer darbe). Ardından saniyede bir milyon bitle 56 ya da 112 bit gelir. Her bit 1 µs sürer; 0,5 µs'lik darbe ilk yarıdaysa 1, ikinci yarıdaysa 0 demektir (darbe konum modülasyonu). Son 24 bit, paketin bozulmadığını gösteren CRC'dir.

NOAA APT: Uydu her yarım saniyede bir satır gönderir: 2080 kelime, yani saniyede 4160 kelime. Kelimeler 2400 Hz'lik bir tonun genliğine yazılır (AM); bu ton da 137 MHz'lik taşıyıcıya FM ile biner. Satır başlarındaki 1040 Hz'lik senk A ile 832 darbe/sn'lik senk B, o tanıdık "tik-tak" sesini çıkarır.

ADS-B'yi seçin ve paketlerin şelalede bıraktığı kısa çizgilere bakın. Sonra NOAA APT'ye geçip Dinle'ye basın: tik-tak sesini duyup görüntünün satır satır belirmesini izleyin.

Kendi kaydınızı açın

Bir RTL-SDR ya da HackRF ile kaydettiğiniz IQ dosyasını buraya bırakın: tüm kaydın şelalesini görür, bir istasyona tıklayıp dinlersiniz.

Dosyanız yalnızca bu tarayıcıda işlenir, hiçbir yere yüklenmez. Büyük dosyalar parça parça okunur; yüzlerce megabaytlık bir kayıt da belleği doldurmaz.

Ham IQ dosyasında başlık yoktur: biçim, örnekleme hızı ve merkez frekans dosyanın içinde yazmaz. Biçimi dosya adının uzantısından tahmin ederiz; hızı ve frekansı siz girersiniz. SigMF bu bilgileri yanındaki .sigmf-meta dosyasında taşır.

Daha fazla: kayıt nasıl alınır?

RTL-SDR ile 100 MHz'te, 2,048 MS/sn'de 10 saniye (20.480.000 örnek, 41 MB):

rtl_sdr -f 100000000 -s 2048000 -n 20480000 kayit.cu8

HackRF ile (8 bit işaretli, 10 MS/sn'de 10 saniye, 200 MB):

hackrf_transfer -r kayit.cs8 -f 100000000 -s 10000000 -n 100000000

Her örnek iki sayıdır (I ve Q): cu8 ve cs8'de örnek başına 2 bayt, cs16'da 4, cf32'de 8 bayt. SDR++ ve SDR# gibi programların WAV biçimli kayıtlarını bu görüntüleyici okumaz.

Dosyanız yoksa "Örnek kayıt üret"e basın. Şelalede bir istasyona tıklayın, kipi (AM, NFM, WFM) seçip Dinle'ye basın.

Dinlemek serbest, yayın lisanslı

Herkese yönelik yayınları almak çoğu yerde serbesttir. Ama size yönelik olmayan bir haberleşmeyi dinlemek, kaydetmek ya da yaymak birçok ülkede suçtur. Yayın yapmak ise belge ya da izin ister.

Türkiye'de haberleşmenin gizliliği Anayasa'nın 22. maddesiyle korunur. Türk Ceza Kanunu'nun 132. maddesi haberleşmenin gizliliğini ihlal etmeyi ve içeriği hukuka aykırı ifşa etmeyi, 133. maddesi aleni olmayan konuşmaları rıza olmadan dinlemeyi ve kaydetmeyi suç sayar. Telsiz cihazları ve frekansları BTK (Bilgi Teknolojileri ve İletişim Kurumu) düzenler.

Yayın yapmak isteyenin yolu amatör telsizcilikten geçer: sınavı Kıyı Emniyeti Genel Müdürlüğü (KEGM) yapar, geçen A, B ya da C sınıfı belge ve çağrı işareti alır. İzinsiz kullanılabilen bantlar dardır: 433 MHz kısa menzilli cihazlar, PMR446 el telsizleri gibi.

Daha fazla: resmî kaynaklar

Bu slayt hukuki tavsiye değildir; kurallar ülkeden ülkeye ve zamanla değişir. Güncel mevzuata bakın; emin değilseniz BTK'ya, KEGM'e ya da bir amatör telsiz derneğine sorun.

Kartlara tıklayın: önce "FM radyo dinlemek", sonra "Polis ya da acil telsizini dinleyip paylaşmak".

Radyo artık
bir yazılım

dalga→örnek→IQ→spektrum→alıcı→modülasyon

Dalgayı sayılara çevirdik, I ve Q ile frekansın yönünü yakaladık, bandı gördük, bir istasyonu seçip sesini geri kurduk. Eskiden lehimle yapılan her şey artık kod.

Aynı IQ verisini bir sinir ağına verirseniz, sinyalin türünü kendi kendine tanımayı öğrenir. Sinir ağlarını oynayarak öğrenmek için: egitim.koraytoksoz.com/yz

Sinir ağlarına geç

© 2026 Koray Toksöz · İçerik CC BY 4.0, kod MIT · Bütün sinyaller ve sesler tarayıcıda sentezlenir; "Neşeye Övgü" (Beethoven) kamu malıdır.