前回は、「GRC」をインストールして実際に使用してみました。具体的には、cos波を出力してみました。前回の内容は下記より参照できます。
今回は、「GRC」を使用して、FM放送を受信してみようと思います。使用するSDRデバイスは、「RTL-SDR」になります。下記のような流れで進めていきたいと思います。
- 「RTL-SDR」のドライバをインストール
- 「SDR#」を使用して、FM放送の受信
- 「GRC」を使用してFM放送の受信
「GRC」でFM放送を受信してみる前に、「RTL-SDR」が「SDR#(受信した無線電波を処理してくれるソフトウェア)」を使用して動作するかどうか確認してみようと思います。
まずは、「RTL-SDR」のドライバのインストールからです。
「RTL-SDR」のドライバをインストールするときには、「zadig」というソフトウェアを使用します。「Windows10」に対応したドライバがないようなので、このようなソフトウェアが用意されているですかね?「SDR#」のパッケージに含まれていますので、まずは下記のサイトよりダウロードします。
参考にですが、下記のサイトより直接「zadig」をダウンロードすることも可能です。
「SDR#」をダウロードしたら解凍します。その中の「install-rtlsdr.bat」を実行します。すると、「zadig.exe」が同じフォルダにダウンロードされます。「zadig」がダウンロードできたので、まずは、「RTL-SDR」をPCに接続します。私の場合最初は認識せずに、「Bulk-In, Interface (Interface 0)」と「Bulk-In, Interface (Interface 1)」が表示されていました。ここで私は間違って、ドライバの更新をしてしまい、「サウンド、ビデオ、およびゲームコントローラ」の「REALTEK 2832U Device」として認識してしまいました。この状態で、「SDR#」を試してみましたが、動作はしませんでした。そこでダウンロードした「zadig.exe」を実行して、ドライバを変更しました。「zadig.exe」を実行して、メニューの「Options」→「List All Devices」を選択します。
すると、下記のように「Bulk-In, Interface (Interface 0)」を選択できるようになります。「Bulk-In, Interface (Interface 0)」を選択したら「Replace Driver」を選択して、ドライバを変更します。
変更が完了したので、デバイスマネージャで確認すると、ユニバーサルシリアルバスデバイスに「Bulk-In, Interface」として認識されています。これでドライバの設定は完了です。
ダウンロードして解凍したSDR#フォルダの中にある「SDRSharp.exe」を実行します。すると、「SDR#」が起動します。
歯車マークを選択すると、デバイスの選択画面が右側に表示されました。現在、「AIRSPY」と選択されているので、これを、「RTL-SDR USB(Original)」に変更します。
もう一度歯車マークを選択すると、下記のようにRTL-SDR Controller画面が表示されます。ここで、RF Gainなどを設定できます。
あとは、Radioより「WFM」を選択して、中央に表示されている周波数をFM放送の周波数に設定します。
再生ボタン「▶」を押すと受信を開始します。FM放送が受信できました。これで、「RTL-SDR」の動作確認ができたので、次は「GRC」を使用してFM放送を受信してみたいと思います。「GRC」を起動して下記のようにボックスを配置して接続しました。
配置したボックスは、「RTL-SDR Source」「LowPass Filter」「WBFM Receive」「Audio Sink」「QT GUI Time Sink」「 QT GUI Range」になります。「RTL-SDR Source」は、ライブラリ→(no module specified)→Source→RTL-SDR Sourceをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。まだ試していませんが、osmocom Sourceでも問題ないと思います。ここで、選局しています。「Low Pass Filter」は、ライブラリ→Core→Filters→Low Pass Filterをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、高周波成分を除去しています。「WBFM Receive」は、ライブラリ→Core→Modulators→WBFM Receiveをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、復調しています。
「Audio Sink」「QT GUI Time Sink」「QT GUI Range」に関しては、前回設定したので下記のサイトを参考にしてください。
「RTL-SDR Source」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Device Arguments = rtl=0
- Sample Rate(sps) = samp_rate*50
- Ch0:Frequency(Hz) = vairiable_qtgui_range_0 ※QT GUI RangeのID
- Ch0:Gain Mode = Automatic
この「Device Arguments」に悩まされました。デバイスを引数で設定する必要があるようです。「Low Pass Filter」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Decimation = 5
- Sample Rate = sample_rate*50
- Cutoff Freq = 150e3
- Transition Width = 50e3
「WBFM Receive」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Quadrature Rate = samp_rate*10
- Audio Decimation = 10
「Audio Sink」ブロックはデフォルト値のままです。
「QT GUI Time Sink」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Type = Float
「QT GUI Range」ブロックで設定したパラメータは下記の通りです。その他はデフォルト値です。
- Default Value = 80e6
- Stop = 100e6
- Step = 1e5
これで、作成は完了したので、実行します。FM放送を受信することができました。