LSM9DS1を使おうと頑張ったよ
こんばんは。
今日は、秋月で買ったLSM9DS1使用モジュールと格闘していました。
一応前置きとして説明しておくと、LSM9DS1は9軸センサーです。
角速度、加速度、地磁気の3×3=9つの軸があって、センサーが今どの方向にどの角度で向いているのかがわかります。
Arduinoに繋いで角度の検出をしている様子です。センサーを回転させると左のようなグラフが出てきます。
それで、このモジュールの説明書に従ってサンプルを動かそうとしたものの、上手くいきませんでした。
なんとか目的の角度の検出はできるようになったので、将来同じ状況に陥った方に向けて残しておきます。
まず、モジュールの説明をざっとまとめます。
- I2Cで使えるように配線する
- テストプログラムを動かして、I2Cアドレスを取得して確認する
- ライブラリのサンプルプログラムを動かして、角度を測定する
当初2までは問題なかったものの、3がどうしても上手くいきませんでした。
setup()の中には初期化処理が上手くいかなかったらエラー文を出力するようになっていましたが、シリアルモニタには何もなし。
それでもなんとかかんとか動かせましたので、以下にまとめておきます。
1.ライブラリのバージョンを変える
説明書で推奨されているライブラリは現在2.0みたいなのですが、私は1.0にしないと初期化処理が動きませんでした。
2.I2C関係の設定をする
サンプルには無かったのですが、スイッチサイエンスで同型のセンサーモジュールのチュートリアルを見ると、どうやら設定が必要っぽい。
imu.settings.device.commInterface = IMU_MODE_I2C;
imu.settings.device.mAddress = LSM9DS1_M;
imu.settings.device.agAddress = LSM9DS1_AG;LSM9DS1 Breakout Hookup Guideより引用
setup()内にこんな感じのを足したら動きました。
LSM9DS1_MとLSM9DS1_AGは上の方で定義してあります。それぞれ地磁気と加速度&ジャイロのI2Cアドレスです。
3.シリアルモニタに表示させる(おまけ)
シリアルモニタに表示がなかった件ですが、多分これは私がArduino Leonardoを使っていたから。
こちらの記事を参考にしたのですが、Arduino Microでもなるっぽいですね。でもセンサーとは直接関係ないので、おまけにしておきます。
以上、いつかどなたかの解決の糸口となりますように。
お読みいただきありがとうございました。