VS-RC003をシリアルポートで制御する
VS-RC003をシリアルポートで制御する
いろいろ使えそうな気がして、KUMACOにも使っている、Vstone社のVS-RC003をPCから制御してみようと思い、メモリマップをシリアル通信で読み書きできるようにしてみました。
(ちなみに本家には、VS-RC003SDKというものがあるのは知ってます。)
シリアルポート(UART)は、VS-RC003のCN6ポートに接続します。
接続のピンアサインやシリアル通信の手順などは、Vstone社にマニュアルがあります。
こちらを元に接続します。
ちなみに、もちろん純正のシリアル変換アダプタを使うのが王道です。
うちには、たまたまベステクのZigBee用のアダプタが余っていたので流用しました。
レベル変換にFTDIのチップ搭載のものを使うときは、Windowsで、シリアルの待ち時間が標準で16msecに設定されているので、1msecに変更することをお忘れなく。(下図)
いろいろ試行錯誤しながら、任意のメモリマップを書き換え出来るようになりました。
- データが符号付2バイトで、通信に使われるバイトオーダーがビッグエンディアン
- 生データではなくアスキーでやりとり(しかもwindows改行で区切り)
- (愚痴)ことあるごとに(マイナス値のとき)、windowsが32bitにキャストしようとしてくれる
というあたりで若干ハマリましたが、これはもともとターミナルソフトで使う前提で作られた仕様なんでしょうね。
成果物は、GitHubにプログラム上げておきます。
そのままVC++2017でコンパイルすると、下記のような感じになります。
この後の展開としては、ロボットに指示を出すサーバーアプリケーションを作って、アプリと連携してインターフェースの一部としてロボットを活躍させるとか、ROSに繋げるとか、いろいろありかなーと思います。
Twitterのモーメントも作ってみました↓
VS-RC003をシリアルポートで制御する@GitHubにソース上げました
コメントを残す