bookmark_border[362] JTDXの「-26dB」現象

この週末は天気が不安定だったため、ベランダ内のアンテナを使って少しの時間ではありましたがFT8を運用しました。

その中で、またJTDXの「-26dB」現象が現れました。バンドは430です。0エリアの局が受信できたため呼んでみると、早速応答していただけました。

その後、こちらからのレポートの具合が悪かったのか、相手局から再びレポートが送られてきたと思ったら同じタイミングで「RR73」が送られてきました。おそらく相手局は途中でこちらのレポートに気がついてマニュアルで「RR73」を送っていただいたのだと思いますが、ここで当局のJTDXのHint機能が働いたのでしょうか、「-26dB」でデコードした部分に反応して「R-26」のレポートを送ってしまいました。

カーソルを合わせるのに手間取り、4秒遅れで相手局の「RR73」をダブルクリックして「73」を返信し事なきを得ましたが、少し慌てました。

当局は「-26dB」を表示したときのJTDXの挙動はあまり信用できないというのが実感としてあり、Hint機能はOFFにしたいのですが、ボタンを押してもOFFできないようですね。ただDXなど本当に弱い信号の場合は、結構この機能に救われていることもあるのかも知れません。

bookmark_border[361] NanoVNAからのSWR取得

NanoVNAから反射係数のデータを取得できることがわかりましたので、センター周波数とスパンをマニュアル入力し、反射係数からSWRを導き出す簡単なプログラムを組んでみました。

nanovna.pyをそのまま使わせていただき、コマンド入力処理部分はコメントアウトし無効化したうえで新たに下記のコードを追加して、初めに反射係数表示を試しました。

なお、最初は周波数セット後すぐにデータ取得しようとしましたが、前のデータが残っていたようでしたので、データ取得前に0.2秒の「待ち」を入れています。待ち時間を変えてみましたが、0.05秒では短かすぎ、0.1秒ではギリギリのようでした。

センター周波数に50.313MHz、スパンに1MHzを入力した結果は以下のとおりです。ちゃんと複素数表示されていますね。測定数はデフォルトの101に固定しています。アンテナはHFV5を使っています。

次に反射係数からSWRを求める式を入れました。

式はおなじみのSWR =(1+|反射係数|)/(1-|反射係数|)です。先ほどの反射係数表示のコマンドはコメントアウトし、SWR表示のコマンドを追加しています。

その結果は以下のとおりです。

実際に使いたいのは真ん中(50番目)の値ですので、それを取り出す式と表示コマンドを追加しました。Pythonでは順番は0から始まるとのことですので50番目は「49」を指定することになります。また小数点以下2桁まで表示するのにフォーマット関数を使っています。

その結果、この様にセンター周波数に対応したSWR値を得ることができました。

ちなみに下はNanoVNAを50Ωで終端したときのものです。当然ながらSWRはほぼ1ですね。

NanoVNAからのSWRの取得には結構遠回りして難航しましたが、ようやくここまでたどり着くことができました。PCによるリレー制御とSWR計算が実現しましたが、今後、更にSD330コントロールのアルゴリズムやGUIを考える必要があり道半ばという感じです。

またリレーとプッシュスイッチを格納するスイッチボックスの作成も必要です。
悩ましいのは、周波数情報をリグから取るかPCでマニュアル入力するかですが、リグ接続の場合JTDXとのバッティングをどの様に回避すれば良いかがわからないため、取り敢えずマニュアル入力で行こうと思います。

ちなみにSWRデータはリグからではなくNanoVNAから取りますので、高SWR状態でTX ONする必要がなくリグへの負担は無くなりますが、同軸切替が必要となりますのでその点は自動化が難しいですね。当局の場合は元々リグとNanoVNAの切替に同軸スイッチを使っており、接続はそのままでOKです。

bookmark_border[360] PCからのNanoVNA制御

一夜明けて改めてNanoVNAをPCに接続してみると、昨日の接続エラーが嘘のように消えていました。

