1500円で買ったDVB-Tドングルとgnuradioでアマチュア無線の受信をやってみます。受信対象は144MHz(2m)のFMです。放送波とちがってNarrow Band FMなので、これに合う受信機をgnuradioのブロックで構成します。
バンド内にたくさん電波が出ているので、目的のチャネル以外から妨害を受けないよう、FM復調の前にフィルタを挿入します。ゼロIFなのでLPFです。LPFはデシメーションもできるので、1.024Mから32kまで1/32に落とします。またスケルチも入れておきます。FMの復調にはNBFM Receiveブロックを使います。これにはデエンファシスの機能も入っています。周波数変移(deviation)が5kHzと小さな値になっていることに注意してください。これらをつなぎ合わせた結果こんな構成になりました。(クリックで拡大)
受信開始するとFFTのウインドウにバンド内の信号が並んで立つのがわかります。LPFで中央の信号を取り出して復調しています。
気づいたことのメモです。
- デシメーションすることでCPU負荷がかなり下がる。当初デシメーションせずに復調していたのだが、70%ほどもCPUを使っていた。1/32にすることで15-20%程度のCPU負荷に減らすことができた。
- 強力な信号がバンド内に入ると、バンド全体が抑圧を受ける。RTL2832Uのautogain modeをOFFにしても同様だった。そういう意味では実用的ではないかも。
- RTL2832Uの帯域幅の設定を変えることができるようだが効果は未検証。
何か間違いがあるかもしれませんが、お気づきの点があればお知らせ頂ければ幸いです。
[追記]
フローグラフのファイルをアップしておきました。ダウンロードしてご参照ください。
https://raw.github.com/edy555/gnuradio-trial/master/nbfm-2m-fft.grc