bookmark_border[351] PCからのリレー制御

SD330アンテナのオートチューニング化を目指して・・・・今度はPCから外部USBデバイスの制御について試してみようということで、Amazonで送料込み数百円程度のUSBリレーを見つけ購入しました。

取扱説明書は添付されておらず、基板に印字されている型名を頼りにネットで制御アプリを探してダウンロードしました。コネクタはUSB2.0 Type Bで当方に手持ちが無かったため、取り敢えずPCからリグにつないでいるケーブルを外して接続しました。

アプリを立ち上げて色々やってみると・・・カチカチと動きました。リレーは2ヶ搭載されており、ON状態でグリーンのLEDが点灯します。

ちなみにアプリはこのようなものです。黒塗りした部分には、このデバイスの固有コードが表示されています。

しばらくこれで遊んでいたのですが、これでは自動化にはなりませんので、次にコマンドラインから各リレーのON/OFFが制御できるソフトを起動させてみました。コマンドプロンプトから実行させてみると正常にリレーが作動します。

なお、白抜きになっている部分には上述の「デバイス固有コード」が入ります。引数としては「デバイス固有コード」「ON/OFFの指定」「リレーの指定」の3つになります。

次の課題として、この引数付きのexeファイルをPythonからどのようにして実行するかということですが、もしかするとexeを介さずにダイレクトにPythonから制御するソフトがあるかも知れませんので、これについてはまた調べていきたいと思います。

bookmark_border[349] Python シリアル通信

Pythonお試しの続きです。

開発環境が整ったところで、今回はシリアル通信の方法について調べました。これには「pySerial」というパッケージが必要で、コマンドプロンプトから

pip install pyserial

と入力するとPCにインストールされます。

なおPython用の各種パッケージは「https://pypi.org/」サイトで管理・配布されているようで、「pip install パッケージ名」を実行するとこのサイトからパッケージを探し自動でPCにインストールしてくれて大変便利です。画面上でpipの新バージョンのインストールを促されましたので、メッセージに従いpipをアップデートしました。

次に、仮想COMポート設定用のフリーソフト「com0com」をインストールしました。これは2つの仮想COMポートをクロスケーブルで接続したように見せる仕組みで仮想ループバックができるため、実際に外部デバイスを接続しなくてもPC内部で閉じた検証が可能となります。

更に、シリアル通信用ターミナルソフト「Tera Term」をインストールしました。VS CodeやTera Termの黒いターミナル画面を見ていると、昔PCからモデムに対してATコマンドを送ったときのことを思い出して懐かしい感じです。

これでPythonによるシリアル通信の実験準備は完了です。ブログ記事に載っていたサンプルプログラムを動かし、VS CodeとTera Termの間でメッセージの送受信ができることを確認しました。

(送信用サンプルプログラム)

これを実行するとTera Termのターミナル画面には「This is a COM test message.」と表示されました。

(受信用サンプルプログラム)

初めにVS Codeでこのプログラムを実行すると、0.1秒毎にデータを受信するループに入って受信待ちになり、Tera Termのターミナル画面から何か文字を入力するとその文字がVS Codeのターミナル画面に順次表示されます。そしてEnterを押すとプログラムは終了しました。

この様に少しずつではありますが、実際にプログラムを動かして結果を確認していくと仕組みが理解できて楽しいです。

次回は・・・実際にUSB経由で外部デバイスを制御してみたいと思います。

bookmark_border[343] Phython

SD330の自動チューニングの実現に向けて頭の中では妄想が続いていますが、まずはリグやリレーをPCから制御するためのソフトウェアプログラミングの知識が必要になるため、試しにPhython(パイソン)を学習することにしました。

なぜこの言語を選んだかというと、たまたまCQ誌9月号に他機種向けではありますがコントロールソフトの記事が載っていてそこで使われている言語がPhythonであったこと、ネット検索をするとBASICの様にコマンドが分かりやすくインタープリタで動くため検証が楽そうなこと、YouTubeに無料の学習教材が揃っていること等の理由によります。

手始めにYouTubeのコンテンツを参考に、プログラミングの開発環境をインストールしてみました。

