ADALM-PLUTOが来た

はじめに 

 GNU Radioでいろいろ実験をしてみようと思いたちアナログ・デバイセズのADALM-PLUTOを購入してみました。購入先はdigikey。国内で買うより安めの価格設定ですが、発売当初は1万円台というバーゲンプライスだったのでその時に入手しておけば良かったです。

インストール

 ポチってから4日で到着しました。同時にAmazonでSMAのダミーロードとスタンドアロンで使うためのUSBイーサアダプタ(BUFFALO LUA4-U3-AGTE-NBK)micro-B用のOTGケーブル(BSMPC11C01BK)も入手しました。

こちらからWindows用のUSBドライバを入手して事前にホストPCにインストールしておきます。付属のケーブルで本体中央のUSBポートに接続(右側は電源供給用)するとあっけなくUSBマスストレージとして認識。ドライブの中にあるinfo.htmlにシリアルやファームのバージョンが入っています。

 USBドライバに付属するIndustrial I/Oのコマンドiio_info.exeを使ってPC側からも確認。よく見るとEthernet Over USBでホスト側・クライアント側にアドレスが振られているのがわかります。avahiも動いていてゼロコンフィグに対応していることから、GRCなどからは「ip:pluto.local」という名前でアクセス可能です。

info.htmlの中央付近にファームウェアのバージョンがあるので、もし古ければオンラインドキュメントを参考にアップデートしてください。0.31以降のファームであればダウンロードしたzipをUSBマスストレージドライブのルートに置くだけです。右クリックでドライブを「取り出し」するとアップデートが自動的に始まります。LED点滅中はケーブルを抜かないようにしてください。

ファームウェアアップデート後、必要に応じてこちらの改造を実行。PLUTOの扱える周波数はデフォルトでは325MHz – 3800MHzですが、AD9364ベースのものは70MHz – 6000MHzまで拡張できるとのことです。

USBイーサアダプタの設定

 PLUTOをアンテナの側に置きたいのでPCとはネットワーク経由で接続します。こちらも設定は簡単。USBマスストレージドライブにあるconfig.txt[USB_ETHERNET]という項目があるので必要に応じて修正します。DCHPサーバが動いているならここは空白のまま、アドレスを指定したい場合はIPアドレスを入れてください。DHCPで振られたアドレスはavahiで名前解決しますので先程のpluto.localで同様にアクセス可能です(ホスト名を変えたい場合はhostnameを変更して下さい)。

 設定変更後「取り出し」をしてOTGケーブルでUSBイーサアダプタをPLUTOに接続。電源供給のため本体右側のmicro-BコネクタにUSB電源もしくはPCを接続してください。ほどなくリンクアップしますのでPC側からping pluto.localで確認してください。IPアドレスがDHCPで振ったものに変わっていると思います。

GNU Radio Companionを使う

 必要なものがまとめて入っているradiocondaを使うのが便利だと思います。リリースページからダウンロード後インストールしてください。GNU Radio Companionを起動後、Industrial I/O → PlutoSDRからソースを選んで、下図のようにIIO context URIにip:pluto.localを入力しQT GUI Sinkとつなぎます。Run→Generate/Executeで指定した周波数を中心とするスペアナが見えると思います。

PyADI-IIOを使う

 GRCを使わずにPythonから直接叩くこともできます。アナログ・デバイセズがIndustrial I/OライブラリのPythonラッパーPyADI-IIOを提供しており、以下のように簡単にPLUTOにアクセスできます。がりがりプログラムを書くならこちらでも良いかも。radiocondaにも入っているのでそのまま使えます。また個別にLibIIOライブラリとanaconda・pip等でpyadi-iioをインストールして使うこともできます。

 Qiita「ADALM PLUTOでFM受信してみる」を参考にFMラジオを動かしてみると無事NHK-FM(82.5MHz)を受信することが出来ました。ちなみに付属アンテナでは感度が悪いので普段使っている144/430MHzの2エレを接続しています。尚、ホスト名を変更している場合は以下のip:pluto.localの部分を適宜変更してください(コンストラクタのデフォルト値がip:pluto.localになっています。デフォルトコンストラクタだと他のインターフェースがタイムアウトするのを待つのか初期化が非常に遅くなる問題がありました。名前解決をしないIPアドレス直打ちが一番速いようです)。

 PythonによるSDRの実装はこちらに詳細な説明があります。PyADI-IIOの詳細もあるので参考になります。またFM放送・FM文字放送(日本とは違うRDSという規格のようです)用デコーダの実装が詳しく説明されているので、SDRの勉強に良さそうでした。

今後の予定

 PLUTOはTxも装備しています。出力は7dBmとのことで特小トランシーバの半分です。付属のアンテナでも電波法の基準を満たすのは厳しいようなのでダミーロードを付けています。隣のアンテナのRxならループバックできるのではないかと思いますが駄目ならアッテネータを噛ませて直結しようと思います。こちらにハードウェアの詳細も記載されていますので興味のある方はごらんください。今後ADALM-PLUTOを使っていろいろ実験してみようと思います。

おまけ

anacondaでライブラリが見つからない場合、pipを使ってインストールすることも多いかと思います。その際にpipがcp932で処理できない文字コードがあるとエラーとなる場合があります。今回もscikit-commpyが引っ掛かりました。Windowsでは「設定」→「時刻と言語」→「言語と地域」→「関連設定:管理用言語の設定」→「システムロケールの設定」で以下の「ワールドワイド言語サポートでUnicode UTF-8を使用」にチェックを入れて再起動すると解消します。尚、一部レガシーなアプリの挙動がおかしくなるのでインストール後は元に戻しておくようにしてください。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください