logo
Published on

Arduinoに「HMC5983」を接続し制御する

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

「HMC5983」は、3軸磁気センサーであり、地磁気を検出して角度や方向を計測するのに利用されます。この記事では、ArduinoにHMC5983を接続し、データを読み取って制御する方法について解説します。

※モジュールの価格を比較 ▶ TemuAliExpress楽天メルカリ

1. HMC5983磁気センサーの概要

HMC5983は、地磁気センサーの一種で、地磁気の変動を3つの軸(X、Y、Z)で検出することができます。これにより、地球の磁場からの角度や方向を計測することが可能です。Arduinoと組み合わせることで、様々なプロジェクトで利用できます。

2. HMC5983の接続

HMC5983は、通常、VCC、GND、SDA、SCLの4つのピンがあります。これらをArduinoに接続します。

  • VCC(赤色): 3.3Vの電源
  • GND(茶色): 接地
  • SDA(緑色): I2C通信のデータライン
  • SCL(青色): I2C通信のクロックライン

これらを対応するArduinoのピンに接続します。

3. Arduinoライブラリの導入

HMC5983をArduinoで利用するには、I2C通信を行うためのライブラリが必要です。Arduino IDEのライブラリマネージャーから「Adafruit_Sensor」と「Adafruit_HMC5883_Unified」を検索し、インストールします。

4. Arduinoコードの作成

以下は、HMC5983からデータを読み取り、シリアルモニターに表示するArduinoコードの例です。

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345); // 12345はI2Cアドレス

void setup(void) {
  Serial.begin(9600);
  if(!mag.begin()) {
    Serial.println("HMC5883 not found!");
    while(1);
  }
}

void loop(void) {
  sensors_event_t event;
  mag.getEvent(&event);

  float heading = atan2(event.magnetic.y, event.magnetic.x);
  float headingDegrees = heading * 180 / M_PI;

  Serial.println(headingDegrees);
  delay(500);
}

5. コードのアップロードと動作確認

コードを書いたら、Arduinoにアップロードして動作を確認します。シリアルモニターに磁気センサーからのデータが表示されるはずです。

これで、ArduinoにHMC5983を接続し、簡単な制御を行うための基本的な手順が完了しました。このデータを利用して、方位磁針や位置情報を含む様々なプロジェクトを構築することができます。