SDR(2)-RTL-SDRを使ってFM放送受信

前回は、「GRC」をインストールして実際に使用してみました。具体的には、cos波を出力してみました。前回の内容は下記より参照できます。

SDR(1)-GRCを使ってみる

今回は、「GRC」を使用して、FM放送を受信してみようと思います。使用するSDRデバイスは、「RTL-SDR」になります。下記のような流れで進めていきたいと思います。

  • 「RTL-SDR」のドライバをインストール
  • 「SDR#」を使用して、FM放送の受信
  • 「GRC」を使用してFM放送の受信

「GRC」でFM放送を受信してみる前に、「RTL-SDR」が「SDR#(受信した無線電波を処理してくれるソフトウェア)」を使用して動作するかどうか確認してみようと思います。

まずは、「RTL-SDR」のドライバのインストールからです。

「RTL-SDR」のドライバをインストールするときには、「zadig」というソフトウェアを使用します。「Windows10」に対応したドライバがないようなので、このようなソフトウェアが用意されているですかね?「SDR#」のパッケージに含まれていますので、まずは下記のサイトよりダウロードします。

https://airspy.com/download/

参考にですが、下記のサイトより直接「zadig」をダウンロードすることも可能です。

https://zadig.akeo.ie/

「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」に関しては、前回設定したので下記のサイトを参考にしてください。

SDR(1)-GRCを使ってみる

「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放送を受信することができました。

2023年1月28日 | カテゴリー : SDR | タグ : , , , | 投稿者 : prog

SDR(1)-GRCを使ってみる

SDRは、Software Defined Radioの略です。要するにソフトウェア無線です。従来はアナログ回路で構成されていた無線機器をソフトウェアによるディジタル信号処理に置き換えたものになります。SDRはディジタル信号処理を行うDSP(Degital Signal Proccessing)を利用した無線機器です。ハードウェアを変更することなく変調方式などのパラメータを変更することができます。

GRCは、GNU Radio Companionの略です。GRCは、ブロックを配置して繋いでいくことでプログラムを構築します。SDRの信号処理方法として、GNU Radioというオープンソースのソフトウェアが提供されていますが、プログラミングをしなくても操作ができるようにしたものが、GRCになります。今回、このGRCを使ってみようと思います。

まずは、インストールからです。GRCは、Windowsでは、動作しないと思っていたので、Ubuntuを用意してインストールしましたが、よくよく調べましたら、Windowsでもインストール可能でした。Ubuntuでのインストールは、下記のコマンドを実行することで、インストールできます。

sudo apt-get install gnuradio

それでは、cos波を生成して、音として出力してみたいと思います。下記のようにブロックを配置して、作成しました。

Single Sourceは、ライブラリ→Core→Waveform Generators→Singnal Sourceをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、cos波を生成しています。

Audio Sinkは、ライブラリ→Core→Audio→Audio Sinkをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、音声出力を生成しています。

QT GUI Time Sinkは、ライブラリ→Core→Instrumentation→QT→QT GUI Time Sinkをドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここで、画面出力を生成しています。

QT GUI Rangeは、ライブラリ→Core→GUI Widgets→QT GUI Rangeドラッグ&ドロップするか、ダブルクリックすることで、追加できます。ここでcos波の周波数を操作するスライダを生成しています。

SingleSourceのOutput TypeとQT GUI Time SinkのTypeはfloatにしています。Audio Sinkの入力タイプがfloatのためです。SingleSourceのFrequencyには、QT GUI Time SinkのID(今回は、variable_qtgui_range_0)を入力します。それ以外は、デフォルト値です。

これで、作成は完了したので、実行します。実行するとスピーカからの音と共に、cos波の波形が画面に出力されます。

先程、記載したように、Windowsでも動作ました。Windowsの場合は、下記サイトからインストーラがダウンロードできるので、ダウンロードしたファイルを実行することでインストールできます。

http://www.gcndevelopment.com/gnuradio/index.htm

同様にcos波を発生して音声として出力する仕組み作成しましたが、問題なく動作しました。

2023年1月21日 | カテゴリー : SDR | タグ : , | 投稿者 : prog