Arduinoで地磁気センサーを扱う
今回はArduinoで地磁気センサーを扱っていきます。
使用した地磁気センサーは「HMC5883L」です。三軸測定が可能で、分解能は1~2°という精度です。遊びで使う分には十分ですね。
また、センサーとの接続はI2Cです。
回路
今回使うセンサーは8本足ですが、通常時に実際使う端子は4本のみです。
Vddには3.3[V]電源、SDA、SCLにはそれぞれ対応するもの、GNDにはGNDを接続するのみです。こちらも単純な回路ですね。
ライブラリ
今回も、色々と扱いが難しいので、これを簡単にするためのユーザー製作のライブラリをインクルードします。
まず、下記GitHubプロジェクトから.zipでプロジェクトごとダウンロードします。
その後、ダウンロードした.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軸なので他の値も取得できそうな感じがしますが、今回はこのくらいにしておきます。
投稿者プロフィール
最新の投稿
- 2018.09.01AMD動画エンコードでGPUを活用する
- 2018.03.26phpツイートIDからsnowflakeを用いて投稿時刻のミリ秒を算出
- 2018.02.18phpphpMyAdminのインストール方法(Ubuntu)
- 2018.01.07未分類新聞を折らずに郵送する方法
最近のコメント