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波を発生して音声として出力する仕組み作成しましたが、問題なく動作しました。