Monthly FB NEWS 月刊FBニュース 月刊FBニュースはアマチュア無線の電子WEBマガジン。ベテランから入門まで、楽しく役立つ情報が満載です。

テクニカルコーナー

My Project/第11回 【1度やってみたかった!】 CI-Vでハンディー機をリモート制御

JP3DOI 正木潤一

CI-VとはCommunication Interface-Vの略で、無線機や受信機をパソコンから操作するためのアイコム独自のプロトコルです。パソコンから『コマンド』を送信することで、無線機の設定を変えたり、状態を読み込んだりすることができます。1つのコマンドは単一の動作しか制御できませんが、組み合わせることで無線機を完全に遠隔制御することができます。

今回、CI-Vコマンドを無線機に送って動作を確認できるプログラムを作成しました。これを使ってID-51とIC-R6を制御して、CI-Vとはどのようなものかを紹介します。

パソコンとの接続:
CI-V通信用にはアイコムの製品で『CT-17』という通信ターミナルがありますが、市販のRS232-USB変換ケーブル(*)が別途必要です。USBに対応したアイコム製のクローニングケーブル『OPC-478UC』でもパソコンと通信できるため無線機のコントロールはできますが、スピーカー端子が塞がってしまうため受信音声が聞こえなくなります。
*最近のパソコンにはRS-232ポートが付いていないので、CT-17を直接パソコンに接続することができません。

そこで今回は、シリアル-USB変換IC『FT232RL』を使って、パソコンと無線機をUSBで直接繋ぎパソコンで無線機をコントロールできる状態にすると共に、音声ラインを取り出して受信音が聞けるようにします。電源はパソコンから供給されるため、別途用意する必要はありません。


『FT232RL』を使ったCI-V接続の概要

※ID-31やID-51と接続する場合には中継ケーブルOPC-2144が必要です。

『FT232RL』は、端子間がとても狭いSSOPというICなので、実装するには変換基板を使います。2箇所をショートさせ、無線機との通信ラインとUSBケーブルを接続します。


変換基板と配線


実装してケースに収めたところ

<参考:CI-V通信はシンプレックス方式>
CI-Vのインターフェイスは、上図のように1本の通信ラインを送受信で共有するシンプレックス方式です。『FT232RL』のデータ送信バッファと受信バッファは独立して動作しているため、パソコンから送信したデータは直ちに受信バッファに取り込まれてしまいます。つまり、送信したデータそのものが受信データとして入力されてしまいます。ちょうど、無線機は送信中に受信回路を停止させているように、この装置もコマンド送信中はデータを受信しないようにする必要があります。これは回路を追加することで回避できますが、実装部品が増えるので、今回はプログラム上で対策を施します。

CI-Vコマンドのフォーマット:
『コマンド』とは、いわば無線機に渡す“連絡書”です。宛先や依頼内容を書式(フォーマット)に則って送ると、無線機の設定を変えたり、設定を読み込んだりすることができます。1つのコマンドには1つの動作が割り当てられています。各コマンドは機種ごとに異なるので、それぞれの取扱説明書を参照します。


コマンドは連絡書のようなもの


CI-Vの基本フォーマット

① プリアンブル FE FE
送られてくる信号がCI-Vコマンドであることを表します。「今からコマンドを送ります」という意味です。

② コマンド送出先 (無線機のアドレス)
コマンドの送り先である無線機を表します。複数の無線機や受信機をパソコンと接続している場合に、どの機器に対して向けられたコマンドかが分かるようにするためです。本体側で設定されているアドレスと一致させます。機種ごとに異なるアドレスがデフォルトとして設定されていますが、本体のセットモード内で変更できます。(デフォルトアドレスの例:ID-51=“86” IC-R6=“7E”)

③ コマンド送り元 (PCのアドレス)
コマンドの送り元、つまりパソコンのアドレスを表します。無線機からパソコンへ送る応答のあて先ですが、複数のパソコンを接続することはないので、気にする必要はありません。今回の例では、“0”としています。

④ コマンドおよびサブコマンド
無線機に命令する動作を表します。コマンドによっては、細かい設定を『サブコマンド』として指定します。

