秋月から届かない・・・
先日CAN解析をする手順やシステム構成について書きましたが、、、
https://qiita.com/tatsuyai713/items/3acb160ba96f1788ce97
次に書くと言っていたmROSでCANを動かすというのは、まだ出来ていません・・・
というのもmROS&CAN-BUSx2chを動かすためには以下のものが必要です。
・GR-PEACH
・CAN トランシーバー(www.amazon.co.jp/dp/B072FGVLZQ)こんなやつ
・【P-06877】Arduino用ユニバーサル基板 ガラスコンポジット
・【P-05060】XBee用2.54mmピッチ変換基板
・【C-08978】2mmピッチピンヘッダ 1×10
・【C-07142】ロープロファイルピンヘッダ (低オス)
で、下の4つは秋月から買ったのですが、秋月も忙しいようでやっと今日(8/22)発送されました。
なので、mROSの話は次回においておいて、今回はRoboMaster S1のCAN解析について書きたいと思います。
海外にRoboMater S1のCAN解析している人がいるらしいよ?
会社で個人でRoboMaster S1を持っている方から、「CAN解析してる人おるで」と言われて、リンクを送っていただきました。
https://forum.dji.com/forum.php?mod=viewthread&tid=195399
Development Boardがなんちゃらとか書かれていて、リンクもありますが、これはおそらく本物のRoboMaster向けの基板なのでここでは触れません。
あとこんなのも貼ってありました。
| No,systime,time,CAN channel,receive/send,ID ,frame type,frame,length,data |
| 00000,="22:40:09.538",452.9922,ch1,接收,0x0201,数据帧,标准帧,0x06,x| A0 48 08 01 5C DB |
| 00001,="22:40:09.538",512.3520,ch1,接收,0x0202,数据帧,标准帧,0x05,x| 00 00 00 D6 7C |
| 00002,="22:40:09.538",512.3531,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 55 16 04 FC 04 09 A2 9C |
| 00003,="22:40:09.538",512.3532,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 00 3F 76 35 FF 00 00 87 |
| 00004,="22:40:09.538",512.3533,ch1,接收,0x0203,数据帧,标准帧,0x06,x| 00 F2 FF 02 0B CE |
| 00005,="22:40:09.538",512.3534,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 55 11 04 92 04 03 D6 3A |
| 00006,="22:40:09.538",512.3535,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 00 3F 42 87 00 0D F8 74 |
| 00007,="22:40:09.538",512.3536,ch1,接收,0x0203,数据帧,标准帧,0x01,x| 2A |
| 00008,="22:40:09.538",512.3537,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 55 0F 04 A2 04 C3 D8 3A |
| 00009,="22:40:09.538",512.3538,ch1,接收,0x0203,数据帧,标准帧,0x07,x| 00 3F 2E 80 00 18 BA |
| 00010,="22:40:09.538",512.3539,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 55 71 04 C8 04 1D 6D A8 |
| 00011,="22:40:09.538",512.3540,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 00 00 F0 04 AF 8D CE C2 |
| 00012,="22:40:09.538",512.3542,ch1,接收,0x0203,数据帧,标准帧,0x08,x| 64 80 D4 F2 62 87 55 1D |
ああああーーーーーー、これはああああああ・・・・
CAN IDはこれだけあったみたいですが、フォーラムの人は解析は困難だと言っています。
0x0201,0x0202,0x0203,0x0204,0x0211,0x0212,0x0213,0x0214,0x0215,0x0216
では、メッセージを見ていきましょう。
通常は前回書いたように、CANのIDごとに周期的に一定の間隔で同じバイト長でメッセージが送られてきます。
が、が、が、DJIはCANの使い方を知らないようで、なんと同じIDでいろいろ連続で送信しています。これは通常まずいですが、とりあえず解析を続けましょう。
よくみるとそうです。これはCAN IDを決めてただシリアル通信のように流しているだけのようです(CAN使う意味あるんかいな???)
さらによーく見るとわかりますがどうやら繰り返しパターンがあります。先頭の0x55がそれです。
気づかれた方も多いと思いますが、0x55は01010101です。詳しい人は知っておられると思いますが。0xAAや0x55はコマンドメッセージのヘッダによく使われます。なので、0x55がヘッダとみて間違いないでしょう。
続いて、次のバイトですが、0x11だったり、0x0Fだったりします。ここである規則性に気づきます。
そうです!小さいほうがメッセージ長が短く大きい方がメッセージ長が長いです!
つまり2バイト目はメッセージ長さを表しています。
そして3バイト目は必ず0x04になっているようです
なんか行けそうな気がしてきたでしょうか?
まあでも実機ないし・・・
これ以上の解析は流石に実機がないと無理です・・・ということで今日(8/22)にポチりました。
ただヨドバシは取り寄せなので、しばらくかかるようです。さすがにその間にmROSはやっときたいですね。
あ、あと通信を乗っ取るために線をぶった切る必要があるのですが、補修用部品を手に入れる方法をご存じの方がいれば教えてください。
ではまた次回。