I2Cジャイロ、加速度、地磁気、気圧センサー用ライブラリ

2015/11/22更新:ライブラリデバッグ、AHRS拡張例動画追加。Processingプログラム更新。

I2Cインターフェースのセンサー

  • ジャイロセンサー[ST L3G4200D]
  • 加速度センサー[Analog Devices ADXL345]
  • コンパス[Honeywell HMC5883L]
  • 気圧センサー[BOSCH BMP085]

をひとまとめにした海外で売っている10軸センサーキットGY-80のためのライブラリです。

GY-80でなくても、上記センサーに合致していてI2Cインターフェースであれば、それぞれを単品としても使用可能です。

たとえば秋月の「BMP085使用気圧センサモジュール(I2Cインタフェース)」とか

「HMC5883L コンパスモジュール(3軸地磁気センサ)」とかもこのライブラリで使用可能です。

 

ちなみにGY-80はaitendoで名前を変えて「マルチ機能センサー [ATD-M4S]」として売られています。

使い方

それぞれのセンサーの値はインスタンスの中の構造体で管理し、get~~というメソッドで値を更新していくような内容になっています。

実際に使用する時はget~~で値を更新してから、それぞれの構造体の値を見にいくことで値を取得可能です。

詳細はサンプルの「gr_sketch.cpp」や、「使いかたのようなもの.txt」、ソースファイルをご確認ください。

(あまり初心者に配慮できておらず申し訳ありません。わかる人に翻訳してもらってからご使用ください。)

Processingで値をグラフ化した例

※このライブラリに付属しているgr-sketch.cppやsketch.binでは動作しません。別のものに差し替える必要があります。

:   

Processingのプログラムをexe化したもの(Windows限定)と、動作サンプルのスケッチについては

下記にありますので、興味が湧いたら見てみてください。

https://drive.google.com/open?id=0B3sohk99YZtucXVyZ1dqTzN0OFU

:

さらに拡張してAHRSを実装した例

センサーから読み取った値から、Roll, Pitch, Yawの傾きを算出しています。

ジンバルや自動平衡システムに使用されているアレと同じです。

ライセンス

特になし

不具合?

  • 気圧センサで取得する気温が時間経過でグングン上昇する
  • 気圧センサの気温と、ジャイロセンサの気温が2度ほど異なる
  • ジャイロセンサの気温がどこの気温なのか不明(指で温めると温度が下がる謎仕様)

その他

このプログラムはGR-SAKURAでしかテストできていません。
インターフェースの仕様上、KURUMIやKAEDEでも動作するはずですが、保証はできかねます。

更新履歴

2015/11/18:
・加速度の補正が常に0になる問題を修正
・加速度の初期化時の自動補正を削除
・setAcceleroOffsetAuto(bool targetX, bool targetY, bool targetZ, char sample_n)を追加
2015/11/19:
・補正値を微調整
・getRaw6(short &gx, short &gy, short &gz, short &ax, short &ay, short &az)を追加
・getRaw9(short &gx, short &gy, short &gz, short &ax, short &ay, short &az, short &mx, short &my, short &mz)を追加
・コンパスの出力値をmGa(ミリガウス)に変更
2015/11/22:
・多数の不具合を修正
・コンパスの出力値をGa(ガウス)に変更

Anonymous
  • サンプルへの追加の件、とくに問題ありません。

    ただし何分個人で作成したものなので・・・。ライブラリそのものに不具合が眠っている可能性がある点、ご留意ください。

  • おお、ありがたいですね。ライセンスなしとのことですが、IDE for GRとかにサンプル追加してもよいでしょうか?

    よろしければこちらでも部品調達して動作確認した後に追加したいと思います。