6軸センサーをMax/MSPから使う(前編)

まとまった時間がとれたので、去年秋月電子で買ったTDS01V評価キットをようやくMax/MSPと通信させることができました。このTDS01Vは加速度3軸+地磁気3軸+気圧の合計7つが最高10Hzで計測できるという7-in-1のセンサーキットです。今回Max/MSPから可能になったのは、評価キットにUSB経由でメッセージを送受信する部分。システムの初期化、計測条件設定、センサ情報項目設定、計測開始、という順にコマンドを送ってやれば、センサ情報要求をするたびに最新のセンサ情報を得ることができます。

ずっとハマっていたのはシリアル通信のメッセージの形式のこと。添付されていた『ソフトウェア開発者ガイド』にはメッセージをバイナリで送るかのような記述がされていました。マニュアルに間違いはないのでしょうが、送信コマンドが「0Fh」などの16進数で表記されていたので、センサーに対して0x0F(つまり整数15)を送ったりしていたのですが、センサーからの返事がなくて困っていたのです。いろいろと試してみましたがダメで、最後に一か八かで「0F」に対応するASCII番号に加え改行(CR、LF)、すなわち「48, 70, 13, 10」を送信すると一発OKだったのでした。ASCII番号+改行を送らないといけないのは、センサ・キットの仕様なのかMax/MSPのserialオブジェクトの仕様なのか分かりませんが、とりあえず通信ができたので満足です。パソコン通信時代に、モデム制御のためのATコマンドをターミナルから打ち込んでいたのを思い出しました。

シリアル通信をするプログラム/パッチを書くのは初めてだったので、分からないことだらけ。Max/MSPも使い慣れていないので、CやJavaなら一瞬の文字列処理をどうすればいいのかもまだ模索中です。JavaScriptで書いちゃうという手もありますが、教育目的に使えればという思いもあるので、できればMaxオブジェクトだけでやってみたいのです。

中編「受信データの解読」、後編「音と連動させる」と続けて行きたいです。あとはUSB接続ではなくBluetoothにしたかったり。いつになることやら。

[2009-10-29] 後編もどうぞ。