Arduinoで地磁気センサーを扱う

標準

今回はArduinoで地磁気センサーを扱っていきます。
使用した地磁気センサーは「HMC5883L」です。三軸測定が可能で、分解能は1~2°という精度です。遊びで使う分には十分ですね。
また、センサーとの接続はI2Cです。

回路

今回使うセンサーは8本足ですが、通常時に実際使う端子は4本のみです。
Vddには3.3[V]電源、SDA、SCLにはそれぞれ対応するもの、GNDにはGNDを接続するのみです。こちらも単純な回路ですね。

ライブラリ

今回も、色々と扱いが難しいので、これを簡単にするためのユーザー製作のライブラリをインクルードします。
まず、下記GitHubプロジェクトから.zipでプロジェクトごとダウンロードします。

GcraudNano/GC5883

その後、ダウンロードした.zipファイルを解凍し、中にあるsample.cppを除去し、再び圧縮します。この工程を飛ばすと、sample.cppもロードされ、エラーが発生しますので気をつけてください。
この再圧縮した.zipを下記の図のようにArduinoに導入します。

ライブラリのロード

以上でライブラリの導入終了です。

スケッチ

上記ライブラリを使うことで非常に簡単にスケッチを書けます。以下がそのスケッチです。

#include <GC5883.h>
#include <Wire.h>

GC5883 com;

void setup() {
  Serial.begin(9600);
  com.init();
}

void loop() {
  double deg = com;
  Serial.println(deg);
  delay(100);
}

考察

上記スケッチで動作させると、シリアルプロッタからこんな感じのグラフが取得できます。

地磁気センサー

値が最大値から最小値まで飛んでいるのは、出力される値が180°→-180°まで飛んでいるわけで、つまりは真南を通り越したからです。
ブレッドボードをクルクル回すとちゃんと地磁気センサーが動作していることが分かります。
本来は3軸なので他の値も取得できそうな感じがしますが、今回はこのくらいにしておきます。

投稿者プロフィール

yoshipc

コンピューター関連を得意としています。PHPが専門です(尚、技量はお察し)。このブログとMastodonのインスタンスを運営・管理しています。よろしくお願いいたします。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です