高松オリーブハムクラブメンバーが、リモートでCW送信する装置をキット化して頒布する準備を進めています。
私も試して見ようとしたけど、Arduino UNOとLANシールドがそれぞれ2セット必要で少々お値段が張ります。私自身は実際にリモート運用をすることは無いので、あまり費用をかけずに試すことにした。
ついでと言ってはなんだけど、自作のログソフト(WEBブラウザベース)から、自動CQを出したりレポートを送ったりできるようにしたいこともあった。
〜〜〜
今回はサーバ側と言うか無線機側の記事です。
パソコンでCW送信を行う方法については、コンテストロギングソフトのCTESTWINで何度も経験済み。
高価なUSB/IFを使わない方法がCTESTWINのマニュアルに掲載されていて、以前から基板を作って運用の実績がある。
USBでRS-232Cを使うケーブルにRS-232Cコネクタと少々の半導体部品で作れる。
https://ctestwin.echo.jp/CTWHELP/CW.html
パソコンの方はRS-232C(COMポート)を制御するだけでできる。
これまではPHPを使ってコントロールするソフトを作ってきた。しかし、今回のCWのOn/Offを制御するためにはDTR端子をOn/Off必要があるが、これまでの方法ではこれができなかった。
PHPで制御するには、COMポートをopenする時に、DTRのOn/Offを指定する必要があり、切り替えるのにいちいちOpen/Closeしていてはレスポンスが悪い。
C言語で組めば確実なのだが、ちょっと面倒くさいのでPythonで試していた。pyserial というライブラリを使うことで思い通りの動作をさせることができた。
Pythonは仕事で必要になっているし、ちょうど勉強中だったこともあり渡りに船のような感じになった。
まずは「CQ CQ」を出せるか挑戦。適度にsleepでウエイトを入れればそれっぽい音が出た。良い感じ。
しかし、ちゃんとした符号を出そうと思ったら、短点1に対して長点3で出したいし、速度設定はWPMで指定したい。
ググると良い具合の説明があった。
https://a1club.org/info/speed.pdf
さすがA1Clubさんです。
この情報を参考にして長点・短点・文字間隔の関数を作り、とりあえず並べたら聞き慣れた符号で「CQ CQ」が流れた。感動です!
毎夜、少しずつ進めていきました。
翌日は、アルファベットと長短点の配列作り。'A':'.-','B':'-...'等を作って、- なら長点、.なら短点をならすようにしました。
その上で「CQ CQ DE JG5JXW JG5JXW JCC 3601 PSE K」を送信できるように調整。
ほぼほぼできたと思ったら、無線機から「DE E JG5***」と、誰かが呼んでくる!
誰も聞いてないだとろうと50MHzにしていたのに、応答があって焦ってしまった。
この日は「電信電話コンテスト」の日だったこともあり、各バンドをパトロールされていたようです。翌日からはブレークインをオフにしてテストするようにしました。
次の日はUDPのサーバ機能、また次の日はビット列を展開してCW送信する機能を組み込み。ひとまず完成となった。
ブラウザから直接JavascriptでUDP送信するのは、セキュリティの問題等でハードルが高い。そこで、ローカルホストで動かしているPHPファイルをUDPクライアントとして動作させ、Pythonのサーバソフトへ信号を送ってCWのキーイングを出来るようにした。
これもひとまず完成したので、後は自作ロギングソフトのI/Fと連動させるだけ。
これも急がないから後日ゆっくり対応しようと思う。
次の記事でリモート側の紹介をします。