Skip to main content

Grove - 3軸デジタルコンパス v2.0

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

pir

Grove - 3軸デジタルコンパスは、Bosch BMM150をベースにしたデジタルコンパスセンサーです。3つの直交する軸で磁場を測定でき、出力はI2CおよびSPIインターフェースを介して読み取ることができます。3軸モバイルアプリケーションに最適です。

これはGrove - 3軸デジタルコンパスの第2世代であり、初代バージョンと比較して、すべての3軸アプリケーションの厳しい要件を完全に満たすことができ、価格は初代バージョンのほぼ半分と非常にコストパフォーマンスに優れています。

pir

特徴

  • 高解像度
  • 高い方位精度
  • 簡単に使用可能

仕様

項目
動作電圧3.3V / 5V
磁場範囲(典型値)±1300μT(x, y軸), ±2500μT(z軸)
磁場分解能0.3μT
出力角度0º ~ 360º
インターフェースI2C
動作温度-40℃ ~ +85 ℃
寸法20mm x 20mm x 15mm
I2Cアドレス0x13
note
複数のI2Cデバイスを使用したい場合は、[ソフトウェアI2C](https://wiki.seeedstudio.com/ja/Arduino_Software_I2C_user_guide/)を参照してください。
tip
Groveモジュールの詳細については、[Grove System](https://wiki.seeedstudio.com/ja/Grove_System/)を参照してください。

対応プラットフォーム

ArduinoRaspberry Pi

pir

pir

caution
上記で対応プラットフォームとして挙げられているものは、モジュールのソフトウェアまたは理論的な互換性を示しています。ほとんどの場合、Arduinoプラットフォーム用のソフトウェアライブラリまたはコード例のみを提供しています。すべての可能なMCUプラットフォーム用のソフトウェアライブラリやデモコードを提供することはできません。そのため、ユーザー自身でソフトウェアライブラリを作成する必要があります。

はじめに

Arduinoで遊ぶ

ハードウェア

  • ステップ 1. 以下のものを準備してください:
Seeeduino V4.2Base ShieldGrove-3-Axis_Digitial_Compass_v2.0

pir

pir

pir

今すぐ購入今すぐ購入今すぐ購入
  • ステップ 2. Grove-3-Axis_Digitial_Compass_v2.0をGrove-Base ShieldのI2Cポートに接続します。
  • ステップ 3. Grove - Base ShieldをSeeeduinoに差し込みます。
  • ステップ 4. USBケーブルを使ってSeeeduinoをPCに接続します。

pir

note

Grove Base Shieldがない場合でも、以下のように直接このモジュールをSeeeduinoに接続することができます。

Seeeduino_v4Grove-3-Axis_Digitial_Compass_v2.0
5VVCC
GNDGND
SDASDA
SCLSCL

注意

USBケーブルを優しく差し込んでください。そうしないとインターフェースを損傷する可能性があります。また、内部に4本のワイヤーがあるUSBケーブルを使用してください。2本のワイヤーしかないケーブルではデータを転送できません。お持ちのケーブルが不明な場合は、
こちら
から購入できます。

ソフトウェア

ステップ 1. ライブラリをGithubからダウンロードします。

ステップ 2. ライブラリのインストール方法を参照して、Arduino用のライブラリをインストールします。

ステップ 3. 新しいArduinoスケッチを作成し、以下のコードを貼り付けるか、File->Examples->Grove_3_Axis_Compass_V2.0_BMM150-master->compassのパスから直接コードを開きます。

以下はコードです:

/**
* この例
*/

#include <Arduino.h>
#include <Wire.h>
// ライブラリ
#include "bmm150.h"
#include "bmm150_defs.h"

BMM150 bmm = BMM150();

void setup()
{
Serial.begin(9600);

if(bmm.initialize() == BMM150_E_ID_NOT_CONFORM) {
Serial.println("チップIDを読み取れません!");
while(1);
} else {
Serial.println("初期化完了!");
}

}

void loop()
{
bmm150_mag_data value;
bmm.read_mag_data();

value.x = bmm.raw_mag_data.raw_datax;
value.y = bmm.raw_mag_data.raw_datay;
value.z = bmm.raw_mag_data.raw_dataz;

float xyHeading = atan2(value.x, value.y);
float zxHeading = atan2(value.z, value.x);
float heading = xyHeading;

if(heading < 0)
heading += 2*PI;
if(heading > 2*PI)
heading -= 2*PI;
float headingDegrees = heading * 180/M_PI;
float xyHeadingDegrees = xyHeading * 180 / M_PI;
float zxHeadingDegrees = zxHeading * 180 / M_PI;

Serial.print("方位: ");
Serial.println(headingDegrees);

delay(100);
}

ステップ 4. コードをアップロードします。コードのアップロード方法がわからない場合は、コードのアップロード方法を確認してください。

ステップ 5. シリアルモニターを開いてセンサーのデータを受信します。

pir

ステップ 6. この3秒間の間に、以下の画像のようにコンパスを各軸で前後に傾けて回転させてください。

pir

キャリブレーションの時間は、関数calibrate(uint16_t timeout)のパラメータtimeoutを変更することで調整できます。

note

コンパスはキャリブレーションが必要です。そうしないと正確なデータを取得できません!必ずステップ5を実行してください。

ステップ 7. 最後に、以下の画像のような結果が表示されます。

pir

tip

方位値は0º〜360ºの範囲で、これはY軸に対応します。0ºはY軸が北を指していることを意味し、90ºはY軸が西を指していることを意味します。180ºはY軸が南を指し、270ºはY軸が東を指します。

コンパスを楽しんでください!

Raspberry Piで遊ぶ(Grove Base Hat for Raspberry Piを使用)

ハードウェア

  • ステップ 1. このプロジェクトで使用するもの:
Raspberry PiGrove Base Hat for RasPiGrove - 3-axis compass

pir

pir

pir

今すぐ購入今すぐ購入今すぐ購入
  • ステップ 2. Grove Base Hat を Raspberry に接続します。
  • ステップ 3. 3軸コンパスを Base Hat の I2C ポートに接続します。
  • ステップ 4. Raspberry Pi を USB ケーブルを介して PC に接続します。

pir

ソフトウェア

  • ステップ 1. Setting Software に従い、開発環境を構築し、grove.py を Raspberry Pi にインストールします。

  • ステップ 2. 以下のコマンドを実行してコードを動かします。

virtualenv -p python3 env
source env/bin/activate
# コマンドを入力
grove_3_axis_compass_bmm150

以下は grove_3_axis_compass_bmm150.py のコードです。

from __future__ import print_function
import time
import bmm150
import math


def main():
device = bmm150.BMM150() # バス番号はデフォルトで 1 になります
while (1):
x, y, z = device.read_mag_data()

heading_rads = math.atan2(x, y)

heading_degrees = math.degrees(heading_rads)

print("磁力計 x: {0:.2f}".format(x), end=' ')
print(" y: {0:.2f}".format(y), end=' ')
print(" z: {0:.2f}".format(z), end=' ')
print(" uT")

print('方位(軸_Y が指す方向): {0:.2f} 度'.format(heading_degrees))
time.sleep(.250)

if __name__ == '__main__':
main()
tip
すべてが正常に動作すれば、以下の結果が表示されます。

pi@raspberrypi:~/grove.py/grove $ grove_3_axis_compass_bmm150
磁力計 x: -34.12 y: 36.71 z: -21.25 uT
方位(軸_Y が指す方向): 317.10
磁力計 x: -34.49 y: 38.20 z: -16.32 uT
方位(軸_Y が指す方向): 317.92
磁力計 x: -34.12 y: 38.20 z: -9.87 uT
方位(軸_Y が指す方向): 318.23
磁力計 x: -32.64 y: 38.94 z: -5.69 uT
方位(軸_Y が指す方向): 320.03
磁力計 x: -31.52 y: 38.20 z: -2.28 uT
方位(軸_Y が指す方向): 320.47
磁力計 x: -29.67 y: 38.20 z: 0.38 uT
方位(軸_Y が指す方向): 322.16
磁力計 x: -26.33 y: 38.20 z: 4.55 uT
方位(軸_Y が指す方向): 325.42
^C終了


このプログラムを終了するには、++ctrl+c++ を押すだけです。

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

私たちの製品をお選びいただきありがとうございます!製品をご利用いただく際に、できるだけスムーズな体験を提供するために、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。

Loading Comments...