⑤ データ
周波数や音量など、無線機に設定する数値を指定します。無線機からの応答の場合は、この値を読み取ります。

⑥ ポストアンブル FD
1回の通信の終わりを表します。無線機がこれを確認したら、コマンド通りに内部を制御します。

実際にコマンドを送ってみる:
ID-51*またはIC-R6を上記のケーブルを使って接続し、実際にパソコンから操作してみます。ハンディー機本体のセットモード内で、ボーレートを19200(bps)に設定してください。パソコンからハンディー機にコマンドを送るサンプルプログラムは、下記のリンクからダウンロードしてください。ソースコードも公開しているので、プログラムを改造することもできます。設定と操作方法、プログラム内容の解説については動画を参照してください。
*ここで紹介されているコマンドは、ID-31も同じです。

プログラムダウンロードリンク:
https://drive.google.com/drive/folders/0B_FIFCYEaSemS1U4TGhLWXlpRmc?usp=sharing


“CI-V実験プログラム”(改良により画面は変わることがあります)
(ID-51(アドレス=”86”)をコントロールする画面例)

サンプルプログラムを使えば、『コマンド』『サブコマンド』『データ』を入力するだけでCI-Vの動作を確認することができます。それでは、取扱説明書にあるコマンド表を見ながら、プログラムを使って実際に無線機を遠隔操作してみます。
※IC-R6には電源ON/OFFコマンドが無いため、ウインドウ上の[電源ON]・[電源OFF]ボタンは動作しません。

例1:運用モードの切り替え
ID-51の運用モードを”FM-N”に切り替えてみます。
取扱説明書によると、モードの切り替えコマンドは”06”とあります。


モードを設定するコマンドは”06” (サブコマンドは不要)
(ID-51取扱説明書より)

FM-Nモードを指定するデータは”05 02”とあります。


FMモードは“05”でナローは“02”
(ID-51取扱説明書より)

“06 05 02”とコマンドとデータを入力して、「コマンドを送出」をクリックします。
無線本体の表示がFM-Nに変わります。

IC-R6の場合も同じです。

例2:音量の設定
音量設定コマンドは”14”、サブコマンドが“01”とあります。


音量を設定するコマンドは”14”、サブコマンドが“01”
(ID-51取扱説明書より)

音量レベルの設定値として“0~255”を下の表にしたがって4桁の数字を2桁ずつスペースで区切って入力します。設定データの“00 00”が音量ゼロ(ミュート)、“02 55”が音量最大となります。


音量データは“0~255”(00 00~02 55)の間で設定する
(ID-51取扱説明書より)

“14 01 00 42”とコマンドとデータを入力して、「コマンドを送出」をクリックします。音量レベルが表中の“VOL6”に設定されます。ちなみに、音量設定コマンドはID-51とIC-R6で共通です。

例3:周波数の設定
周波数設定コマンドは”05”です。


周波数を設定するコマンドは”05” (サブコマンドは不要)
(ID-51取扱説明書より)

設定データとして“0~255”(00 00~02 55)を入力します。周波数の各桁に相当する数値を入力しますが、フォーマット上の並び順が画面上の表示と異なるため、ややこしくなっています。


1Hz~1000MHzの周波数を10桁で設定する
(ID-51取扱説明書より)


周波数とデータの対応状況

UHFのFMのコールチャンネル“433.000MHz”に設定するには、コマンド“05”に続いて10桁のデータ“00 00 00 33 04”を入力して、「コマンドを送出」をクリックします。周波数が“433.000”に設定されます。周波数設定コマンドもID-51とIC-R6で共通です。

以上は『設定コマンド』で、運用周波数やモードといった本体の設定を変更するためのものです。
一方で、Sメーターレベルなど無線機の状態を表す値をPCに送らせる『データ要求コマンド』があります。コマンドを送出すると、要求したデータが応答として送られてきます。

例4:Sメーターレベルの取得
IC-R6からSメーターレベルを取得してみます。


Sメーターレベルを取得するコマンドは”15”、サブコマンドが“02”
(IC-R6取扱説明書より)

“15 02”と入力して、「コマンドを送出」をクリックします。プログラムの受信応答データ欄に“FE FE 086 152160 FD”と表示されました。