原因は追究しないこととして、PCからダイレクトにNanoVNAにコマンドを送出する方法を試してみました。ネットで「NanoVNA commands」を検索するとコマンド表(PDF)が出てきます。

PCへのコマンド入力はnanovna.py経由でも良いのですが、NanoVNAからのレスポンスをPC上で表示する方法がわからなかったため、Tera Termを使ってターミナルモードにしてそこから打ち込みました。

これがTera Termを立ち上げてNanoVNAを接続したときの画面です。ちゃんと接続先のCOMポートが認識されています。

それではいよいよコマンド入力です。まず「help」を入力してみました。

ここではコマンド一覧が表示されます。これらのコマンドを使って、NanoVNAに対するターゲット周波数の設定とSWRデータを取得することになりますが、nanovna.pyのコード内容とPDFのコマンド表を見比べながら探っていきたいと思います。

なお、dataコマンドを使うとNanoVNAから反射係数の実数部と虚数部が出力されるようですので、それを元にPCでSWRを計算することができます。

ここまでで不明な点は、周波数範囲を指定して反射係数は取得できるものの、ピンポイントでターゲット周波数を指定しその周波数でのデータをどうやって取得するかです。ただ、周波数範囲をターゲット周波数±●MHzの範囲で指定すれば、SWR計算の際にはその中心のデータだけを使えば良いので、あまり悩まなくても良いのかも知れません。

ちなみにバージョンを見ると古そうですが、今の状態で特に不便を感じていませんのでファームアップは別の機会に行いたいと思います。

bookmark_border[359] NanoVNA USB接続エラー

最近は毎日のようにNanoVNAをいじっていますが、何とPCとのUSB接続がエラーになってしまいました。デバイスマネージャで見るとドライバが不調の様で、一旦ドライバを削除してPCを再起動してみましたがダメです。

NanoVNA用に専用のドライバをインストールした記憶が無いのでおそらくWindows標準のものと思いますが、エラーが消えません。当然のことながらCOMポートも表示されず、PCのアプリからも接続できない状態です。

他のPCで接続できるかどうかはまだ試していませんが、もしかするとnanovna.pyから色々とコマンドを打ち込んでいたため、NanoVNA側の設定がおかしくなってしまったのかも知れません。

ちなみに、nanovna.pyからは「-e」オプションを使うことでNanoVNAに対してダイレクトにコマンドを打ち込むことができそうで、コマンドもネットに情報が載っていたため試してみようと思った矢先にこの様な事態に陥りました。なおNanoVNA単体では特に問題無さそうです。

週末に落ち着いて対処しようと思いますが、QSLカードの印刷も予定しており週末は慌ただしく過ぎてしまいそうです。

bookmark_border[358] PythonによるNanoVNA制御(続き)

コマンドプロンプトから直接コマンドを打ち込むことでNanoVNAから情報を得ることができるPythonソフト「nanovna.py」を色々と試してみたところ、指定した周波数範囲でのSWRデータをPCで表示させる方法がようやくわかりました。

まずnanovna.pyが格納されているディレクトリに移り、そこで「開始周波数」「終了周波数」「表示するパラメータ(ここではSWR)」を指定するのですが、それらをファイル名の後に列記すれば良いのですね。例えば50MHz~54MHzの範囲でSWRを表示するためのコードは以下の通りです。

py nanovna.py -S 50e6 -E 54e6 -W

ここで、「-S 50e6」は開始周波数50MHz、「-E 54e6」は終了周波数54MHz、「-W」はSWR表示を表します。

その結果、PC上の表示は下の様になります。アンテナはHFV5です。

グラフは最適なスケールに自動調整されているようですが、マニュアルで調整できるかどうかは現時点では不明です。横軸の周波数も10^7の表示になっていて10MHz単位ですので見難いですね。

ただ本来の課題はそこではなく、知りたいのは指定周波数に対するSWR値の生データで、このソフトを使って実際のデータを取得できるのか、また「NanoVNAServer」という別ソフトもPythonコードが開示されているようでこちらを解析する必要があるか・・・いずれにせよ、当局にはPythonの知識が全く不足しており、そちらの習得が先決と思われます。