①コマンドプロンプトで「Python」と入力すると自動でPythonのダウンロードページに飛ぶので、そこからver.3.9をダウンロードしインストール。インストールした後、再度コマンドプロンプトに「Python」と入力するとコマンド待ちのプロンプトが表示されるので、試しに1+1と入力すると2が表示され、インタープリタが動作していること確認

②プログラムを書くためのエディタ「Visual Studio Code(VS Code)」をインストール。日本語設定し、Python用拡張機能もインストール

③Pythonの各種プログラムライブラリの「anaconda」をインストール

一応環境が整ったところでVS Codeを立ち上げ「print」コマンドを使って文字を表示させる初歩的なプログラムを動かし、正常に表示することを確認しました。

40年前に遊んだBASICの感じで懐かしいです。I/O誌に載っていたプログラムを1行ずつキーボードで打ち込んで動かしていたことを思い出しました。今後しばらくはPCの中に閉じて色々なコマンドや関数を試してみようと思います。

リグやリレーの制御にたどり着くまでには相当時間がかかりそうですが、FT8の設定と同様、色々と調べながら試行錯誤が楽しめそうです。

bookmark_border[339] SD330オートチューニング化?

少し前に「SD330のチューニングが面倒なので手抜きができたら良いな」ということを書きましたが、少しだけ検討を始めました。

以前はチューニングはそれほど面倒とは思っていませんでしたが、ATAS-120Aを使い始めてその便利さを知ることになり、とたんにSD330が不便に思えるようになったということです。

なるべく費用を掛けずにPCとリレーを使ってアンテナを制御できないかと考えています。リグとPCの間はCATコマンドを使い、周波数情報やSWR情報をリグから得て、それを元にPCがリレー制御するという方法です。なるべくTX ONはしたくないのでうまくNanoVNAが使えないかとも思いましたが、リグ周波数との連動がうまく行かなそうなことと、そもそもNanoVNAからどのようにデータを取ればよいかわからないため、次のように考えました。

① PC(JTDX)からリグに周波数指定(既存部分)
② リグからPCに周波数(変更)情報通知
③ PCでアンテナの伸縮方向と時間(所定時間)を計算
④ ③に従いPCがリレーON
⑤ ③の所定時間経過後、PCからリグに対して最低出力での送信を指示
⑥ リグからPCにSWR情報送出
⑦ 所定のSWR以下になったところでPCがリレーOFF

なお、元の周波数でチューニングが取れていない場合は③の計算自体できないため、一旦、アンテナを一杯に伸ばして(または縮ませて)それを基準点として伸縮時間を計算することになります。

空回りさせて良いのが最長点か最短点かは確認必要ですね。とは言え、マニュアルでチューニングしているときはそこはあまり気にしていないので、一杯まで行くとモータへの通電が自動で止まるのかも知れません。

また、最低出力であれSWRが高い状態でリグをTX ONできるのかどうかもわかりません。(ATAS-120Aではできていますね。)

それから、PC/リグ間、PC/リレー間のCOMポートをどうやって増やすか、PC/リグ間のCATコマンドはどうやってやり取りするか、PCから制御可能な適当なリレーがあるか、そもそもソフトはどの様に作れば良いか等、一から勉強すべきことが多過ぎて実現可能性は怪しいですが・・・

昔PCからモデムを制御するためATコマンドを出すのにPCの「ターミナルモード」というものを使った記憶があるので、手始めに「ターミナルモード」をネット検索したら「D-STAR」「IC-705」が出てきました。

先は長そうです。

bookmark_border[338] ATAS-120A DX実績

ATAS-120Aを使い始めて1ヶ月になるため、このアンテナでのFT8 DX交信実績を纏めてみました。なお、後半は天気の影響で運用の機会が無かったため、実質半月程度の実績となります。

建物の影響か欧州方面は全くダメですが、北米や中南米は好調です。特にこれまでQSOできていなかった米国東地区やカリブもカバーできています。更に、アフリカ大陸もほんの一部ですがつながりました。

このアンテナは小型ながら、伝搬コンディションにも助けられて期待以上の活躍をしてくれています。