“152”が送出したコマンドで、それに対する応答が“160”という意味です。これがSメーターレベルです。


Sメーターレベル“160”はフルスケール
(IC-R6取扱説明書より)

ちなみに、ID-51もSメーターレベルを取得するコマンドは同じです。ただし、ID-51のほうはレベルの上限が255となっています。

応用例:
CI-Vの動作が確認できましたが、コマンドを1つ1つキーボードから入力するのは実用的ではありません。実は、サンプルのプログラムのウインドウを右に延ばすと、簡単な操作パネルが現れます。プログラム画面上にボタンや入力枠をこのように作って、「ボタンをクリックすると割り当てられたコマンドが送出される」仕組みをプログラムで作ると、ハンディー機はパソコン制御マシンに変身します。


コマンドをボタンに割り当てた『操作パネル』(右側)の例

<参考:パソコンソフトの自作>
CI-Vに限らず、パソコンとハードウエアを組み合わせることができれば、趣味としての自作の世界が格段に広がります。今回プログラムの作成に使用したソフトは『Visual Studio』で、マイクロソフト社から無料で配布されています。工作と違って部品が要らないですから、部品の入手性やコストとは関係なく、工夫次第でどんなプログラムでも作ることができます。なお、公開しているソースコードには、処理についての説明を適宜入れています。これを期にプログラミングを始めてみてはいかがでしょうか。

注意:
・無線機本体とPCの『ボーレート』と『アドレス』を合わせないとコマンドが認識されません。
・パソコンからのノイズが受信に差し支える場合は、USBケーブルにクランプ式のフェライトコアを取り付けてください。
・本体側の『オートパワーOFF機能』は解除しておきます。CI-Vコマンドによる制御は本体操作とは認識されないため、電源が切れてしまいます。
・受信回路を周期的に停止させる『パワーセーブ機能』はOFFにしておいたほうがよさそうです。
・ID-51のラジオ受信機能は制御できません。
・「スキャンを開始する」というコマンドはどの機種にも用意されていないようです。そのため、スキャン動作をさせるためには、周波数設定コマンドを順に設定していくことになります。

注意しなくてはならないのが、運用周波数を連続的に切り替えようとコマンドを次から次へと送っても、本体側での切り替えが追い付かないことです。これは、受信周波数を切り替えるには、局部発振信号が安定するまでの時間(ロックアップ・タイム)が必要なためです。周波数設定コマンドを送出してから300msecほどを置いてから、次の周波数設定コマンドを送出するようにプログラムします。


スキャンのフローチャート

<参考:CI-Vの信号波形>
取扱説明書のコマンド一覧表に記載されている数値は16進数です。無線機に送出する際には2進数に変換します。例えば、プリアンブルのFE(10進数で254) は、送出される段階で8ビットの2進数“11111110”となります。下位ビットから送出されるため、“01111111”というビットストリームが無線機に送られます。


オシロスコープで観測したCI-V信号波形
(下位ビットから順に送出されている)

最後に:
固定機ならば純正のリモートコントロールソフトが用意されていますし、ハンディー機の場合は、最初から手に持って使うものなのでパソコンから制御するメリットがあまり無いように思います。しかし、CI-Vの醍醐味は、自分でコマンドを組み合わせて、自分だけの制御プログラムを作ることだと思います。どの機種の取扱説明書でも、CI-Vの情報は最後のほうに掲載されています。あまり注目されない情報かもしれませんが、無線機の楽しみかたを広げられる可能性を持っていると思います。また、今回紹介したケーブルは、そのままクローニングソフトにも使用できますので、サンプルプログラムをダウンロードしてCI-Vコントロールを試してみてはいかがでしょうか?

部品の入手先:
・『秋月電子通商』
http://akizukidenshi.com/catalog/top.aspx
・『マルツ』
http://www.marutsu.co.jp/
・『シリコンハウス』
http://eleshop.jp/shop/

My Project バックナンバー

2017年8月号トップへ戻る

次号「月刊FBニュース2018年1月号」は 1月5日(金)と15日(月)に公開予定

サイトのご利用について

©2017 月刊FBニュース編集部 All Rights Reserved. 発行元: 月刊FBニュース編集部