Soru:
Bir RTL SDR alıcısı kullanarak FM Frekansındaki bir ton nasıl algılanır?
Ash
2015-06-24 03:19:19 UTC
view on stackexchange narkive permalink

Bir FM vericisi kullanarak 50 ms süren basit bir ton gönderiyorum. Bir spektrum grafiğine baktığımda (GQRX kullanarak) RTL-SDR cihazımda bu tonun alındığını net bir şekilde görebiliyorum.

Ton alınır alınmaz bir linux çekirdek işlevini çağırmam gerekiyor, bu yüzden Sinyali işleyen gerçek zamanlı bir çözüm istiyorum. En iyi yolun, çıkış akışının terminal aracılığıyla bir kabuk programıma aktarılması olacağını düşünüyorum, ancak bu akışa, sinyalin basitçe demodüle edilmiş bir genliği olması için ihtiyacım olacak. Genlik bir faktör kadar arttığında işlevimi çağırırım.

Bunu başarmanın herhangi bir yolu var mı?

Bir cevap:
Kevin Reid AG6YO
2015-06-24 03:30:55 UTC
view on stackexchange narkive permalink

Ton bir DTMF tonu veya diğer birkaç basit ton kodu protokolünden biriyse veya yapılabilirse, bunu algılamak için multimon-ng kullanabilirsiniz. multimon-ng, algılanan tonlara karşılık gelen metin çıktısı verecektir. Bu aynı zamanda genlik kriterini programlamanıza gerek olmadığı anlamına gelir. Bunun gibi bir şey:

  rtl_fm -f <freq> -s 22050 -M wbfm | multimon-ng -a DTMF -t ham - | <your program>  

burada " <your program> ", stdin üzerinde bir miktar girdi bekleyen ve ihtiyacınız olan işlevi çağıran bir programdır. Seçeneklerin açıklaması:

  • rtl_fm ... -s 22050 22050 Hz giriş örnekleme hızı gerektiren multimon-ng için uygun ses hızını ayarlar.
  • rtl_fm ... -M wbfm , iletim yapmak için bir "FM araba radyosu" kullandığınızı söylemenizdir, bununla kullanım amaçlı düşük güçlü vericileri kastettiğinizi varsayıyorum bir araba stereo sistemi ile. Yayın FM, amatör / iki yönlü telsizler tarafından kullanılan dar bant FM değil, geniş bant FM'dir. Bunlardan birini kullanıyorsanız, -M fm (veya bu varsayılandır).
  • multimon-ng ... -a DTMF multimon-ng'ye yalnızca DTMF kodunu çözmesini ve başka bir şey denememesini söyler.
  • multimon-ng ... -t raw - multimon-ng'ye bir ses cihazını açmak yerine stdin'den okumasını söyler.

Ayrıca frekansı kullanmak isteyebilirsiniz rtl_fm için düzeltme PPM, kazanç, filtreleme vb. seçenekler; bu tamamen başka bir makale olurdu ve bu yüzden sadece var olduklarını belirtmek istiyorum.

Çıktı multimon-ng, DTMF: ön ekiyle tespit edilen kod başına bir satır olacaktır, örneğin:

  DTMF: 1DTMF: 2DTMF: 3   ön>

Multimon-ng desteklerini kullanabileceğiniz birkaç başka kod vardır - multimon-ng'nin benioku dosyasında bahsedilen kodları araştırmanızı öneririm. Belirli bir perdesi olmayan ancak belirli süreleri olan MORSE_CW (Mors kodu) bile kullanabilirsiniz (50 ms'lik tek bir ton her zaman "E" olarak çözülür).


Bunu GNU Radyo içinde inşa etmek de mantıklı olacaktır, bu da tüm sinyal işlemenin tek bir programa ve daha fazla RF donanım seçeneğine entegre edilmesine izin verir. Ancak, her şeyi ayarlamak için çok daha fazla kod gerekir.

Bunu başarmak için, başka bir linux makinesinde bir DTMF tonu üretmem gerekir. Nasıl devam edeceğine dair bir fikrin var mı? Tonu, standart bir FM araba radyosu kullanarak ses kartından iletiyorum.
DTMF sadece iki sinüs dalgasının toplamıdır - [Wikipedia tüm frekanslara sahiptir] (https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling). İyi bir ses editörü veya basit bir program bunu yapabilir (kırpmamaya dikkat edin!)
@Ash Bitirip test ettim, ayrıntılarla düzenledim. Ayrıca, geniş bantlı (yayın yapan) bir FM vericisi kullanıyor olmanız fark yaratır (“araba radyosuna” dayandığını varsayıyorum), bu yüzden lütfen bu bilgiyi sorunuza göre düzenleyin.
Bu yüzden hala çalışmayı başaramıyorum. Önce şu komutu çalıştırıyorum: `rtl_fm -f 88.6M -s 22050 -M wbfm | multimon-ng -a DTMF -t raw -` Daha sonra FM vericisi aracılığıyla birkaç farklı ton iletmek için çevrimiçi bir DTMF ton üreteci [bağlantı] (http://onlinetonegenerator.com/dtmf.html) kullanıyorum. Verici 88.6MHz'e ayarlanmıştır. GQRX'i açtığımda, tonun etkisini o frekansta kolayca görebiliyorum, ancak tonları ilettiğimde multimon-ng'den herhangi bir çıktı görmüyorum.Tuhaf bir şey, rtl_fm'den gelen çıktının şu satırı içermesi: ** 88853575 Hz'ye ayarlanmıştır. ** Yanlış frekans hangisi ... Herhangi bir fikir?
[Vericim] (http://www.amazon.ca/gp/product/B00IRSYCY2?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00)
@Ash Lütfen vericinizle ilgili bilgileri sorunuzda düzenleyin. Yanlış frekansa gelince, bu normaldir - rtl_fm, DC ofset durumunda ofset ayarını kullanır. Harika sorun giderme fikirleri yok, üzgünüm.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...