TM-541リモートコントローラの制作
この記事は2012/10/27のものです。
------------------------------------------------------------------------------------------------
Translate this page:
数年前にディスプレイが壊れた Kenwood TM-541 をローカル局から頂きました。その当時はガラスをバリバリに割ったようにLCD全体が点灯し数字が認識できない状態でした。ディスプレイの生きているTM-x41シリーズを入手したらLCDを交換しようと思っていました。(現在は、数か所光りっぱなしになるセルが存在し、LCDの温度が下がると見えにくくなり、温度が上がると以下のように大体読めるようになります。)
同時にTM-x21, TM-x31, TM-x41シリーズには RC-10, RC-20 と言うリモートコントローラがあることも知りました。リモートコントローラは8ピンのマイクコネクターに挿すと使えるようになります。どこかのピンを使って無線機のマイコンと通信機能があると思われます。
RC-10 の回路図を見るとマイク端子の UP, DOWN, PTT, AF OUTを利用してマイコンとの通信が行われていることがわかります。RC-10をRIGに接続してこの辺のピンにロジックアナライザを当ててるとSPI形式に類似したシリアル形式の通信が行われているように見えます。
信号をハックするのはいろいろめんどくさそうだと思いインターネットを検索すると、N9XLC局のBLOGに到達しました。そのコメントに既にプロトコルを解析してドキュメントを作ったというURLがあります。このドキュメントにはとても詳しくプロトコルの詳細が書かれています。そこで、早速Arduinoへ実装してみました。
無線機との接続は簡単です。まず、6ピンのAF OUTをHIGH(5V)にするとRIGはリモートコントロールモードに入ります。したがって、マイコンの接続時は6ピンを常にHIGHにします。
その他 RIG と Arduino の接続は、以下の通りです。
マイク端子のピン番号 | Arduinoのポート番号 | 備考 |
2(PTT) | 2 | RIG->Arduino |
3(DOWN) | 4 | Arduino->RIG |
4(UP) | 3 | CLOCK |
6(AF OUT) | Vcc | |
8(GND) | GND |
ブレッドボードを使って適当に配線した感じでは、信号は若干ノイジーでしたので、UPとGNDの間に 0.01uF を、PTTとGNDの間に 0.001uF を入れた状態で良好に動作しています。
作成したファームウェアは RC-10/20 のプロトコルをシリアル信号に変換すると同時に、16 x 2のLCDをリモートディスプレイとして利用できるようにしました。LCD と Arduino との接続は以下の通りです。
また、シリアルからRIGにコマンドを送信することができます。シリアルターミナルを使い、Arduinoに9600bpsで接続し、Ludovic氏のドキュメントにあるコマンドを参照し16進文字列を送るとRIGを操作することができます。例えば 0A は送信、0B は受信、03 8A を続けて送ると電源OFF、03 80 を続けて送ると電源ONです。
ソースコードはGithubに公開しました Arduino のバージョンは1.0.1です。このファームは非商用の目的の範囲にておいてご自由にお使いください。お約束ですがこのファームを使用したことによって生じる一切の事柄について作者は責任を負いません。
最後に、素晴らしいハック情報を提供してくれた Ludovic氏に感謝いたします。