3軸加速度センサ on Japanino/Arduino

「うわぁ…いまどき?」と思われるかもしれませんが、Japaninoが以前からウチにあった&地震関連でなんかできないかなーと思ったので、ADXL335という三軸加速度センサスイッチサイエンスのサイトで買ってきていじって遊んでいます。

で、この加速度センサのチップは穴があいてるだけで、ジャンパピンがうまくささるようにはなっていません。そこで、10年ぶり?くらいに半田ゴテを出してきて、ジャンパピンごと穴にハンダ付けしてしまうという暴挙に出た挙句、動作を確かめるという目的でVCCとGNDに発光ダイオードを挿して音も熱もなく焼き切るという失態を犯したものの、まあなんとか動いたので報告です。

Macはちょいとやめた方がよい

実際に開発をしたスイッチサイエンスの中の人もご自身で書かれているように、Mac版のドライバはイマイチです。それなりに "/dev/tty.hogehoge is missing" はFAQのはずですが、ネット上にタイミング勝負のアップロードのノウハウが乗っていたり、「ブートしたらドライバが消えていた…何が起こっ(ry」的な英語サイトがあったりしました。で、案の定ぼくのドライバも

/dev/tty.SLAB_USBtoUARL の消失

うーん。というわけで、Macでの利用は諦めて、実際の運用環境に近くなるであろうUbuntuでやってみることにしました。

Linuxだと簡単すぎて身長が5cm伸びたよ!

まあこの通りやったら簡単でした。

  • jre が入ってることを確認する。java -versionでHotSpotとか出てたら正解です。(sun-java 推薦
  • gcc-avr, avr-libc, avr-evtd を入れる*1
  • http://arduino.cc/en/Main/Software ここから、Linux 用の Arduino IDE をダウンロードしてくる
  • 入れる
  • つなぐ
    • Board に "Arduino Pro or Pro Mini (3.3V,8MHz)w/ATmega168" を選択
  • COM ポートを選ぶ(だいたい /dev/ttyUSB0 とかそんなん)
  • 書き込む!

とやったら簡単にボードに入ります。で、いちいちスケッチ書いてアップデート…てのも大変なので、プロトタイプ開発環境を用意します。シリアルコンソール経由で簡単なRPCをしてくれるスケッチで、それをJapaninoに突っ込みます。で、とりあえずのサンプルスクリプトを実行してみます。

from arduino import Arduino
import time
a = Ardiono('/dev/ttyUSB0')
while(True):
  x = a.analogRead(0)
  y = a.analogRead(1)
  z = a.analogRead(2)
  print "(%s, %s, %s)" % (x,y,z)
  time.sleep(1)

や、こーするとホントに読めてしまうのね。揺らすと数値がかわる。Z軸だけ数字が大きいのは…きっと重力加速度だから。簡単過ぎてびっくりしました。仕様書があるから単位を調べておかないといけません。ちょっとこれはまた後日。

実際の商品ページはこちら:ADXL335, ジャンパピン, 発光ダイオード

積分して変位に計算しなおさないといけないのか。この辺りもちょっと書かないといけないけど、…といいたところで

げ つ よ う び が  あ ら わ れ た !

というわけで、またこんど。
これを見えるようにするために、いまJavaScript書いてます。相変わらずわっけわからん言語やで…。

footnote

amazon.comにはあるみたいですね。
軸が足りない場合はこちら => asin:B004G558AM

*1:avr-evtdが本当に必要かどうかはしらない