So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

Kato SoundBoxをArduinoで操作する。その3 [SoundBox]

 とりあえず。信号がモニタ出来るようになったので、どんな信号が出ているか確認です。
 スマイラー様からお借りしたSoundBoxには本体添付の蒸気機関車と、別売りの京急2100形がありました。まずは京急2100形で信号の確認です。
 まず、SmartControllerがスマホにつながっていないときは、SoundBoxと以下の通信をしていました。
01000001: 0100000000000001.
01000001: 0100000000000001.
01000001: 0100000000000001.
01000001: 0100000000000001.
01000001: 0100000000000001.

 そして、SmartControllerがスマホにつながると、SoundBoxと以下の初期通信をしていました。
0101010203: 010101000001.
0101010100: 010101000001.
0101010302: 010101000001.
01030002: 0103000002.
0101010504: 010101000001.
0107800B8D: 0107800187.
0101010203: 010101000001.
0101010100: 010101000001.
0101010302: 010101000001.
01030002: 0103000002.
0101010504: 010101000001.
0107800B8D: 0107800187.
01040005: 0104000104.
01010303: 0101030201.
01010404: 0101040004.
01010606: 010106204B61746F20415342204B65694B7975204A6170616E65736520436F6D6D7574657220547261696E20536F756E642056312E32200022.

そして、そのあとは、アイドルパケットの送信みたいな感じで以下のリピートが続いていました。
01050307: 0105030007.
01040005: 0104000104.
01050307: 0105030007.
01040005: 0104000104.
01050307: 0105030007.
01040005: 0104000104.
01050307: 0105030007.

これが蒸気機関車の場合は、初期通信は以下です。
0101010203: 010101000001.
0101010100: 010101000001.
0101010302: 010101000001.
01030002: 0103000002.
0101010504: 010101000001.
0107800B8D: 0107800187.
0101010203: 010101000001.
0101010100: 010101000001.
0101010302: 010101000001.
01030002: 0103000002.
0101010504: 010101000001.
0107800B8D: 0107800187.
01040005: 0104000104.
01010303: 0101030300.
01010404: 0101040004.
01010606: 010106204B61746F20415342204A6170616E65736520537465616D2044353120536F756E642056312E32200076.

 命令はその2でも書きましたが、
[LF](SmartControllerからの命令): (SoundBoxからの応答).
となっております。
 また命令の中身ですが、例えば
0107800B8D: 0107800187.
のなかで、まず、SmartControllerからの命令は、分かりやすく書くと、
01 07 80 0B 8D
ですが、最後の8Dはパリティでパリティの計算は前から順にbitのXORを取っていくやり方です。
 具体的には、
①01^07 = 06
②06^80 = 86
③86^0B = 8D なので、パリティが8D
なので、命令は[LF]の後の0107800B、でパリティが8D、最後の「:」は通信の終端文字。
戻りは01078001でパリティが87、最後の「.」は通信の終端文字。のようです。
COMのモニタで見ると、「:」とSoundBoxからの受信の間にスペース(0x20)がありますが、
これは送受信の切り替え時間のタイミングに相当するように見えます。

 さて、構造もなんとなくわかったので、次は初期化ルーチンで何が行われているかですが、マニュアルないし、わかりません。なんか、レジスタをそのまま叩いているようにも見えますし、変な命令を書いて、動かなくなったら嫌なので、そういう実験もできませんし。(自分のじゃないし。自分のでも嫌だけど。壊れたら、「すいません。普通に使ってたら突然動かなくなっちゃって・・・。」と言いながら、ホビセンに持っていけばいいんだろうか・・・。」それは嘘つきだよな。たぶん。)
 SmartContorollerはファンクションやスピード以外に、ボリューム値やStart値、Sync値をいじれるのと、毎回、0にリセットされているようにも見えるので、SoundBoxに対して、そこら辺の全ての初期化をしているんじゃないのかなあと推測します。あとはスマホから、今、何のカードが刺さっているのかわかりますが、そうすると、それっぽい情報が流れているんだろうなあと思いながら見てみたら、それっぽい部分はわかりました。
 それは、「01010606:」の部分で、SoundBoxからの返り値は京急2100形は
0101 0620 4B61 746F 2041 5342 204B 6569 4B79 7520 4A61 7061 6E65 7365 2043 6F6D 6D75 7465 7220 5472 6169 6E20 536F 756E 6420 5631 2E32 2000 22.
最初の「0101 0620」辺りは命令を復唱しているだけっぽいですが、その後のByteをAsciiコードに直すと、
Kato ASB KeiKyu Japanese Commuter Train Sound V1.2 と読めます。
ASBってなに?って思って調べたら、SoundBoxはアメリカのKatoでは ASB = analog sound boxと言っているようです。
 で、同様に蒸気機関車の同じ部分「0101 0620」を見てみると、
0101 0620 4B61 746F 2041 5342 204A 6170 616E 6573 6520 5374 6561 6D20 4435 3120 536F 756E 6420 5631 2E32 2000 76
で、
Kato ASB Japanese Steam D51 Sound V1.2 ですって。D51がベースのようです。

 あとは、見比べてなんとなくそうだろうなあと思ったのは、
京急2100形 01010303: 0101030201. →戻り値が2
蒸気機関車 01010303: 0101030300. →戻り値が3
1番ボタンの警笛が京急は2種類、蒸気機関車は3種類だったので、その値かなあと思いつつ、
ここら辺を調べるのは、やめておきます。
 次は各命令の解析をします。
 その4に続く。

コメント(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。